衡量 pgactive 成员之间的复制延迟 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

衡量 pgactive 成员之间的复制延迟

您可以使用以下查询来查看 pgactive 成员之间的复制延迟。在每个 pgactive 节点上运行此查询以了解全部信息。

app=> SELECT * FROM pgactive.pgactive_get_replication_lag_info(); │-[ RECORD 1 ]--------+--------------------------------------------- │node_name | node2-app │node_sysid | 7481018224801653637 │application_name | pgactive:7481018224801653637:send │slot_name | pgactive_16385_7481018224801653637_0_16385__ │active | t │active_pid | 783486 │pending_wal_decoding | 0 │pending_wal_to_apply | 0 │restart_lsn | 0/2108150 │confirmed_flush_lsn | 0/2154690 │sent_lsn | 0/2154690 │write_lsn | 0/2154690 │flush_lsn | 0/2154690 │replay_lsn | 0/2154690 │-[ RECORD 2 ]--------+--------------------------------------------- │node_name | node1-app │node_sysid | 7481018033434600853 │application_name | pgactive:7481018033434600853:send │slot_name | pgactive_16385_7481018033434600853_0_16385__ │active | t │active_pid | 783488 │pending_wal_decoding | 0 │pending_wal_to_apply | 0 │restart_lsn | 0/20F5AD0 │confirmed_flush_lsn | 0/214EF68 │sent_lsn | 0/214EF68 │write_lsn | 0/214EF68 │flush_lsn | 0/214EF68 │replay_lsn | 0/214EF68

至少需要监控以下诊断信息:

active

在 active 为 false 时设置警报,这表示该插槽当前未被使用(订阅用户实例已断开与发布者的连接)。

pending_wal_decoding

在 PostgreSQL 的逻辑复制中,WAL 文件以二进制格式存储。发布者必须解码这些 WAL 更改并将其转换为逻辑更改(例如插入、更新或删除操作)。

指标 pending_wal_decoding 显示发布者端等待解码的 WAL 文件的数量。

该数量可能因以下因素增大:

  • 当未连接订阅用户时,active 状态将为 false,并且 pending_wal_decoding 将增大

  • 该插槽处于 active 状态,但发布者无法跟上 WAL 更改的量

pending_wal_to_apply

指标 pending_wal_apply 表示订阅用户端等待应用的 WAL 文件的数量。

有以下几个因素可能会阻止订阅用户应用更改,并且可能导致出现磁盘已满的情况:

  • 架构差异 – 例如,当您在名为 sample 的表的 WAL 流中做出了更改,但订阅用户端却不存在该表时

  • 主键列中的值已更新

  • 辅助唯一索引可能会导致数据差异