代码改变世界

【PostgreSQL】PostgreSQL复制延迟该检查哪些内容

  abce  阅读(886)  评论(0编辑  收藏  举报

 

1.在主节点查看

1
select * from pg_stat_replication;

2.在从节点查看

版本10之前:

1
select pg_is_in_recovery(),pg_last_xlog_receive_location(), pg_last_xlog_replay_location(), pg_last_xact_replay_timestamp();

  

1
2
3
4
SELECT CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location()
THEN 0
ELSE EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp())
END AS log_delay;

  

从版本10开始:

1
select pg_is_in_recovery(),pg_is_wal_replay_paused(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), pg_last_xact_replay_timestamp();

  

1
2
3
4
SELECT CASE WHEN pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn()
THEN 0
ELSE EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp())
END AS log_delay;

3.如果有延迟

查看主库当前的日志位置:

1
2
3
4
5
#版本10之前
select pg_current_xlog_location();
 
#版本10开始
SELECT pg_current_wal_lsn();

查看从库当前的日志位置:

1
select pg_is_in_recovery(),pg_is_wal_replay_paused(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), pg_last_xact_replay_timestamp();

4.查看主从之间的延迟日志有多少

函数:​

1
2
pg_wal_lsn_diff(lsn pg_lsn, lsn pg_lsn)
pg_xlog_location_diff (location pg_lsn, location pg_lsn)

  

1
2
3
4
5
6
7
8
9
10
postgres=# select pg_wal_lsn_diff('0/925D7E70','0/2705BDA0');                                                                                                                                    
-[ RECORD 1 ]---+-----------
  
pg_wal_lsn_diff | 1800913104
 
postgres=# select round(1800913104/pow(1024,3.0),2) missing_lsn_GiB;
  
-[ RECORD 1 ]---+-----
  
missing_lsn_gib | 1.68

  

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2015-06-30 RMAN性能监控
2015-06-30 RMAN - 发现I/O瓶颈
2015-06-30 TNS-01251: Cannot set trace/log directory under ADR
2015-06-30 Oracle 监听器日志文件过大导致监听异常
点击右上角即可分享
微信分享提示