【PG流複製】Postgresql流複製主備切換

xysoul_雲龍發表於2019-01-27
--作業系統命令,判斷髮送程式還是接收程式
ps -ef | grep "wal" | grep -v "grep"
--資料檢視
select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
--or 備庫
select pid,status,last_msg_send_time,last_msg_receipt_time,conninfo from pg_stat_wal_receiver;
--系統函式檢視
select pg_is_in_recovery();
--資料庫控制資訊
pg_controldata | grep cluster
--檢視recovery.conf 配置檔案
--主備切換 檔案觸發方式  9.0之前的版本
--1、 配置備庫檔案,新增trigger_file引數  recovery.conf
trigger_file='/pgdata/data/.postgresql.trigger.5432'
--2、關閉主庫
pg_ctl stop -m fast
--3、建立觸發檔案,重啟備庫,觀察recovery.conf 是否變成recovery.done
touch /pgdata/data/.postgresql.trigger.5432
--4、老主庫 變成備庫
--編輯recovery.conf檔案
recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=192.168.8.25 port=5432 user=repuser'
--密碼檔案
cat .pgpass
192.168.8.25:5432:replication:repuser:re12a345
192.168.8.81:5432:replication:repuser:re12a345
chmod 0600 .pgpass
--主備切換  pg_ctl promote 方式
--1、關閉主庫 pg_ctl stop -m fash
--2、備庫執行  pg_ctl promote
--3、老主庫切換成備庫
--pg_rewind 流複製維護資料同步工具
--當備庫啟用成主庫時,如果沒有關閉老的主庫,這時老的主庫不能切換成備庫, 不需要重新備份,pg_rewind 複製變化(增量重新整理同步)
--前提條件,滿足其一即可
1、postgresql.conf 配置檔案中 wal_log_hints 引數設定成on,需重啟資料庫
2、資料庫安裝時initdb 初始化時使用了--data-checksums,發現io錯誤,開啟效能有損耗
--node2 啟用備庫
--node1 關閉備庫,使用pg_rewind 增量同步
pg_rewind --target-pgdata $PGDATA --source-server='host=192.168.8.25 posrt=5432 user=postgres dbname=postgres' -P 
--以上命令執行成功, postgres使用者密碼會寫入~/.pgpass
--修改recovery.conf 啟動新備庫
--延遲備庫 recovery.conf 新增引數,目前支援s,min,h,d,ms
recovery_min_apply_delay=1min
--同步流複製,延遲引數優先
synchronous_commit=on 
recovery_min_apply_delay=1min #優先
--remote_aply
synchronous_commit=remote_apply #主庫操作被阻塞1分鐘,備庫應用完成才返回結果
recovery_min_apply_delay=1min #優先
--同步複製優選提交,一主兩備,注意,當同步庫中有當機的,主庫會阻塞
synchronous_standby_names=db1,db2  # 備庫列表 第一個為同步備庫,第二個潛在的同步備庫
synchronous_standby_names='FIRST 2(db1,db2,db3)'  # 前兩個為同步備庫,第三個為潛在同步備庫
synchronous_standby_names='ANY 2(db1,db2,db3)'  # 任意兩個為同步備庫,其他為潛在同步備庫
--級聯複製a>b>c
--1、非同步流複製,部署備庫b,複製正常,開始部署備庫c,c執行 -h a
pg_basebackup -D /pgdata/data -Fp -Xs -v -P -h  192.168.28.74 -p 5432 -U repuser
--2、配置c recovery.conf 檔案,host b
recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=192.168.8.25 port=5432 user=repuser application_name=c'
--3、啟動c



--文盲筱燁

2019年1月27日

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2564941/,如需轉載,請註明出處,否則將追究法律責任。

相關文章