溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何實(shí)現(xiàn)Postgresql流復(fù)制主備切換

發(fā)布時(shí)間:2021-11-09 16:20:04 來(lái)源:億速云 閱讀:231 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇內(nèi)容主要講解“如何實(shí)現(xiàn)Postgresql流復(fù)制主備切換”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何實(shí)現(xiàn)Postgresql流復(fù)制主備切換”吧!

--操作系統(tǒng)命令,判斷發(fā)送進(jìn)程還是接收進(jìn)程
ps -ef | grep "wal" | grep -v "grep"
--數(shù)據(jù)查看
select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
--or 備庫(kù)
select pid,status,last_msg_send_time,last_msg_receipt_time,conninfo from pg_stat_wal_receiver;
--系統(tǒng)函數(shù)查看
select pg_is_in_recovery();
--數(shù)據(jù)庫(kù)控制信息
pg_controldata | grep cluster
--查看recovery.conf 配置文件
--主備切換 文件觸發(fā)方式  9.0之前的版本
--1、 配置備庫(kù)文件,添加trigger_file參數(shù)  recovery.conf
trigger_file='/pgdata/data/.postgresql.trigger.5432'
--2、關(guān)閉主庫(kù)
pg_ctl stop -m fast
--3、創(chuàng)建觸發(fā)文件,重啟備庫(kù),觀(guān)察recovery.conf 是否變成recovery.done
touch /pgdata/data/.postgresql.trigger.5432
--4、老主庫(kù) 變成備庫(kù)
--編輯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、關(guān)閉主庫(kù) pg_ctl stop -m fash
--2、備庫(kù)執(zhí)行  pg_ctl promote
--3、老主庫(kù)切換成備庫(kù)
--pg_rewind 流復(fù)制維護(hù)數(shù)據(jù)同步工具
--當(dāng)備庫(kù)激活成主庫(kù)時(shí),如果沒(méi)有關(guān)閉老的主庫(kù),這時(shí)老的主庫(kù)不能切換成備庫(kù), 不需要重新備份,pg_rewind 復(fù)制變化(增量刷新同步)
--前提條件,滿(mǎn)足其一即可
1、postgresql.conf 配置文件中 wal_log_hints 參數(shù)設(shè)置成on,需重啟數(shù)據(jù)庫(kù)
2、數(shù)據(jù)庫(kù)安裝時(shí)initdb 初始化時(shí)使用了--data-checksums,發(fā)現(xiàn)io錯(cuò)誤,開(kāi)啟性能有損耗
--node2 激活備庫(kù)
--node1 關(guān)閉備庫(kù),使用pg_rewind 增量同步
pg_rewind --target-pgdata $PGDATA --source-server='host=192.168.8.25 posrt=5432 user=postgres dbname=postgres' -P 
--以上命令執(zhí)行成功, postgres用戶(hù)密碼會(huì)寫(xiě)入~/.pgpass
--修改recovery.conf 啟動(dòng)新備庫(kù)
--延遲備庫(kù) recovery.conf 添加參數(shù),目前支持s,min,h,d,ms
recovery_min_apply_delay=1min
--同步流復(fù)制,延遲參數(shù)優(yōu)先
synchronous_commit=on 
recovery_min_apply_delay=1min #優(yōu)先
--remote_aply
synchronous_commit=remote_apply #主庫(kù)操作被阻塞1分鐘,備庫(kù)應(yīng)用完成才返回結(jié)果
recovery_min_apply_delay=1min #優(yōu)先
--同步復(fù)制優(yōu)選提交,一主兩備,注意,當(dāng)同步庫(kù)中有宕機(jī)的,主庫(kù)會(huì)阻塞
synchronous_standby_names=db1,db2  # 備庫(kù)列表 第一個(gè)為同步備庫(kù),第二個(gè)潛在的同步備庫(kù)
synchronous_standby_names='FIRST 2(db1,db2,db3)'  # 前兩個(gè)為同步備庫(kù),第三個(gè)為潛在同步備庫(kù)
synchronous_standby_names='ANY 2(db1,db2,db3)'  # 任意兩個(gè)為同步備庫(kù),其他為潛在同步備庫(kù)
--級(jí)聯(lián)復(fù)制a>b>c
--1、異步流復(fù)制,部署備庫(kù)b,復(fù)制正常,開(kāi)始部署備庫(kù)c,c執(zhí)行 -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、啟動(dòng)c

到此,相信大家對(duì)“如何實(shí)現(xiàn)Postgresql流復(fù)制主備切換”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI