配置 pgactive 扩展的参数设置 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 pgactive 扩展的参数设置

您可以使用以下查询来查看与 pgactive 扩展关联的所有参数。

app=> SELECT * FROM pg_settings WHERE name LIKE 'pgactive.%';

您可以使用各种参数配置 pgactive 扩展。可通过 Amazon Web Services Management Console或 Amazon CLI 界面设置这些参数。

pgactive 扩展的主要参数

下表提供了 pgactive 扩展的主要参数的参考:

参数

单位

默认值

描述

pgactive.conflict_logging_include_tuples

boolean

记录 pgactive 扩展的完整元组信息。

注意

要使更改生效,必须先重启服务器。

pgactive.log_conflicts_to_table

boolean

确定 pgactive 扩展是否已将检测到的冲突记录到 pgactive.pgactive_conflict_history 表中。有关更多信息,请参阅冲突日志记录。

注意

要使更改生效,必须先重启服务器。

pgactive.log_conflicts_to_logfile

boolean

确定 pgactive 扩展是否已将检测到的冲突记录到 PostgreSQL 日志文件中。有关更多信息,请参阅冲突日志记录。

注意

要使更改生效,必须先重启服务器。

pgactive.synchronous_commit

boolean

off

确定 pgactive 应用工作线程的提交行为。在此设置处于禁用(off)状态时,应用工作线程会执行异步提交,这将提高 PostgreSQL 在应用操作期间的吞吐量,但会延迟向上游发送的重播确认。将此设置设为 off 始终是安全的,不会导致事务丢失或跳过。此设置仅影响下游节点上的磁盘刷新时间以及向上游发送确认的时间。系统会延迟发送重播刷新确认,直到通过检查点或定期工作等不相关的操作将提交刷新到磁盘。但是,如果上游具有 synchronous_standby_names 中列出的下游,则将此设置设定为 off 会导致上游的同步提交需要更长的时间才能向客户端返回成功响应。在此情况下,可将该参数设置为 on

注意

即使将该参数设置为 on 并在 synchronous_standby_names 中列出了节点,主动-主动配置中也仍然可能发生复制冲突。这是因为系统缺少节点间锁定和全局快照管理,可能导致不同节点上的并发事务修改同一元组。此外,事务仅在上游节点上提交后才开始复制。启用同步提交并不会将 pgactive 扩展转换为始终一致的系统。

pgactive.temp_dump_directory

string

定义数据库克隆操作在初始设置期间所需的临时存储路径。此目录必须可由 postgres 用户写入,并且拥有足够的存储空间来容纳完整的数据库转储。系统仅在通过逻辑复制操作进行初始数据库设置期间使用此位置。pgactive_init_copy command 不使用该参数。

pgactive.max_ddl_lock_delay

milliseconds

-1

指定在强制中止并发写入事务之前,DDL 锁的最长等待时间。默认值为 -1,这将使用 max_standby_streaming_delay 中设置的值。该参数接受时间单位。例如,可以将它设置为 10s 来表示 10 秒。在此等待期间,系统会尝试获取 DDL 锁,同时等待正在进行的写入事务完成提交或回滚。有关更多信息,请参阅“DDL 锁定”。

pgactive.ddl_lock_timeout

milliseconds

-1

指定 DDL 锁为获取锁而尝试等待的时长。默认值为 -1,这将使用 lock_timeout 中指定的值。您可以使用时间单位来设置此参数,例如 10s 表示 10 秒。此计时器仅控制为获取 DDL 锁而等待的时长。在系统获取锁并开始 DDL 操作后,计时器将停止。此参数不会限制可将 DDL 锁保持的总持续时间或总 DDL 操作时间。要控制操作的总持续时间,请改用 statement_timeout。有关更多信息,请参阅“DDL 锁定”。

pgactive.debug_trace_ddl_locks_level

boolean

覆盖 pgactive 扩展中 DDL 锁定操作的默认调试日志级别。配置此设置后,会导致系统在 LOG 调试级别而非默认级别发出与 DDL 锁相关的消息。使用此参数可监控 DDL 锁定活动,而无需在整个服务器上启用详细 DEBUG1DEBUG2 日志级别。

可用日志级别(按详细程度升序排列):

  • none – DDL 锁消息仅在 DEBUG1 及更低的服务器日志级别显示。

  • statement – 为 DDL 锁获取尝试添加 LOG 输出。

  • acquire_release – 记录远程 DDL 锁的锁获取、释放、拒绝事件以及对等节点应用。

  • peers – 提供有关对等节点之间的 DDL 锁协商的更多详细信息。

  • debug – 在 LOG 级别记录所有与 DDL 锁相关的活动。

有关监控选项的更多信息,请参阅“监控全局 DDL 锁”。

注意

对此设置所做的更改会在重新加载配置后生效。您无需重新启动服务器。

pgactive 扩展的其他参数

下表列出了 pgactive 扩展中不常用的配置选项和可用的内部配置选项。

参数

单位

默认值

描述

pgactive.debug_apply_delay

integer

pgactive.pgactive_connections 条目中未明确设定应用延迟的已配置连接设置应用延迟(以毫秒为单位)。此延迟是在节点创建或加入时设置的,pgactive 不会在对等节点上重播事务,直到提交后至少经过指定的毫秒数。

主要用于在测试环境中模拟高延迟网络,以便更轻松地制造冲突。例如,如果在节点 A 和 B 上设置了 500 毫秒的延迟,则在节点 A 上插入一个值后,至少为您提供了 500 毫秒的时间在节点 B 上执行冲突插入。

注意

需要重新加载服务器或重新启动应用工作线程,设置才能生效。

pgactive.connectability_check_duration

integer

指定数据库工作线程在尝试连接失败后,继续尝试建立连接的持续时间(以秒为单位)。工作线程每秒尝试连接一次,直到连接成功或达到此超时值。当数据库引擎在工作线程准备好建立连接之前启动时,此设置很有用。

pgactive.skip_ddl_replication

boolean

on

控制如何在启用 pgactive 时,在 Amazon RDS 中复制或处理 DDL 更改。在设置为 on 时,该节点会像非 pgactive 节点一样处理 DDL 更改。在使用此参数时,需符合以下要求:

  • 如果新节点与上游节点的 skip_ddl_replication 值不同,则新节点无法加入 pgactive 组。

  • 如果现有节点与上游节点的参数值不匹配,则现有节点无法启动 pgactive 工作线程。

  • 所有 pgactive 成员都必须使用同一个参数值。

您可以使用超级用户权限以全局和本地(会话级别)这两种方式修改此参数。

注意

错误地更改此参数可能会中断您的复制设置。

pgactive.do_not_replicate

boolean

此参数仅供内部使用。在事务中设置此参数时,所做的更改不会复制到数据库集群内的其他节点。

注意

错误地更改此参数可能会中断您的复制设置。

pgactive.discard_mismatched_row_attributes

boolean

此参数仅供专业人员使用。建议仅在解决特定的复制问题时使用此参数。在以下情况下可使用此参数:

  • 传入的复制流包含的行所对应的列比本地表多。

  • 这些远程行包含非空值。

此设置会覆盖以下错误消息,并允许产生数据差异,以便让复制进程持续进行:cannot right-pad mismatched attributes; attno %u is missing in local table and remote row has non-null, non-dropped value for this attribute

注意

错误地更改此参数可能会中断您的复制设置。

pgactive.debug_trace_replay

boolean

在设置为 on 时,它会为下游应用工作线程处理的每个远程操作发出一条日志消息。日志包括:

  • 更改类型

  • 受影响的表名称

  • 自事务开始以来的更改次数

  • 事务提交 LSN

  • 提交时间戳

  • 上游节点标识符

  • 转发节点标识符(如果适用)

日志还会捕获已排队的 DDL 命令和表删除事件。

para>

默认情况下,日志不包括行字段内容。要在日志中包含行值,您必须在启用以下标志的情况下重新编译:

  • VERBOSE_INSERT

  • VERBOSE_UPDATE

  • VERBOSE_DELETE

注意

启用此日志记录设置可能会影响性能。建议仅在需要此设置来进行问题排查时启用它。对此设置所做的更改会在重新加载配置后生效。您无需重新启动服务器。

pgactive.extra_apply_connection_options

您可以为所有与 pgactive 节点的对等节点连接配置连接参数。这些参数可控制 keepalives 和 SSL 模式等设置。默认情况下,pgactive 使用以下连接参数:

  • connect_timeout=30

  • keepalives=1

  • keepalives_idle=20

  • keepalives_interval=20

  • keepalives_count=5

要覆盖默认参数,请使用以下类似命令:

pgactive.extra_apply_connection_options = 'keepalives=0'

单个节点连接字符串优先于这些设置和 pgactive 的内置连接选项。有关连接字符串格式的更多信息,请参阅 libpq connection strings

我们建议将默认的 keepalive 设置保持启用状态。仅在您通过不可靠的网络完成大量事务时遇到问题的情况下,才禁用 keepalives。

注意

我们建议将默认的 keepalive 设置保持启用状态。仅在您通过不可靠的网络完成大量事务时遇到问题的情况下,才禁用 keepalives。对此设置所做的更改会在重新加载配置后生效。您无需重新启动服务器。

pgactive.init_node_parallel_jobs (int)

指定在逻辑节点与 pgactive.pgactive_join_group 函数联接期间,pg_dumppg_restore 可使用的并行作业数。

对此设置所做的更改会在重新加载配置后生效。您无需重新启动服务器。

pgactive.max_nodes

int

4

指定 pgactive 扩展组中可包含的节点的最大数目。默认值为 4 个节点。在设置此参数的值时,必须注意以下几点:

  • pgactive 扩展组中的所有节点都必须使用同一个参数值。

  • 如果新节点与上游节点的参数值不同,则新节点无法联接。

  • 如果现有节点与上游节点的参数值不匹配,则现有节点无法启动 pgactive 工作线程。

  • 由于较大的组所需的监控和维护工作量更大,因此需谨慎设置该参数的值。

可通过两种方式设置此参数,即在配置文件中进行设置或者使用 ALTER SYSTEM SET 命令进行设置

此参数的默认值为 4,这意味着,pgactive 扩展组始终最多只能包含 4 个节点。

注意

重新启动服务器后,此更改将生效。

pgactive.permit_node_identifier_getter_function_creation

boolean

此参数仅供内部使用。启用后,pgactive 扩展将允许创建 pgactive 节点标识符 getter 函数。