27.3. 备用服务器设置

  • standby_mode ( boolean )

    • 指定是否启动 PostgreSQL 服务器作为备用服务器。如果此参数为on,则服务器将不会在达到存档的 WAL 结束时停止恢复,而是将 continue 尝试通过使用restore_command获取新的 WAL 段和/或按照primary_conninfo设置连接到主服务器来 continue 恢复操作。
  • primary_conninfo ( string )

    • 指定用于备用服务器与主服务器连接的连接字符串。该字符串采用Section 33.1.1中描述的格式。如果在此字符串中未指定任何选项,则将检查相应的环境变量(请参见Section 33.14)。如果也未设置环境变量,则使用默认值。

连接字符串应指定主服务器的主机名(或地址),以及端口号(如果它与备用服务器的默认名称不同)。另外,请指定与主要角色上适当特权角色相对应的用户名(请参阅Section 26.2.5.1)。如果主要用户要求密码认证,则还需要提供密码。可以在primary_conninfo字符串中或备用服务器上单独的~/.pgpass文件中提供它(使用replication作为数据库名称)。不要在primary_conninfo字符串中指定数据库名称。

如果standby_modeoff,则此设置无效。

  • primary_slot_name ( string )

    • (可选)指定在通过流复制连接到主数据库时使用的现有复制插槽,以控制上游节点上的资源删除(请参阅Section 26.2.6)。如果未设置primary_conninfo,则此设置无效。
  • trigger_file ( string )

    • 指定一个触发器文件,该触发器文件的存在将结束备用数据库中的恢复。即使未设置此值,您仍然可以使用pg_ctl promote升级备用数据库。如果standby_modeoff,则此设置无效。
  • recovery_min_apply_delay ( integer )

    • 默认情况下,备用服务器会尽快从主服务器还原 WAL 记录。拥有时间延迟的数据副本可能会很有用,这为纠正数据丢失错误提供了机会。此参数允许您将恢复延迟固定的时间,如果未指定单位,则以毫秒为单位。例如,如果将此参数设置为5min,则仅当备用数据库上的系统时间比主数据库报告的提交时间至少五分钟时,备用数据库才会重放每个事务提交。

服务器之间的复制延迟可能超过此参数的值,在这种情况下,不会添加任何延迟。请注意,延迟是在写入主机时的 WAL 时间戳与待机时的当前时间之间计算的。由于网络延迟或级联复制配置而导致的传输延迟可能会大大减少实际的 await 时间。如果主时钟和备用时钟上的系统时钟不同步,则可能导致应用记录的恢复早于预期;但这不是主要问题,因为此参数的有用设置比服务器之间的典型时间偏差大得多。

延迟仅发生在事务提交的 WAL 记录上。其他记录将尽快重播,这是没有问题的,因为 MVCC 可见性规则可确保在应用相应的提交记录之前,其效果不可见。

一旦恢复中的数据库达到一致状态,就会发生延迟,直到提升或触发备用数据库为止。之后,备用数据库将终止恢复而无需进一步 await。

此参数适用于流复制部署;但是,如果指定了该参数,则在所有情况下都将使用该参数。 hot_standby_feedback会因使用此功能而延迟,这可能会导致主服务器出现膨胀;谨慎使用。

Warning

synchronous_commit设置为remote_apply时,同步复制受此设置影响;每个COMMIT都需要 await 应用。