postgresql 同步流復制以及主備切換

同步流復制
搭建參考
master: 172.17.0.3
standby01:172.17.0.8
standby02:172.17.0.9

docker stop pg_hot_standby02
docker stop pg_hot_standby01
docker stop pg_hot_master

docker rm -f pg_hot_master

主庫 172.17.0.3

docker run -itd --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -p 50000:5432 --name pg_hot_master centos_pg /usr/sbin/init

docker exec -it pg_hot_master /bin/bash

cd /var/lib/pgsql/9.6/data/

create user repli replication password '123456';

在主庫上修改pg_hba.conf:
host replication repli 0.0.0.0/0 md5

修改postgresql.conf :
max_wal_senders = 10
wal_level = hot_standby
wal_keep_segments = 32
hot_standby = on
synchronous_standby_names ='standby01,standby02'

不設(shè)置hot_standby = on 不能訪問,錯誤如下:
[postgre@pg-2 postgresql-9.4.4]$ psql postgres
psql: FATAL: the database system is starting up
synchronous_standby_names設(shè)置的'standby01,standby02'就是在Standby數(shù)據(jù)庫中配置連接參數(shù)“application_name”莽红。

/usr/pgsql-9.6/bin/pg_ctl restart -- 重新配置主庫

備庫 172.17.0.8 172.17.0.9

docker run -itd --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -p 50001:5432 --name pg_hot_standby01 centos_pg /usr/sbin/init
docker exec -it pg_hot_standby01 /bin/bash

docker run -itd --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -p 50002:5432 --name pg_hot_standby02 centos_pg /usr/sbin/init
docker exec -it pg_hot_standby02 /bin/bash

在每一備庫做如下處理:

cd /var/lib/pgsql/9.6/data/
rm -rf /var/lib/pgsql/9.6/data/ -- 清空data文件夾
su - postgres
pg_basebackup -h 172.17.0.3 -U repli -F p -P -x -R -D /var/lib/pgsql/9.6/data -l backup20180321 --從主庫做基礎(chǔ)備份,數(shù)據(jù)文件和配置文件都將復制到備庫

對于備庫 IP是主庫的ip
修改recovery.conf:
standby_mode = 'on'
primary_conninfo = 'user=repli password=123456 host=172.17.0.3 port=5432 sslmode=disable sslcompression=1 application_name=standby02'
trigger_file ='/var/lib/pgsql/9.6/data/trigger.1921'
recovery_target_timeline = 'latest'

/usr/pgsql-9.6/bin/pg_ctl start -- 啟動備庫

系統(tǒng)信息

select * from pg_stat_replication;
select pg_is_in_recovery();--主庫是false 備庫是true

總結(jié):只要一個備庫正常工作,主庫以及備庫同步,當壞的備庫修復后超埋,遺失的數(shù)據(jù)可以自動補充记舆。
當兩個備庫都不能正常工作, 主庫語句會等待蜻展,長時間不結(jié)束

當主庫停止工作后魁亦, 備庫不會自動切換為主庫渔隶,備庫可以查詢,但是不可以寫數(shù)據(jù)吉挣,錯誤如下:
ERROR: cannot execute INSERT in a read-only transaction

主備切換

主備切換

如何區(qū)別主庫和備庫

  1. ps -ef | grep wal
    wal 日志發(fā)送進程"wal sender process"派撕,說明是主庫婉弹。
    wal 日志接收進程"wal receiver process" 睬魂,說明是備庫;

  2. 安裝pg_controldata 查看輸出
    pg_controldata 輸出數(shù)據(jù)庫服務的當前狀態(tài)镀赌,可以根據(jù) "Database cluster state: " 的信息來判斷,
    如果值為 "in production" 說明是主庫氯哮,如果值為 "in archive recovery" 說明是備庫。

[postgres@pg1 pg_root]$ pg_controldata
pg_control version number: 903
Catalog version number: 201105231
Database system identifier: 5640897481082175487
Database cluster state: in production
...

  1. select pg_is_in_recovery();--主庫是false 備庫是true

recovery.conf 修改配置

standby_mode = '' --標記PG為STANDBY SERVER
primary_conninfo = '' --標識主庫信息
trigger_file = '' --標識觸發(fā)器文件

備庫發(fā)現(xiàn)存在trigger_file文件時商佛,就會備庫激活為主庫喉钢。
創(chuàng)建這個 trigger 文件即可。 例如 "touch /opt/pgdata/pg_root/postgresql.trigger.1921 "

修改standby 為主庫 配置recovery.conf

  1. 關(guān)閉主庫 /usr/pgsql-9.6/bin/pg_ctl stop

  2. 在備1執(zhí)行:touch /var/lib/pgsql/9.6/data/trigger.1921
    發(fā)現(xiàn) recovery.conf 文件變成 recovery.done 良姆,說明備庫1成為主庫肠虽。

  3. 在主庫創(chuàng)建 recovery.conf ,修改備庫2的 recovery.conf的ip字段 重新啟動數(shù)據(jù)庫

查看所有容器的ip

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

cat /usr/pgsql-9.6/share/recovery.conf.sample

standby.PNG
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玛追,一起剝皮案震驚了整個濱河市税课,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痊剖,老刑警劉巖韩玩,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陆馁,居然都是意外死亡找颓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門叮贩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來击狮,“玉大人,你說我怎么就攤上這事益老”肱睿” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵杨箭,是天一觀的道長寞焙。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么捣郊? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任辽狈,我火速辦了婚禮,結(jié)果婚禮上呛牲,老公的妹妹穿的比我還像新娘刮萌。我一直安慰自己,他們只是感情好娘扩,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布着茸。 她就那樣靜靜地躺著,像睡著了一般琐旁。 火紅的嫁衣襯著肌膚如雪涮阔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天灰殴,我揣著相機與錄音敬特,去河邊找鬼。 笑死牺陶,一個胖子當著我的面吹牛伟阔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掰伸,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼皱炉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狮鸭?” 一聲冷哼從身側(cè)響起合搅,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怕篷,沒想到半個月后历筝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡廊谓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年梳猪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒸痹。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡春弥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叠荠,到底是詐尸還是另有隱情匿沛,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布榛鼎,位于F島的核電站逃呼,受9級特大地震影響鳖孤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抡笼,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一苏揣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧推姻,春花似錦平匈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拧晕,卻和暖如春隙姿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背防症。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工孟辑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哎甲,地道東北人蔫敲。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像炭玫,于是被迫代替她去往敵國和親奈嘿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容