Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11

26.3. 备用服务器设置

standby_mode (boolean)

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

primary_conninfo (string)

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

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

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

primary_slot_name (string)

可选的指定在通过流复制连接到主服务器时要使用的现有复制槽, 以控制上游节点上的资源删除(见 第 25.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被延迟,这会导致主服务器的膨胀, 两者一起使用时要小心。