- 从 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。默认情况下,此功能仅限超级用户使用,但可以授予其他用户执行该函数权限。