27.3. 备库设置 #
standby_mode(boolean) #指定是否将 PostgreSQL 服务器作为备库启动。如果此参数为
on,服务器到达已归档 WAL 的末尾时不会停止恢复,而会继续尝试使用restore_command获取新的 WAL 段,和/或按照primary_conninfo设置连接主库,以继续恢复。primary_conninfo(string) #指定备库连接主库所用的连接字符串,格式见第 34.1.1 节。如果某个选项未在字符串中指定,就会检查相应的环境变量(参见第 34.14 节)。如果环境变量也未设置,则使用默认值。
连接字符串应指定主库的主机名(或地址);如果端口号与备库的默认端口不同,也应指定端口号。还应指定一个用户名,对应主库上具有适当权限的角色(参见第 26.2.5.1 节)。如果主库要求密码认证,还需要提供密码。密码可以放在
primary_conninfo字符串中,也可以放在备库上单独的~/.pgpass文件中(使用replication作为数据库名)。不要在primary_conninfo字符串中指定数据库名。如果
standby_mode为off,此设置不起作用。primary_slot_name(string) #可选地指定一个已存在的复制槽,在通过流复制连接主库时使用,以控制上游节点的资源移除(参见第 26.2.6 节)。如果未设置
primary_conninfo,此设置不起作用。trigger_file(string) #指定一个触发文件,其出现会使备库结束恢复。即使未设置此值,也仍可以使用
pg_ctl promote提升备库。如果standby_mode为off,此设置不起作用。recovery_min_apply_delay(integer) #默认情况下,备库会尽快恢复来自主库的 WAL 记录。保留一份延迟的数据副本可能很有用,因为它提供了纠正数据丢失错误的机会。此参数允许将恢复延迟一段固定时间;如果没有指定单位,则以毫秒计。例如,将此参数设置为
5min时,只有当备库系统时间比主库报告的提交时间至少晚五分钟,备库才会重放各事务的提交。服务器之间的复制延迟可能超过此参数的值,这种情况下不会增加延迟。注意,延迟根据主库写入的 WAL 时间戳与备库当前时间之差计算。网络延迟或级联复制配置导致的传输延迟,可能显著缩短实际等待时间。如果主库和备库的系统时钟不同步,恢复时可能比预期更早应用记录;但这通常不是主要问题,因为此参数的实用取值远大于服务器间常见的时间偏差。
延迟仅发生在事务提交的 WAL 记录上。其他记录会尽快重放;这不会造成问题,因为 MVCC 可见性规则确保在对应提交记录被应用之前,它们的效果不会可见。
恢复中的数据库达到一致状态后开始延迟,直到备库被提升或触发。此后,备库会结束恢复,不再等待。
此参数旨在用于流复制部署;不过,只要指定了此参数,它就会在所有情况下生效。使用此功能也会延迟
hot_standby_feedback,可能导致主库膨胀;同时使用两者时应谨慎。警告
当
synchronous_commit设置为remote_apply时,同步复制会受到此设置影响;每个COMMIT都必须等待提交被应用。