Postgresql12 recovery.conf 并入postgresql.conf以及主备切换函数介绍

本文介绍从PostgreSQL 12版本开始,recovery.conf配置已整合至postgresql.conf,新增recovery.signal和standby.signal文件标识模式。详细解析了归档恢复配置、流复制primary_conninfo参数自动加入及主备切换方法,包括使用pg_basebackup、pg_ctlpromote、promote_trigger_file和pg_promote函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 从 12版本开始,不再有recovery.conf文件,recovery.conf配置的内容全部并入到postgesql.conf中。
  2. 新增了两个文件recovery.signal和standby.signal,分别代表处于recovery模式还是standby模式,如果两个文件都配置了,优先为standby模式,配置语法很简单,直接新建touch recovery.signal或者touch standby.signal即可
  3. trigger_file参数更名为promote_trigger_file
  4. 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. 主库故障,无法访问,或者模拟故障,关闭主库
  2. 激活备库,这里有三种方法,1) pg_ctl promote 命令方式; 2) 创建配置的promote_trigger_file触发器文件方式; 3) pg_promote()函数方式。
  3. 如果原来的主库需要起来做为新的备库,需要手工创建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。默认情况下,此功能仅限超级用户使用,但可以授予其他用户执行该函数权限。

PostgreSQL 10 中,`recovery.conf` 文件用于指定恢复期间的配置选项,如下所示: 1. `standby_mode`:指定是否将服务器配置为从服务器。如果设置为 `on`,则服务器将被配置为从服务器。如果设置为 `off`,则服务器将被配置为服务器。 ``` standby_mode = on ``` 2. `primary_conninfo`:指定要连接到的服务器的连接信息,如机名、端口、用户名和密码等。 ``` primary_conninfo = 'host=primary_server port=5432 user=replication password=replicationpass sslmode=require' ``` 3. `restore_command`:指定用于将 WAL(Write-Ahead Log)日志应用到从服务器上的恢复命令。通常,此命令将从份文件中还原缺失的数据。 ``` restore_command = 'cp /mnt/server/archivedir/%f %p' ``` 4. `recovery_target_timeline`:指定从服务器要恢复到的时间线。默认情况下,此选项设置为 `latest`,表示从服务器将恢复到最新时间线。 ``` recovery_target_timeline = 'latest' ``` 5. `recovery_target_time`:指定从服务器要恢复到的时间点。如果未指定此选项,则从服务器将恢复到最新时间点。 ``` recovery_target_time = '2021-06-01 10:00:00' ``` 6. `recovery_target_xid`:指定从服务器要恢复到的事务 ID。如果未指定此选项,则从服务器将恢复到最新的事务 ID。 ``` recovery_target_xid = '123456' ``` 7. `recovery_target_lsn`:指定从服务器要恢复到的 LSN(Log Sequence Number)。如果未指定此选项,则从服务器将恢复到最新的 LSN。 ``` recovery_target_lsn = '16/AB012345' ``` 8. `recovery_min_apply_delay`:指定从服务器要延迟应用 WAL 日志的时间。单位为秒。 ``` recovery_min_apply_delay = 60 ``` 以上是 PostgreSQL 10 中 `recovery.conf` 文件的一些常见配置选项。这些选项可以根据具体的需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值