postgresql灾备切换
演示pg_rewind的使用方法。
主庫在10.0.3.101上,備庫在10.0.3.102上。
這時(shí)主庫出問題了,如機(jī)器宕機(jī)了(我們用強(qiáng)制關(guān)機(jī)來模擬),我
們現(xiàn)在激活備庫,即在10.0.3.102上執(zhí)行如下命令:
[postgres@pg02 ~]$ pg_ctl promote
server promoting
現(xiàn)在10.0.3.102庫變成了主庫。
然后把原主庫開機(jī),即在10.0.3.101上執(zhí)行pg_rewind命令:
[postgres@pg01 ~]$ pg_rewind -D $PGDATA --source-server='host=10.0.3.102 user=postgres password=postgres'
pg_rewind: fatal: target server must be shut down cleanly
我們發(fā)現(xiàn)pg_rewind報(bào)錯(cuò),這時(shí)就需要把這個(gè)庫啟動(dòng)一下,然后再
正常關(guān)閉。
[postgres@pg01 ~]$ pg_ctl start
pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....
done
server started
[postgres@pg01 ~]$ pg_ctl stop
waiting for server to shut down.... done
server stopped
然后再執(zhí)行pg_rewind:
[postgres@pg01 ~]$ pg_rewind -D $PGDATA --source-server='host=10.0.3.102 user=postgres password=postgres'
pg_rewind: servers diverged at WAL location 0/18DCD08 on timeline 1
pg_rewind: rewinding from last common checkpoint at 0/18C1DE0 on timeline 1
pg_rewind: Done!
注意,上面的“-D”參數(shù)指向本地的目錄。
pg_rewind執(zhí)行完之后,需要手動(dòng)建文件“standby.signal”:
touch $PGDATA/standby.signal
并在postgresql.conf中添加如下內(nèi)容:
primary_conninfo = 'user=postgres password=XXXXXX host=10.0.3.102 port=5432 sslmode=prefer sslcompression=0'
這樣原主庫才能變成新主庫的備庫。
如果是PostgreSQL 12版本之前的數(shù)據(jù)庫,需要手動(dòng)創(chuàng)建
recovery.conf文件,內(nèi)容如下:
standby_mode = 'on'
recovery_target_timeline = 'latest'
primary_conninfo = 'user=osdba password=XXXXXX host=10.0.3.102 port=5432 sslmode=disable sslcompression=1'
注意,上面的命令中比之前多了一
行“recovery_target_timeline='latest'”,這時(shí)因?yàn)樾轮鲙斓臅r(shí)間線與原主庫
的不一樣了,加上這一行命令才能讓原主庫切換到新主庫的時(shí)間線上。
這時(shí)再在10.0.3.101上啟動(dòng)數(shù)據(jù)庫,原主庫就變成了新主庫的備
庫:
[postgres@pg01 ~]$ pg_ctl start
waiting for server to start....
done
server started
注意上面的操作,一定要先建好standby.signal(或是
recovery.conf),再啟動(dòng)數(shù)據(jù)庫,否則啟動(dòng)了數(shù)據(jù)庫就會(huì)進(jìn)入主庫模
式。如果這樣做了,需要把數(shù)據(jù)庫停下來,重新運(yùn)行pg_rewind命令。
總結(jié)
以上是生活随笔為你收集整理的postgresql灾备切换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一次性查找并统一替换多个 Excel 中
- 下一篇: (一)Cadence 使用技巧 (持续更