PG复制状态监控

发布端

pg_replication_slots

展示当前数据库已创建的逻辑/物理复制槽信息。

postgres=# select * from pg_replication_slots ;
-[ RECORD 1 ]-------+----------
slot_name           | sub1
plugin              | pgoutput
slot_type           | logical
datoid              | 16646
database            | test
temporary           | f
active              | t
active_pid          | 93496
xmin                | 
catalog_xmin        | 1153
restart_lsn         | 0/32D8BD8
confirmed_flush_lsn | 0/32D8C10
wal_status          | reserved
safe_wal_size       | 

关键参数

  • restart_lsn : 复制槽复制需要的最老的wal位点信息,因此当数据库checkpoint期间也不会自动进行删除,除非该LSN位点落后超过max_slot_wal_keep_size
  • confirmed_flush_lsn : 逻辑复制已经确认订阅到的wal位点信息,在该位点之前的wal日志将不再需要,可以在主数据库checkpoint后删除
  • wal_status : 复制槽状态
    • reserved : 复制需要保留的文件在max_wal_size之内
    • extended : 复制需要保留的文件已经超过了max_wal_size,无论是通过复制槽还是wal_keep_size
    • unreserved : 复制槽不再需要保留相关的wal文件,该状态是一个临时状态,后续可返回reserved或extended
    • lost : 复制需要的wal文件已经被删除,且该复制槽变为不可用
  • safe_wal_size : 复制槽状态不被置于"lost"下需要写入的wal大小

pg_stat_replication

展示当前数据库已创建的逻辑/物理复制的详细状态、位点复制信息。

postgres=# select * from pg_stat_replication ;
-[ RECORD 1 ]----+------------------------------
pid              | 93496
usesysid         | 16647
usename          | logical_repl
application_name | sub1
client_addr      | 172.16.104.30
client_hostname  | 
client_port      | 51902
backend_start    | 2021-10-27 11:26:45.250803+08
backend_xmin     | 
state            | streaming
sent_lsn         | 0/32D8C10
write_lsn        | 0/32D8C10
flush_lsn        | 0/32D8C10
replay_lsn       | 0/32D8C10
write_lag        | 
flush_lag        | 
replay_lag       | 
sync_priority    | 0
sync_state       | async
reply_time       | 2021-10-28 22:22:08.379369+08

关键参数

  • usename : 复制用户
  • application_name : 复制槽名称
  • client_addr : 链接wal sender的客户端IP
  • backend_start : 复制进程启动时间/复制进程链接wal sender时间
  • state : wal sender状态
    • startup : 启动状态
    • catchup : 逻辑/物理复制备库正在追赶primary节点(表明当前复制槽存在延迟)
    • streaming : 逻辑/物理复制备库已经追赶上primary节点,进行流复制中
    • backup : wal sender正在发送备份文件
    • stopping : wal sender停止工作
  • sent_lsn : wal sender 发送最后一个wal位点信息
  • write_lsn : 逻辑/物理复制备库已经落盘(write)的wal位点信息
  • flush_lsn : 逻辑/物理复制备库已经落盘(flush)的wal位点信息
  • replay_lsn : 逻辑/物理复制备库已经应用的wal位点信息
  • write_lag : write延迟
  • flush_lag : flush延迟
  • replay_lag : replay延迟
  • sync_priority : 数据同步优先级,同步复制的优先级高于异步复制
  • sync_state :
    • async : 异步复制
    • potential : 目前是异步复制且后续有可能提升为同步复制
    • sync : 同步复制
    • quorum : 同步复制的备选节点
  • reply_time : 逻辑/物理复制备库返回应用日志的最后时间

订阅端

pg_subscription_rel

展示逻辑复制订阅端每个表对象的逻辑复制状态。

test1=# select * from pg_subscription_rel;
 srsubid | srrelid | srsubstate | srsublsn  
---------+---------+------------+-----------
   18282 |   18024 | r          | 0/25BE978
   18282 |   18256 | r          | 0/25BE9B0
   18282 |   18291 | r          | 0/25D8D88
(3 rows)

关键参数

  • srsubid : 订阅通道oid,等同于pg_subscription.oid
  • srrelid : 表对象oid,等同于pg_class.oid
  • srsubstate : 订阅状态
    • i : initialize 初始化
    • d : data 正在拷贝数据
    • s : synchronized 同步中
    • r : ready 已就绪(复制中的常态)
  • srsublsn : 当订阅状态为s或者r时远程LSN位点,其他状态下该参数为NULL

pg_stat_subscription

展示逻辑复制订阅端lsn接收等信息。

test1=# \x 1
Expanded display is on.
test1=# select * from pg_stat_subscription;
-[ RECORD 1 ]---------+------------------------------
subid                 | 18282
subname               | sub1
pid                   | 68947
relid                 | 
received_lsn          | 0/32D8C10
last_msg_send_time    | 2021-10-28 22:59:20.980226+08
last_msg_receipt_time | 2021-10-28 22:59:20.979248+08
latest_end_lsn        | 0/32D8C10
latest_end_time       | 2021-10-28 22:59:20.980226+08

关键参数

  • subname : 订阅通道名称
  • received_lsn :wal recever 接收到的 lsn 位点信息
  • last_msg_send_time : wal sender 最近一次发送信息的时间
  • last_msg_receipt_time : wal recever 最后一次接收到信息的时间
  • latest_end_lsn : wal recever 汇报给 wal sender的lsn位点信息
  • latest_end_time : wal recever 汇报给 wal sender 信息的时间

pg_stat_wal_receiver

展示物理复制standby实例,复制链接信息、lsn接收等信息。

postgres=# select * from pg_stat_wal_receiver ;
-[ RECORD 1 ]---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pid                   | 51507
status                | streaming
receive_start_lsn     | 2/A0000000
receive_start_tli     | 38
received_lsn          | 2/A0000000
received_tli          | 38
last_msg_send_time    | 2021-10-30 16:01:50.641404+08
last_msg_receipt_time | 2021-10-30 16:01:50.642243+08
latest_end_lsn        | 2/A0000000
latest_end_time       | 2021-10-30 07:19:46.118669+08
slot_name             | repmgr_slot_2
sender_host           | 172-16-104-11
sender_port           | 5432
conninfo              | user=repmgr passfile=/home/postgres/.pgpass connect_timeout=2 dbname=replication host=172-16-104-11 port=5432 application_name=172-16-104-12 fallback_application_name=walreceiver sslmode=prefer sslcompression=0 gssencmode=disable krbsrvname=postgres target_session_attrs=any

关键参数

  • status : wal接收器状态
  • receive_start_lsn : wal recever 接收到的第一个lsn位点信息
  • receive_start_tli : wal recever 接收到第一个lsn位点信息的时间轴
  • received_lsn :wal recever 接收到的,并且已经将wal写盘(没有flush)的最近一个的lsn位点
  • received_tli :wal recever 接收到的,并且已经将wal写盘(没有flush)的最近一个的lsn位点时间轴
  • flushed_lsn :wal recever 接收到的,并且已经将wal写盘,并且已经flush的最近一个的lsn位点
  • received_tli : wal recever 接收到的,并且已经将wal写盘,并且已经flush的最近一个的lsn位点时间轴
  • latest_end_lsn :wal recever发送给 wal sender的最后一个lsn信息
  • latest_end_time :wal recever发送给 wal sender的最后一个lsn的时间
  • slot_name :复制槽名称
  • sender_host :wal sender 主机IP
  • sender_port :wal sender 端口
  • conninfo :连接wal sender信息
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值