监控复制:PG_STAT_REPLICATION
监控复制:PG_STAT_REPLICATION
PG复制(同步和异步复制)是数据库社区最普遍的功能之一。现在用户通过高可用集群或者使用复制建立只读副本来分散工作负载。这里需要注意,如果使用复制,则必须确保集群受到正确监控。本文目的解释一些基本原理,以帮助集群健壮。
pg_stat_replication:检查当前状态
pg_stat_replication是监控复制状态的方法,该视图:
test=# d pg_stat_replicationView "pg_catalog.pg_stat_replication"Column | Type | Collation | Nullable | Default-----------------+-------------------------+-----------+----------+---------pid | integer | | |usesysid | oid | | |usename | name | | |application_name | text | | |client_addr | inet | | |client_hostname | text | | |client_port | integer | | |backend_start | timestamp with time zone| | |backend_xmin | xid | | |state | text | | |sent_lsn | pg_lsn | | |write_lsn | pg_lsn | | |flush_lsn | pg_lsn | | |replay_lsn | pg_lsn | | |write_lag | interval | | |flush_lag | interval | | |replay_lag | interval | | |sync_priority | integer | | |sync_state | text | | |reply_time | timestamp with time zone| | |
视图中列数不断在增加,下面先讨论下基本原理。
pg_stat_replication:WAL发送信息
用户通常认为pg_stat_replication在主上,这是不太准确的。这个视图是关于wal_sender进程的信息。换句话说,如果在部署级联复制,备也会显示向下一个备进行复制的信息,如下图:
每个WAL sender进程,对应一个元祖。重要的是,每个服务器只会看到链中下一个服务器,不会跳过一节点看到下下个节点。也就是说,级联复制中,必须要求每个sending服务器获得下一个信息。但是还有更多问题,通常用户必须确定一个备是否是最新的,这里有相关信息:
sent_lsn:该网络已经发送了多少WAL了
write_lsn:写到操作系统多少WAL,还没flush
flush_lsn:有多少WAL刷写到了磁盘
replay_lsn:WAL回放了多少
PG中提供pg_lsn这个特殊的数据类型表示这些数据,可以标记当前WAL的位置:
test=# SELECT pg_current_wal_lsn();pg_current_wal_lsn--------------------3/DA06D240(1 row)
可通过下面计算:
test=# SELECT pg_current_wal_lsn() - '3/B549A845'::pg_lsn;?column?-----------616376827(1 row)
PG提供各种操作符做这些计算,非常方便计算备机落后了多少。
flush_lsn vs replay_lsn
WAL从主到备时,首先通过网络发送,然后发送到操作系统,最后刷写到磁盘。Flush_lsn表示刷到磁盘的最新WAL位置。问题是,数据刷新后就可见吗?当然不是。可能有复制冲突的现象。WAL可能已经在备上持久化了,但是有冲突,所以不能回放,也就是备机上数据还没有回放就可以被终端用户访问了。
如果看到下面信息,就表示有复制冲突了:
ERROR: canceling statement due to conflict with recovery
DETAIL: User query might have needed to see row versions that must be removed.
有时候非常必要了解复制落后了多少秒,看到两个服务器之间相差多少字节。如果需要量化这个延迟,查看_lag列。这些列数据类型是整型,可以看到延迟的秒数甚至分钟数。如果复制正常,延迟通常非常小(毫秒级),但是仍需要监控。
注意:如果正在运行诸如vacuum类型的操作,很容易发生磁盘吞吐高于网络带宽的情况。这种情况下,slave可能会落后master。必须容忍这种情况,并确保警报不会过早启动。
pgwatch2: Ready made tooling
还有许多现有工具来监控复制,推荐pgwatch2,可以作为一个容器下载。
最新活动更多
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 2024先进激光技术博览展
-
精彩回顾立即查看>> 全数会2024中国深圳智能制造与机器人展览会
-
精彩回顾立即查看>> 2024(第五届)全球数字经济产业大会暨展览会
-
精彩回顾立即查看>> 维科杯·OFweek2024中国工业自动化及数字化行业年度评选
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论