# 快速重建 Replication
身為一個不專業管理 Server 的工程師,三不五時 slave PostgreSQL server 就會因為磁碟空間爆滿而停止 replicate,正因為經過多次的訓練,悟得 PostgreSQL 快速重建 replication 的步驟
# 步驟一:停下 postgresql server
service postgresql stop
# 步驟二:幹掉 Slave 的 data folder
DANGER
千萬要注意,別幹錯 Server 把 Master 的刪掉喔
rm -rf /var/lib/postgresql/{version}/main
# 步驟三:用 pg_basebackup 拉 data folder
用 pg_basebackup 直接從 Master 把 data folder 抓下來
pg_basebackup -h {host} -U {user} -D /var/lib/postgresql/{version}/main --progress --verbose -c fast -Fp -Xs -v -P
其他參數可參考官方說明 PostgreSQL: Documentation: 11: pg_basebackup (opens new window)
# 步驟四:添加 recovery.conf
recovery.conf
是告訴 progresql 要作為 slave server 的檔案,可以在步驟二時先備份下來
vi /var/lib/{version}/main/recovery.conf
# 步驟五:確認權限為 postgres
如果跟院長一樣,是使用 root 去抓 master 資料,要記得把權限改為 postgres
chown -R postgres:postgres main
# 步驟六:重新啟動 postgresql
service postgresql start
# 步驟七:檢查 slave 是否有恢復 replicate
在 master server 執行這條 SQL
SELECT client_addr, state, sent_location, write_location, flush_location, replay_location
FROM pg_stat_replication;
有看到 client_addr
就表示剛剛重建的 replication 有成功接上 master
在 slave server 執行這條 SQL
SELECT now() - pg_last_xact_replay_timestamp() AS replication_delay;
可以看 slave 與 master 之間 delay 多久
以上七步驟就是院長悟出最快速重建 PostgreSQL replication 的步驟
# 參考資料
LikeCoin
贊助商連結
贊助商連結