27.3. 后备服务器设置

standby_mode (boolean)

指定是否将PostgreSQL服务器作为一个后备服务器启动。如果这个参数为on,当到达已归档 WAL 末尾时该服务器将不会停止恢复,但是将通过使用restore_command获得新的 WAL 段以及/或者通过使用primary_conninfo设置连接到主服务器来尝试继续恢复。

primary_conninfo (string)

指定后备服务器用来连接主服务器的连接字符串。这个字符串的格式在第 32.1.1 节中描述。如果在这个字符串中有任何选项未被指定,那么将检查相应的环境变量(见第 32.14 节)。如果环境变量也没有被设置,则使用默认值。

连接字符串应当指定主服务器的主机名(或地址),以及端口号(如果它和后备服务器的默认端口不同)。还要指定对应于主服务器上合适权限角色的用户名(见第 26.2.5.1 节)。如果主服务器要求口令认证,还需要提供一个口令。它可以在primary_conninfo字符串中提供,或者在后备服务器(使用replication作为数据库名)的一个单独~/.pgpass文件中提供。不要在primary_conninfo字符串中指定一个数据库名。

如果standby_modeoff,这个设置没有效果。

primary_slot_name (string)

有选择地指定通过流复制连接到主服务器时使用一个现有的复制槽来控制上游节点上的资源移除(见第 26.2.6 节)。如果没有设置primary_conninfo则这个设置无效。

trigger_file (string)

指定一个触发器文件,该文件的存在会结束后备机中的恢复。即使这个值没有被设置,你也能够使用pg_ctl promote来提升后备机。如果standby_modeoff,这个设置没有效果。

recovery_min_apply_delay (integer)

某人情况下,一个后备服务器会尽快恢复来自于主服务器的 WAL 记录。有一份数据的延时拷贝是有用的,它能提供机会纠正数据丢失错误。这个参数允许你将恢复延迟一段固定的时间,如果没有指定单位则以毫秒为单位。例如,如果你设置这个参数为5min,对于一个事务提交,只有当后备机上的系统时钟超过主服务器报告的提交时间至少 5分钟时,后备机才会重放该事务。

有可能服务器之间的复制延迟会超过这个参数的值,在这种情况下则不会增加延迟。注意延迟是根据主服务器上写 WAL 的时间戳以及后备机上的当前时间来计算。由于网络延迟或者级联复制配置导致的传输延迟可能会显著地减少实际等待时间。如果主服务器和后备机上的系统时钟不同步,这会导致恢复比预期的更早应用记录。但这不是一个主要问题,因为这个参数有用的设置比服务器之间的典型事件偏差要大得多。

只有在事务提交的 WAL 记录上才会发生延迟。其他记录还是会被尽可能快地重放,这不会成为问题,因为 MVCC 可见性规则确保了在对应的提交记录被应用之前它们的效果不会被看到。

一旦恢复中的数据库已经达到一致状态,延迟就会产生,直到后备机被提升或者触发。在那之后,后备机将会结束恢复并且不再等待。

这个参数的目的是和流复制部署一起使用,但是,如果指定了该参数,所有的情况下都会遵守它。使用这个特性也会让hot_standby_feedback被延迟,这可能导致主服务器的膨胀,两者一起使用时要小心。

警告

synchronous_commit被设置为remote_apply时,同步复制会受到这个设置的影响,每一个COMMIT都需要等待被应用。