首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql流复制-监视

Postgresql流复制-监视
EN

Database Administration用户
提问于 2015-10-11 02:07:43
回答 1查看 936关注 0票数 1

我已经为postgres服务器设置了流复制。我使用的是PostgreSQL 9.2.6。复制似乎运行良好。我使用nagios的两种方式监视这一情况:

  1. Log_delay和
  2. Byte_lag

我经常收到log_delay的关键警报,同时byte_lag没有发出任何警报。log_delay在1到2分钟后就好了。谁能建议我,如果我错过了什么在我的设置?

查询如下。

Log_delay

代码语言:javascript
复制
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; 

Byte_lag

代码语言:javascript
复制
SELECT sent_offset - ( replay_offset - (sent_xlog - replay_xlog) * 255 * 16 ^ 6 ) 
       AS byte_lag 
FROM ( 
    SELECT client_addr,
           ('x' || lpad(split_part(sent_location,   '/', 1), 8, '0'))::bit(32)::bigint 
           AS sent_xlog,
           ('x' || lpad(split_part(replay_location, '/', 1), 8, '0'))::bit(32)::bigint  
           AS replay_xlog,
           ('x' || lpad(split_part(sent_location,   '/', 2), 8, '0'))::bit(32)::bigint  
           AS sent_offset,
           ('x' || lpad(split_part(replay_location, '/', 2), 8, '0'))::bit(32)::bigint 
           AS replay_offset 
FROM pg_stat_replication ) AS s;
EN

回答 1

Database Administration用户

发布于 2015-10-22 19:18:39

由于您使用的是9.2,所以最好使用pg_xlog_位置_比较而不是byte_lag函数。像这样的东西更清晰,不太容易出错,应该给你你想要的东西。

代码语言:javascript
复制
SELECT client_hostname,
       client_addr, 
       pg_xlog_location_diff(sent_location, replay_location) AS difference_in_bytes
FROM pg_stat_replication;

或者,总是有check_postgres.pl Nagios插件。它有大量已实现的检查,这些检查肯定可以帮助您保持PostgreSQL安装的愉快和健康。

您想要满足需要的特定功能是热_备用_延迟

一旦安装了它,并制作了符号链接,您就可以简单地从主目录中执行如下操作:

check_postgres_hot_standby_delay --dbport=5432,5432 --dbuser=postgres,postgres --dbhost=,10.0.1.2 --warning="1048576 and 2min" --critical="16777216 and 10min" -v

如果字节和时间超出设置的阈值,则获取警报。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/117656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档