pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
这些设置控制内置流复制特性(见第 25.2.5 节)的行为。服务器将可以是主库或备库。主库能发送数据,而备库总是被复制数据的接收者。当使用级联复制(见第 25.2.6 节)时,备库也可以是发送者,同时也是接收者。这些参数主要用于发送服务器和备库,尽管某些只在主库上有意义。如果有必要,设置可以在集簇中变化而不出问题。
这些参数可以在任何发送复制数据给一个或多个备库的服务器上设置。主库总是一个发送服务器,因此这些参数总是要在主库上设置。这些参数的角色和含义不会在一个备库变成主库后改变。
max_wal_senders (integer) #指定来自备库或流式基础备份客户端的并发连接的最大数量(即同时运行 WAL 发送进程的最大数)。 默认值为 0,即禁用复制。WAL 发送进程计入总连接数,因此此参数的值不能高于max_connections。 此参数只能在服务器启动时设置。wal_level必须设置为archive或 hot_standby,才允许来自备库的连接。
wal_keep_segments (integer) #指定在pg_xlog目录中保留的过去日志文件段的最小数量,以便备库可能需要获取它们来进行流复制。 每个段通常为 16 兆字节。如果连接到发送服务器的备库落后超过wal_keep_segments个段, 发送服务器可能会移除备库仍需要的 WAL 段,在这种情况下,复制连接将被终止。下游连接最终也会因此失败。 (但是,如果使用了 WAL 归档,备库可以通过从归档中获取该段来恢复。)
此设置只指定在pg_xlog中保留的最小段数;系统可能需要为 WAL 归档或从检查点恢复而保留更多段。 如果wal_keep_segments为零(默认值),系统不会为备库额外保留任何段,因此备库可用的旧 WAL 段数 取决于前一个检查点的位置和 WAL 归档的状态。 此参数只能在postgresql.conf文件中或在服务器命令行上设置。
wal_sender_timeout (integer) #终止处于非活动状态超过指定毫秒数的复制连接。这有助于发送服务器检测备库崩溃或网络中断。 值零禁用超时机制。此参数只能在postgresql.conf文件中或在服务器命令行上设置。 默认值为 60 秒。
这些参数可以在向一个或多个备库发送复制数据的主库上设置。 除这些参数外,还必须在主库上适当设置 wal_level, 也可以选择启用 WAL 归档(见 第 18.5.3 节)。 这些参数在备库上的取值不影响备库运行,不过也可以预先设置,以备将来提升为主库。
synchronous_standby_names (string) #如第 25.2.7 节所述,这个参数指定一个支持同步复制的备库名称的逗号分隔列表。 在任一时刻,最多只有一个活动的同步备库;在这个备库确认收到它们的数据之后,等待提交的事务将被允许继续下去。 同步备库是列表中第一个被命名、并且当前已连接并且正在实时流式传输数据(如pg_stat_replication视图中streaming的状态所示)的服务器。 在这个列表中出现得较晚的其他备库表示潜在的同步备库。如果当前的同步备库因为某种原因断开连接,它将立刻被下一个最高优先级的备库替代。 指定多于一台备库名称可以得到非常高的可用性。
用于这一目的的备库名称是其 WAL 接收器的primary_conninfo中设置的application_name。没有机制强制唯一性。在出现重复的情况下,匹配的备库之一将被选为同步备库,不过无法弄清到底是哪一个。 特殊项*匹配任意application_name,包括默认的应用名walreceiver。
如果这里没有指定同步备库名称,那么不启用同步复制并且事务提交将不会等待复制。这是默认的配置。即便当同步复制被启用时,个体事务也可以被配置为不等待复制,做法是将synchronous_commit参数设置为local或off。
这个参数只能在postgresql.conf文件中或通过服务器命令行进行设置。
vacuum_defer_cleanup_age (integer) #指定VACUUM和HOT更新延迟清理死行版本的事务数。默认值为零个事务, 意味着可以尽快移除死行版本,也就是在它们不再对任何打开的事务可见时立即移除。 如第 25.5 节所述,在为热备服务器提供支持的主库上,你可能希望将此参数设置为非零值。 这让备库上的查询有更多时间完成,而不会因过早清理行而发生冲突。 但是,由于此值以主库上发生的写事务数计量,很难预测会给备库查询带来多少额外的宽限时间。 此参数只能在postgresql.conf文件中或在服务器命令行上设置。
你也应考虑在备库上设置hot_standby_feedback,作为使用此参数的替代方案。
这些设置控制备库接收复制数据时的行为。 它们在主库的值是无关的。
hot_standby (boolean) #指定在恢复期间,你是否能够连接并运行查询,如第 25.5 节中所述。默认值是off。这个参数只能在服务器启动时设置。它只在归档恢复期间或备库模式下才有效。
max_standby_archive_delay (integer) #当热备处于活动状态时,此参数确定备库在取消与即将应用的WAL条目冲突的备库查询之前应等待多长时间,如 第 25.5.2 节中所述。 max_standby_archive_delay在从WAL归档中读取WAL数据时适用(因此不是当前的)。 如果未指定单位,则将其视为毫秒。 默认值为30秒。 值为-1允许备库永远等待冲突查询完成。 此参数只能在postgresql.conf文件或服务器命令行中设置。
注意,max_standby_archive_delay并不等同于查询在被取消前可以运行的最长时间;它表示应用任意一个 WAL 段的数据所允许的最长总时间。因此,如果某个查询先前在处理该 WAL 段时已造成显著延迟,后续冲突查询的宽限时间就会短得多。
max_standby_streaming_delay (integer) #当热备处于活动状态时,此参数确定备库在取消与即将应用的WAL条目冲突的备库查询之前应等待多长时间,如第 25.5.2 节中所述。 max_standby_streaming_delay在通过流复制接收WAL数据时应用。 如果未指定单位,则将其视为毫秒。 默认值为30秒。 值为-1允许备库永远等待冲突查询完成。 此参数只能在postgresql.conf文件或服务器命令行中设置。
注意,max_standby_streaming_delay并不等同于查询在被取消前可以运行的最长时间;它表示从主库接收到 WAL 数据后,允许用于应用这些数据的最长总时间。因此,如果某个查询已造成显著延迟,后续冲突查询的宽限时间就会短得多,直到备库再次赶上进度。
wal_receiver_status_interval (integer) #指定在备库上的 WAL 接收进程向主库或上游备库发送有关复制进度的信息的最小频度,它可以使用pg_stat_replication视图看到。 备库将报告最后写入的事务日志位置、最后刷盘的位置以及最后应用的位置。 这个参数的值是报告之间的最大间隔,以秒为单位。 每次写入或刷盘位置改变时会发送状态更新,或者至少按这个参数指定的频度发送。 因此,应用位置可能比真实位置略微滞后。 默认值是 10 秒。 将此参数设置为零会完全禁用状态更新。 这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
hot_standby_feedback (boolean) #指定一个热备机是否将会向主库或上游备库发送有关于备库上当前正被执行的查询的反馈。这个参数可以被用来消除由清理记录引起的查询取消,但是可能导致在主库上用于某些负载的数据库膨胀。反馈消息的发送频度不会高于每个wal_receiver_status_interval周期发送一次。默认值是off。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
如果使用级联复制,反馈将被向上游传递直到它最后到达主库。备库在接收到反馈之后除了传递给上游不会做任何其他操作。
wal_receiver_timeout (integer) #终止处于非活动状态超过指定毫秒数的复制连接。这有助于接收数据的备库检测主库节点崩溃或网络中断。 值零禁用超时机制。此参数只能在postgresql.conf文件中或在服务器命令行上设置。 默认值为 60 秒。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。