POSTGRESQL DUMP recovery.conf 从postgresql 12V 开始

2021-03-16 16:24:00 浏览数 (1)

之前一直在用POSTGRESQL 11 , 对recovery,conf 的印象比较深,到了PG12 这个文件已经移动到了POSTGRESQL.CONF 文件中了. 是那么的简单吗?

NO NO NO

在个人印象里面RECOVERY.CONF 主要的作用是进入恢复模式的一个触发器

我们在捋一捋一些功能参数 standby_mode, restore_command, recovery_target, primary_conninfo 等信息.

在PG 12 当中recovery.conf 已经转移到了 postgresql.conf 中

我们需要说说在POSTGRESQL 中的变化

1 随着recovery.conf 融合到POSTGRESQL.conf 中, recovery.singal 和 standby.singal 两个文件被提出 ,其中 recovery.singal 出现这个信息说明POSTGRESQL 处于archive recovery的状态, 如果服务器上有standby.singal说明服务器处于standby 的状态.

2 当他们不处于这个状态,则说明他们所在的模式已经改变,模式改变,则对应的文件会被清理掉. 这点和PG11 形成了鲜明的对比,如果你的,之前recovery.conf在状态变化后,例如恢复完数据, 则文件名会变为 recovery.done. 在PG12 中会删除对应的上述的 recovery,singal 或者standby.singal文件. 这点是需要在使用PG12中熟悉的.

3 recovery.conf中的参数可以通过alter system 的方式进行配置了

当然如果你非要在PG12的目录中加入revoery.conf 的后果也很简单,你无法在打开的POSTGRESQL 数据库

4 当你的POSTGRESQL12V中存在两个信号文件, 1 standby.singal 2 recovery.singal 到底那个信号量优先被发现和使用,答案是 standby.singal

当在point-in-time恢复的时候,则postgresql 会在恢复完毕后,删除 recovery.singal 文件.

5 其中早先的standby_mode参数,被 standby.singal 和 recovery.singal 代替,trigger_file 被pomote_trigger_file 代替.

下图是POSTGRESQL 12版本中可以在系统中进行配置的RECOVDEY 的变量.

那么这样的情况下有么有需要注意的地方

1 通过alter system 操作recovery的传统参数,的优先级最大,将写入到postgresql.conf 中如果在直接在postgresql,conf中设置同样的变量,则不会生效. 这点就需要通过在系统中展示变量值来确认你当前的配置是如何,不要太相信postgresql.conf 的配置

2 另外对于pg_basebackup 或者 repmgr 读取相关的配置文件中,以最后读取得到信息为准, 如果配置重复的配置选择项,则以最后一次读取到的为准,所以配置文件需要注意,需要注释掉的RECOVERY 的配置需要注释掉.

3 如果误操作存在standby.singal 和 recovery.singal ,则standby.singal的优先级大,则recovery,singal就不在生效,相关的数据恢复工作就会受到影响.

4 当你不熟悉配置参数将 recovery_target, recovery_target_lsn , recovery_target_name, recovery_target_time, recovery_target_xid 等参数配置了多个,则系统日志会记录 FATAL 的致命错误.

0 人点赞