PostgreSQL 快速重建 replication
身為一個不專業管理 Server 的工程師,三不五時 slave PostgreSQL server 就會因為磁碟空間爆滿而停止 replicate,正因為經過多次的訓練,悟得 PostgreSQL 快速重建 replication 的步驟
步驟一:停下 postgresql server
service postgresql stop
步驟二:幹掉 Slave 的 data folder
千萬要注意,別幹錯 Server 把 Master 的刪掉喔
rm -rf /var/lib/{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: 10: pg_basebackup
步驟四:添加 reimagey.conf
reimagey.conf 是告訴 progresql 要作為 slave server 的檔案,可以在步驟二時先備份下來
vi /var/lib/{version}/main/reimagey.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 多久
niwi.nz : Show replication status in PostgreSQL
以上七步驟就是院長悟出最快速重建 PostgreSQL replication 的步驟
記得認同請分享、拍手、按 Like 喔!
參考資料