- 從 12版本開始,不再有recovery.conf文件,recovery.conf配置的內容全部併入到postgesql.conf中。
- 新增了兩個文件recovery.signal和standby.signal,分別代表處於recovery模式還是standby模式,如果兩個文件都配置了,優先爲standby模式,配置語法很簡單,直接新建touch recovery.signal或者touch standby.signal即可
- trigger_file參數更名爲promote_trigger_file
- standby_mode參數不再支持
使用歸檔恢復和recovery target相關參數見如下:
https://www.postgresql.org/docs/devel/runtime-config-wal.html#RUNTIME-CONFIG-WAL-ARCHIVE-RECOVERY
另外pg_basebackup使用-R參數可以直接生成standby.signal文件,postgresql.auto.conf文件會自動加入流複製primary_conninfo參數的信息。
pg_basebackup -R -D $PGDATA -Fp -Xs -v -P -h xxxxx -p xxxx -U repuser
參數解釋如下:爲流複製寫入相關配置
-R, --write-recovery-conf
write configuration for replication
主備切換也有少許不同:
- 主庫故障,無法訪問,或者模擬故障,關閉主庫
- 激活備庫,這裏有三種方法,1) pg_ctl promote 命令方式; 2) 創建配置的promote_trigger_file觸發器文件方式; 3) pg_promote()函數方式。
- 如果原來的主庫需要起來做爲新的備庫,需要手工創建standby.signal,然後啓動。
使用pg_promote()函數進行主備切換示例:
1.pg_ctl stop -m fast --關閉原主庫模擬故障
2.postgres=# SELECT pg_promote(true,60); --在備庫使用函數進行主備切換,默認爲true,等待60秒
pg_promote
------------
t
(1 row)
3.touch standby.signal --在原來的主庫新建標誌文件
4.pg_ctl start --啓動原故障的主庫作爲新的備庫
切換物理備節點。將wait設置爲true(默認值)時,該函數將等待升級完成或等待wait_seconds秒,如果切換成功則返回true,否則返回false。如果將wait設置爲false,則該函數將立即發送SIGUSR1給postmaster以觸發升級並返回true。默認情況下,此功能僅限超級用戶使用,但可以授予其他用戶執行該函數權限。