add backup postgresql with pgbarman via ssh/rsync
This commit is contained in:
715
public/post/pgbarman-in-ubuntu-1804-postgresql-10/index.html
Normal file
715
public/post/pgbarman-in-ubuntu-1804-postgresql-10/index.html
Normal file
@@ -0,0 +1,715 @@
|
||||
<!doctype html>
|
||||
<html class="no-js" lang="tw">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="author" content="Eric Chang">
|
||||
<meta name="description" content="What’s the Worst That Could Happen?">
|
||||
<meta name="keywords" content="linux,blog,responsive,search,font awesome,pages,posts,multilingual,highlight.js,syntax highlighting,premium,shortcuts">
|
||||
<meta content="pgbarman, postgresql" name="keywords">
|
||||
<meta name="generator" content="Hugo 0.50" />
|
||||
<title> [筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04 | MCの飄狂山莊㊣</title>
|
||||
<meta name="description" content="[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04 - What’s the Worst That Could Happen?">
|
||||
<meta itemprop="name" content="[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04">
|
||||
<meta itemprop="description" content="[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04 - What’s the Worst That Could Happen?">
|
||||
<meta property="og:title" content="[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04">
|
||||
<meta property="og:description" content="[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04 - What’s the Worst That Could Happen?">
|
||||
<meta property="og:image" content="https://h.cowbay.org/images/post-default-4.jpg">
|
||||
<meta property="og:url" content="https://h.cowbay.org/post/pgbarman-in-ubuntu-1804-postgresql-10/">
|
||||
<meta property="og:site_name" content="MCの飄狂山莊㊣">
|
||||
<meta property="og:type" content="article">
|
||||
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-16x16.png" sizes="16x16">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://h.cowbay.org/sass/combined.min.a89dfa577f701bffe9659f476ef61241cb2a3452b913e793463b0074a10c0a59.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
|
||||
</head>
|
||||
<body class="bilberry-hugo-theme">
|
||||
|
||||
<nav class="permanentTopNav">
|
||||
|
||||
<div class="container">
|
||||
<ul class="topnav">
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="search-box" class="search">
|
||||
<i class="fa fa-search"></i>
|
||||
<input id="search" type="text" placeholder="">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<header>
|
||||
<div class="container">
|
||||
<div class="logo">
|
||||
<a href="/" class="logo">
|
||||
|
||||
<img src="https://www.gravatar.com/avatar/e4eb1f8e016ffb73e9889f87d16e15f0?d=mm&size=200" alt="">
|
||||
|
||||
|
||||
<span class="overlay"><i class="fa fa-home"></i></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="titles">
|
||||
<h3 class="title"><a href="/">MCの飄狂山莊㊣</a></h3>
|
||||
|
||||
<span class="subtitle">What’s the Worst That Could Happen?</span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="toggler permanentTopNav">
|
||||
|
||||
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
<div class="main container">
|
||||
|
||||
|
||||
<div class="article-wrapper u-cf single">
|
||||
|
||||
<a class="bubble" href="/post/pgbarman-in-ubuntu-1804-postgresql-10/">
|
||||
<i class="fa fa-fw fa-pencil"></i>
|
||||
</a>
|
||||
|
||||
<article class="default article">
|
||||
|
||||
<div class="featured-image">
|
||||
<a href="/post/pgbarman-in-ubuntu-1804-postgresql-10/">
|
||||
<img src="/images/post-default-4.jpg" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="content">
|
||||
<h3><a href="/post/pgbarman-in-ubuntu-1804-postgresql-10/">[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04</a></h3>
|
||||
<div class="meta">
|
||||
|
||||
|
||||
<span class="date moment">2019-08-23</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="categories">
|
||||
|
||||
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
|
||||
|
||||
</span>
|
||||
|
||||
|
||||
|
||||
<span class="author"><a href="/author/eric-chang">Eric Chang</a></span>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<p>很久以前就有看到這個用來備份postgresql 的 pgbarman</p>
|
||||
|
||||
<p><a href="https://www.pgbarman.org/">https://www.pgbarman.org/</a></p>
|
||||
|
||||
<p>前幾天老闆在slack 上面又提到,所以這次就花了點時間來玩玩看</p>
|
||||
|
||||
<p>不過呢,雖然有弄起來,但是還真不知道有些問題是怎麼解決的…</p>
|
||||
|
||||
<p></p>
|
||||
|
||||
<p>pgbarman 的備份有分兩種</p>
|
||||
|
||||
<p>streaming && rsync/SSH</p>
|
||||
|
||||
<p>原理就不說了,我一直沒搞懂 postgresql 的 streaming ..</p>
|
||||
|
||||
<p>依照官方網站上的說法,比較推薦 streaming 備份的方式</p>
|
||||
|
||||
<p>原因是,設定相對簡單,WTF !</p>
|
||||
|
||||
<pre><code>On a general basis, starting from Barman 2.0, backup over streaming replication is the recommended setup for PostgreSQL 9.4 or higher
|
||||
The reason why we recommend streaming backup is that, based on our experience, it is easier to setup than the traditional one
|
||||
</code></pre>
|
||||
|
||||
<p>事實上呢,設定的確是很簡單,可是有個致命的缺點</p>
|
||||
|
||||
<pre><code>Because Barman transparently makes use of pg_basebackup, features such as incremental backup, parallel backup, deduplication, and network compression are currently not available. In this case, bandwidth limitation has some restrictions - compared to the traditional method via rsync.
|
||||
</code></pre>
|
||||
|
||||
<p>如果要做差異/增量備份, streaming backup 不能做</p>
|
||||
|
||||
<p>所以每次備份都是完整備份,也因此,barman server 需要準備很大的硬碟空間</p>
|
||||
|
||||
<p>以我測試的資料庫來說,一次備份,目前是133G ,如果一天四次,保留七天</p>
|
||||
|
||||
<p>就需要 133 x 4 x 7 = 3724G</p>
|
||||
|
||||
<p>咦,這樣看起來,其實也還好啦 XDD</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<p>現在開始設定的部份</p>
|
||||
|
||||
<h4 id="設定-postgresql-server">設定 postgresql server</h4>
|
||||
|
||||
<p>IP: 192.168.11.19
|
||||
hostname: hqs019</p>
|
||||
|
||||
<h5 id="在postgresql-建立相關帳號">在postgresql 建立相關帳號</h5>
|
||||
|
||||
<p>streaming backup 需要先在postgresql Server 上建立一個具有 superuser 權限的帳號</p>
|
||||
|
||||
<p>以及一個用來做replication 的資料庫帳號</p>
|
||||
|
||||
<p>這裡就簡單帶過</p>
|
||||
|
||||
<pre><code>sudo su - postgres
|
||||
psql
|
||||
|
||||
create user barman with login superuser login password 'barmanpassword';
|
||||
CREATE ROLE stream_barman WITH REPLICATION PASSWORD 'password' LOGIN;
|
||||
</code></pre>
|
||||
|
||||
<h5 id="鄉改-pg-hba-conf">鄉改 pg_hba.conf</h5>
|
||||
|
||||
<p>然後修改 pg_hba.conf,加入底下兩行</p>
|
||||
|
||||
<pre><code># for barman test
|
||||
host database_name barman 192.168.11.192/32 md5
|
||||
host replication stream_barman 192.168.11.192/32 md5
|
||||
</code></pre>
|
||||
|
||||
<p>當然,如果不考慮安全性問題, md5 直接改成用 trust ,可以省去一些麻煩。</p>
|
||||
|
||||
<h5 id="修改-postgresql-conf">修改 postgresql.conf</h5>
|
||||
|
||||
<p>接著修改postgresql.conf</p>
|
||||
|
||||
<pre><code>### for barman test
|
||||
max_wal_senders = 5
|
||||
max_replication_slots = 3
|
||||
wal_level = 'archive'
|
||||
archive_mode = on
|
||||
</code></pre>
|
||||
|
||||
<p>重起 postgresql service</p>
|
||||
|
||||
<h4 id="設定barman-server">設定barman server</h4>
|
||||
|
||||
<p>IP: 192.168.11.192
|
||||
hostname: barman</p>
|
||||
|
||||
<h5 id="安裝-barman">安裝 barman</h5>
|
||||
|
||||
<p>barman 在18.04 中,已經被放到標準repository 中</p>
|
||||
|
||||
<p>所以只要直接</p>
|
||||
|
||||
<pre><code>sudo apt install barman
|
||||
</code></pre>
|
||||
|
||||
<p>就可以了</p>
|
||||
|
||||
<h5 id="設定-barman-conf">設定 barman.conf</h5>
|
||||
|
||||
<p>安裝完成後,在/etc/barman.d/ 底下會有兩個範例檔案</p>
|
||||
|
||||
<pre><code>streaming-server.conf-template
|
||||
ssh-server.conf-template
|
||||
</code></pre>
|
||||
|
||||
<p>複製 streaming-server 檔案</p>
|
||||
|
||||
<pre><code>sudo cp /etc/barman.d/streaming-server.conf-template /etc/barman.d/hqs019.conf
|
||||
</code></pre>
|
||||
|
||||
<p>內容如下</p>
|
||||
|
||||
<pre><code>[hqs019]
|
||||
description = "hqs019 "
|
||||
conninfo = host=192.168.11.19 user=barman dbname=database_name password=barmanpassword
|
||||
streaming_conninfo = host=192.168.11.19 user=stream_barman dbname=database_name password=password
|
||||
backup_method = postgres
|
||||
retention_policy_mode = auto
|
||||
streaming_archiver = on
|
||||
slot_name = barman
|
||||
</code></pre>
|
||||
|
||||
<p>接著修改 /etc/barman.conf</p>
|
||||
|
||||
<pre><code>[barman]
|
||||
barman_user = barman
|
||||
configuration_files_directory = /etc/barman.d
|
||||
barman_home = /var/lib/barman
|
||||
log_file = /var/log/barman/barman.log
|
||||
log_level = DEBUG
|
||||
compression = gzip
|
||||
immediate_checkpoint = true
|
||||
basebackup_retry_times = 3
|
||||
basebackup_retry_sleep = 30
|
||||
last_backup_maximum_age = 1 DAYS
|
||||
</code></pre>
|
||||
|
||||
<p>基本上這樣就設定完成了</p>
|
||||
|
||||
<h5 id="檢查設定">檢查設定</h5>
|
||||
|
||||
<p>barman 有一些指令可以用來檢查目前的設定</p>
|
||||
|
||||
<p>barman show-server hqs019 可以看到所有的設定,這裡的 hqs019 跟 barman.d/hqs019.conf 裡面用”[ ]” 包起來的名稱要一致</p>
|
||||
|
||||
<pre><code>barman@barman:~$ barman show-server hqs019
|
||||
Server hqs019:
|
||||
active: True
|
||||
archiver: False
|
||||
archiver_batch_size: 0
|
||||
backup_directory: /var/lib/barman/hqs019
|
||||
backup_method: postgres
|
||||
backup_options: BackupOptions(['concurrent_backup'])
|
||||
bandwidth_limit: None
|
||||
barman_home: /var/lib/barman
|
||||
barman_lock_directory: /var/lib/barman
|
||||
basebackup_retry_sleep: 30
|
||||
basebackup_retry_times: 3
|
||||
basebackups_directory: /var/lib/barman/hqs019/base
|
||||
check_timeout: 30
|
||||
compression: gzip
|
||||
config_file: /etc/postgresql/10/main/postgresql.conf
|
||||
connection_error: None
|
||||
conninfo: host=192.168.11.19 user=barman dbname=database_name password=barmanpassword
|
||||
current_size: 142740768562
|
||||
current_xlog: 0000000100000264000000BA
|
||||
custom_compression_filter: None
|
||||
custom_decompression_filter: None
|
||||
data_directory: /database
|
||||
description: hqs019
|
||||
disabled: False
|
||||
errors_directory: /var/lib/barman/hqs019/errors
|
||||
hba_file: /etc/postgresql/10/main/pg_hba.conf
|
||||
ident_file: /etc/postgresql/10/main/pg_ident.conf
|
||||
immediate_checkpoint: True
|
||||
incoming_wals_directory: /var/lib/barman/hqs019/incoming
|
||||
is_in_recovery: False
|
||||
is_superuser: True
|
||||
last_backup_maximum_age: 1 day (WARNING! latest backup is No available backups old)
|
||||
max_incoming_wals_queue: None
|
||||
minimum_redundancy: 0
|
||||
msg_list: []
|
||||
name: hqs019
|
||||
network_compression: False
|
||||
parallel_jobs: 1
|
||||
path_prefix: None
|
||||
pg_basebackup_bwlimit: True
|
||||
pg_basebackup_compatible: True
|
||||
pg_basebackup_installed: True
|
||||
pg_basebackup_path: /usr/bin/pg_basebackup
|
||||
pg_basebackup_tbls_mapping: True
|
||||
pg_basebackup_version: 10.10-0ubuntu0.18.04.1)
|
||||
pg_receivexlog_compatible: True
|
||||
pg_receivexlog_installed: True
|
||||
pg_receivexlog_path: /usr/bin/pg_receivewal
|
||||
pg_receivexlog_supports_slots: True
|
||||
pg_receivexlog_synchronous: False
|
||||
pg_receivexlog_version: 10.10-0ubuntu0.18.04.1)
|
||||
pgespresso_installed: False
|
||||
post_archive_retry_script: None
|
||||
post_archive_script: None
|
||||
post_backup_retry_script: None
|
||||
post_backup_script: None
|
||||
pre_archive_retry_script: None
|
||||
pre_archive_script: None
|
||||
pre_backup_retry_script: None
|
||||
pre_backup_script: None
|
||||
recovery_options: RecoveryOptions([])
|
||||
replication_slot: Record(slot_name='barman', active=True, restart_lsn='264/BA000000')
|
||||
replication_slot_support: True
|
||||
retention_policy: None
|
||||
retention_policy_mode: auto
|
||||
reuse_backup: None
|
||||
server_txt_version: 10.10
|
||||
slot_name: barman
|
||||
ssh_command: None
|
||||
streaming: True
|
||||
streaming_archiver: True
|
||||
streaming_archiver_batch_size: 0
|
||||
streaming_archiver_name: barman_receive_wal
|
||||
streaming_backup_name: barman_streaming_backup
|
||||
streaming_conninfo: host=192.168.11.19 user=stream_barman dbname=database_name password=password
|
||||
streaming_supported: True
|
||||
streaming_wals_directory: /var/lib/barman/hqs019/streaming
|
||||
synchronous_standby_names: ['']
|
||||
systemid: 6688476041000599317
|
||||
tablespace_bandwidth_limit: None
|
||||
timeline: 1
|
||||
wal_level: replica
|
||||
wal_retention_policy: main
|
||||
wals_directory: /var/lib/barman/hqs019/wals
|
||||
xlogpos: 264/BA000F08
|
||||
</code></pre>
|
||||
|
||||
<p>然後用 barman check hqs019 來檢查config 有沒有問題</p>
|
||||
|
||||
<pre><code>barman@barman:~$ barman check hqs019
|
||||
Server hqs019:
|
||||
PostgreSQL: OK
|
||||
is_superuser: OK
|
||||
PostgreSQL streaming: OK
|
||||
wal_level: OK
|
||||
replication slot: OK
|
||||
directories: OK
|
||||
retention policy settings: OK
|
||||
backup maximum age: FAILED (interval provided: 1 day, latest backup age: No available backups)
|
||||
compression settings: OK
|
||||
failed backups: OK (there are 0 failed backups)
|
||||
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
|
||||
pg_basebackup: OK
|
||||
pg_basebackup compatible: OK
|
||||
pg_basebackup supports tablespaces mapping: OK
|
||||
pg_receivexlog: OK
|
||||
pg_receivexlog compatible: OK
|
||||
receive-wal running: OK
|
||||
archiver errors: OK
|
||||
barman@barman:~$
|
||||
</code></pre>
|
||||
|
||||
<p>那個backup maximum age FAILED 不用管他,因為都還沒跑過備份,這邊錯誤是正常的</p>
|
||||
|
||||
<p>其他都OK 的話,就可以開始備份了</p>
|
||||
|
||||
<p>barman backup hqs019</p>
|
||||
|
||||
<pre><code>barman@ubuntu:~$ barman backup hqs019
|
||||
Starting backup using postgres method for server hqs019 in /var/lib/barman/hqs019/base/20190823T082258
|
||||
Backup start at LSN: 264/A10001A8 (0000000100000264000000A1, 000001A8)
|
||||
Starting backup copy via pg_basebackup for 20190823T082258
|
||||
WARNING: pg_basebackup does not copy the PostgreSQL configuration files that reside outside PGDATA. Please manually backup the following files:
|
||||
/etc/postgresql/10/main/postgresql.conf
|
||||
/etc/postgresql/10/main/pg_hba.conf
|
||||
/etc/postgresql/10/main/pg_ident.conf
|
||||
|
||||
Copy done (time: 1 hour, 6 minutes, 28 seconds)
|
||||
Finalising the backup.
|
||||
Backup size: 133.0 GiB
|
||||
Backup end at LSN: 264/A3000060 (0000000100000264000000A3, 00000060)
|
||||
Backup completed (start time: 2019-08-23 08:22:58.116372, elapsed time: 1 hour, 6 minutes, 28 seconds)
|
||||
Processing xlog segments from streaming for hqs019
|
||||
0000000100000264000000A2
|
||||
|
||||
barman@ubuntu:~$
|
||||
</code></pre>
|
||||
|
||||
<p>跑完可以用 barman list-backup hqs019 檢查</p>
|
||||
|
||||
<pre><code>barman@ubuntu:~$ barman list-backup hqs019
|
||||
hqs019 20190823T082258 - Thu Aug 22 17:29:26 2019 - Size: 133.0 GiB - WAL Size: 0 B (tablespaces: tablespace_a:/var/lib/postgresql/10/main/tablespace_A, tablespace_b:/var/lib/postgresql/10/main/tablespace_B)
|
||||
</code></pre>
|
||||
|
||||
<p>要刪除的話,要加入 backupID</p>
|
||||
|
||||
<pre><code>barman@ubuntu:~$ barman delete hqs019 20190822T171355
|
||||
Deleting backup 20190822T171355 for server hqs019
|
||||
Delete associated WAL segments:
|
||||
00000001000002640000009F
|
||||
0000000100000264000000A0
|
||||
0000000100000264000000A1
|
||||
Deleted backup 20190822T171355 (start time: Fri Aug 23 09:36:43 2019, elapsed time: 3 seconds)
|
||||
|
||||
</code></pre>
|
||||
|
||||
<p>restore 的部份,暫時沒有測試,我想應該是要找時間測試看看怎麼還原才對</p>
|
||||
|
||||
<p>不過呢,前面有提到,用streaming backup ,每一次備份都是完整備份,非常的佔用空間、時間、頻寬</p>
|
||||
|
||||
<p>所以還是要來試試看用rsync/SSH 備份的機制</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer">
|
||||
|
||||
|
||||
|
||||
<div class="tags">
|
||||
<i class="fa fa-tags"></i>
|
||||
<div class="links">
|
||||
|
||||
<a href="/tags/postgresql">postgresql</a>
|
||||
|
||||
<a href="/tags/pgbarman">pgbarman</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="application/javascript">
|
||||
var disqus_config = function () {
|
||||
|
||||
|
||||
|
||||
};
|
||||
(function() {
|
||||
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
|
||||
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
|
||||
return;
|
||||
}
|
||||
var d = document, s = d.createElement('script'); s.async = true;
|
||||
s.src = '//' + "h-cowbay-org-1" + '.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
|
||||
|
||||
<div class="recent-posts">
|
||||
<strong></strong>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<a href="/post/pgbarman-in-ubuntu-1804-postgresql-10-via-ssh/">[筆記] 在Ubuntu 18.04 下 透過 pgbarman rsync/ssh backup 備份 postgresql 10 / backup postgresql 10 with pgbarman via ssh/rsync in ubuntu 18.04</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/pgbarman-in-ubuntu-1804-postgresql-10/">[筆記] 在Ubuntu 18.04 下 透過 pgbarman streaming backup 備份 postgresql 10/ backup postgresql 10 with pgbarman straming backup in ubuntu 18.04</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/install-nvidia-driver-cuda-pgstrom-in-ubuntu-1804/">[筆記] 在ubuntu 18.04 下安裝nvidia 顯示卡驅動程式以及 pgstrom / Install Nvidia Driver Cuda Pgstrom in Ubuntu 1804</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/do-no-use-10-0-0-0-private-ipaddr-in-gcp/">[筆記] 在gcp 中用wireguard建立VPN時,不要用 10.0.0.0/16 網段/Do No Use 10 0 0 0 Private Ipaddr in GCP</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/multiple-site-to-site-vpn-using-wireguard/">[筆記] 透過 wireguard 建立多點 site to site VPN / Multiple Site to Site VPN Using Wireguard</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/site-to-site-vpn-using-wireguard-in-two-edgerouters/">[筆記] 在edgerouter上用wireguard 建立site to site VPN / Site to Site Vpn Using Wireguard in Two Edgerouters</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/post/another-way-to-keep-ansible-log/">[筆記] 為了保存log 用script 指令執行ansible / Another Way to Keep Ansible Log using script command</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="categories">
|
||||
<a href="/categories/"><strong></strong></a>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<a href="/categories/%E7%AD%86%E8%A8%98">筆記 (27)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/ansible">Ansible (3)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/linux">Linux (1)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/proxmox">Proxmox (1)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/ps">Ps (1)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/%E7%A2%8E%E5%BF%B5">碎念 (1)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/categories/%E7%BE%A4%E6%9A%89">群暉 (1)</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="right">
|
||||
|
||||
<div class="external-profiles">
|
||||
<strong></strong>
|
||||
|
||||
|
||||
<a href="https://www.facebook.com/mariahchang" target="_blank"><i class="fa fa-facebook-adblock-proof"></i></a>
|
||||
|
||||
|
||||
<a href="https://twitter.com/changchichung" target="_blank"><i class="fa fa-twitter-adblock-proof"></i></a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="https://github.com/changchichung" target="_blank"><i class="fa fa-github"></i></a>
|
||||
|
||||
|
||||
|
||||
<a href="https://www.yapee.tw/mvc/onlinePay/webLink?key=lMC74kucH21JChCR77-wJ80ZZ-Poh11amP24BwiDdHw" target="_blank"><img border="0" src="https://www.yapee.tw/mvc/file/publicFile?pathType=data/linkLogo/B0S0F0002585.jpg"></img></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
<div class="credits">
|
||||
<div class="container">
|
||||
<div class="copyright">
|
||||
<a href="https://github.com/Lednerb" target="_blank">
|
||||
©
|
||||
|
||||
2017
|
||||
|
||||
by Lednerb
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="author">
|
||||
<a href="https://www.yapee.tw/mvc/onlinePay/webLink?key=lMC74kucH21JChCR77-wJ80ZZ-Poh11amP24BwiDdHw" target="_blank">Bilberry Hugo Theme</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script type="application/javascript">
|
||||
var doNotTrack = false;
|
||||
if (!doNotTrack) {
|
||||
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
|
||||
ga('create', 'UA-138954876-1', 'auto');
|
||||
|
||||
ga('send', 'pageview');
|
||||
}
|
||||
</script>
|
||||
<script async src='https://www.google-analytics.com/analytics.js'></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://h.cowbay.org/js/externalDependencies.39c47e10e241eae2947b3fe21809c572.js" integrity="md5-OcR+EOJB6uKUez/iGAnFcg=="></script>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="https://h.cowbay.org/js/theme.ff50ae6dc1bfc220b23bf69dbb41b54e.js" integrity="md5-/1CubcG/wiCyO/adu0G1Tg=="></script>
|
||||
|
||||
<script>
|
||||
$(".moment").each(function() {
|
||||
$(this).text(
|
||||
moment( $(this).text() )
|
||||
.locale( "tw" )
|
||||
.format('LL')
|
||||
);
|
||||
});
|
||||
|
||||
$(".footnote-return sup").html("");
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var client = algoliasearch("2XL0P8XDCY", "4ef65b37b627bb886b46c34a10e63aa6");
|
||||
var index = client.initIndex("h_cowbay_org");
|
||||
|
||||
$('#search').autocomplete({ hint: false, autoselect: true, debug: false },
|
||||
[
|
||||
{
|
||||
|
||||
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 10 }),
|
||||
|
||||
displayKey: function(suggestion) {
|
||||
return suggestion.title || suggestion.author
|
||||
},
|
||||
templates: {
|
||||
suggestion: function(suggestion) {
|
||||
return "<span class='entry " + suggestion.type + "'>"
|
||||
+ "<span class='title'>" + suggestion.title + "</span>"
|
||||
+ "<span class='fa fa-fw " + suggestion.iconClass + "'></span>"
|
||||
+ "</span>"
|
||||
;
|
||||
},
|
||||
empty: function() {
|
||||
return "<span class='empty'></span>"
|
||||
},
|
||||
footer: function() {
|
||||
return '<div class="branding">Powered by <img src="https:\/\/h.cowbay.org\/dist\/algolia-logo-light.svg" /></div>'
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
])
|
||||
.on('autocomplete:selected', function(event, suggestion, dataset) {
|
||||
window.location = (suggestion.url);
|
||||
})
|
||||
.keypress(function (event, suggestion) {
|
||||
if (event.which == 13) {
|
||||
window.location = (suggestion.url);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user