文章目录
发布端
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信息