首页 > 其他分享 >openGauss集群主库出现流复制延迟告警

openGauss集群主库出现流复制延迟告警

时间:2023-11-14 18:13:01浏览次数:35  
标签:主库 last timestamp replay pg xact openGauss 告警

问题描述:环境是openGauss 5.0集群,在一次意外重启数据库之后。收到了一个主库的主从延迟告警,只有从库才能出现延迟,主库怎么会出现了告警延迟

告警信息:

Status: Resolved
Hostname: hkuatxcrecondb01
IP Address: 192.168.163.21
Alert Message: Opengauss: Streaming lag with {#MASTER} is too high (over 10m in 5m)
Replication: lag in seconds: 0s
Date: 2023.11.13
Time: 11:27:27

 

监控脚本:

/etc/zabbix/script/opengauss/sql/gsql.replication.lag.sql

DO LANGUAGE plpgsql $$
DECLARE
        ver integer;
        res text;
BEGIN
        SELECT current_setting('server_version_num') INTO ver;

        IF (ver >= 100000) THEN
                SELECT * INTO res from (
                        SELECT
                                CASE WHEN pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn()
                                        THEN 0
                                        ELSE COALESCE(EXTRACT(EPOCH FROM now() - pg_last_xact_replay_timestamp())::integer, 0)
                                END
                        ) T;

        ELSE
                SELECT * INTO res from (
                        SELECT
                                CASE WHEN pg_last_xlog_receive_location() = (pg_last_xlog_replay_location()).lsn
                                        THEN 0
                                        ELSE COALESCE(EXTRACT(EPOCH FROM now() - pg_last_xact_replay_timestamp())::integer, 0)
                                END
                        ) T;
        END IF;

        perform set_config('zbx_tmp.repl_lag_res', res, false);
END $$;

select current_setting('zbx_tmp.repl_lag_res');

 

数据库主备角色状态正常,复制视图还是显示主库是主库,从库是从库。根据sql查询到最后的日志重放时间维持在重启的时候。

官方文档:https://www.postgresql.org/docs/9.1/functions-admin.html

在OpenGauss中,pg_last_xact_replay_timestamp()是一个系统函数,用于获取最后一个事务在流复制过程中被重放的时间戳。它返回一个时间戳,表示最后一个事务在备库上被应用的时间。

在主库上,pg_last_xact_replay_timestamp()函数将返回NULL,因为主库不会进行事务重放。只有在备库上进行流复制时,才会有事务被重放的情况。

当备库从主库接收到事务日志并应用到备库上时,pg_last_xact_replay_timestamp()函数将返回最后一个事务的应用时间戳。这个时间戳可以用于监控和诊断备库的复制进度,以及确定备库是否与主库保持同步。

请注意,pg_last_xact_replay_timestamp()函数只在备库上可用,如果在主库上调用该函数,将返回NULL。

官方文档中的解释:
获取恢复期间重播的最后一个事务的时间戳。这是在主数据库上生成该事务的提交或中止 WAL 记录的时间。如果恢复期间没有重放任何事务,则此函数返回 NULL。否则,如果恢复仍在进行中,这将单调增加。如果恢复已完成,则该值将保持静态,为该恢复期间应用的最后一个事务的值。当服务器正常启动而没有恢复时,该函数返回 NULL。
很有可能意外的重启将数据库认定成为了一个恢复状态。但是这种恢复状态一直会递增,我没有等到这种状态自动消失

 

根据sql查询监控值:

openGauss=# select COALESCE(EXTRACT(EPOCH FROM now() - pg_last_xact_replay_timestamp())::integer, 0);
 coalesce
----------
    20888
(1 row)

openGauss=# select * from pg_last_xact_replay_timestamp();
-[ RECORD 1 ]-----------------+------------------------------
pg_last_xact_replay_timestamp | 2023-11-13 11:13:11.445842+08

 

解决方案:其实很简单,手动去重启,数据库的pg_last_xact_replay_timestamp时间戳将会被清理掉

gs_om -t status --detail
gs_om -t restart


gsql ((openGauss 5.0.0 build a07d57c3) compiled at 2023-03-29 03:36:31 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# select COALESCE(EXTRACT(EPOCH FROM now() - pg_last_xact_replay_timestamp())::integer, 0);
 coalesce
----------
        0
(1 row)

openGauss=#
openGauss=# select pg_last_xact_replay_timestamp();
 pg_last_xact_replay_timestamp
-------------------------------

(1 row)

openGauss=#

 

情景再现:

利用磁盘空间满,可以制造相同情景

标签:主库,last,timestamp,replay,pg,xact,openGauss,告警
From: https://www.cnblogs.com/avasteven/p/17832214.html

相关文章

  • 代码静态检查为什么需要对告警去做运营?
    本文分享自华为云社区《代码静态检查为什么需要对告警去做运营?》,作者:gentle_zhou。代码检查SAST技术支持指对代码的风格,质量和安全进行静态的检查,以发现代码中的缺陷和漏洞,提高代码的可读性,可靠性和可维护性。而其中代码检查扫描出来的告警则是指SAST检查工具发现的代码问题,通常......
  • 飞书官方| Zabbix告警信息发送飞书卡片消息,让消息飞来
    一概述告警通知对企业至关重要,直接影响网络稳定性。借助飞书集成平台,可以轻松将Zabbix与飞书进行对接,灵活地配置各种告警通知。在日常工作中,IT运维人员需要及时收到和处理各种IT系统的告警信息,以保证系统稳定运行。在Zabbix监控系统中,用户可以通过配置将告警信息发送到飞书群......
  • openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过
    openGauss学习笔记-122openGauss数据库管理-设置密态等值查询-密态支持函数/存储过程密态支持函数/存储过程当前版本只支持sql和PL/pgSQL两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。密态等值查询支持函数存储过程新增系......
  • 视频监控EasyCVR平台播放告警录像时,播放器显示不全是什么原因?
    防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力......
  • 视频监控系统EasyCVR平台播放告警录像时,播放器显示不全是什么原因?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的......
  • Centos7 nginx反向代理gitea和grafana&钉钉告警
    1安装nginxyuminstall-ygccmakepcre-develzlib-developenssl-develwgethttps://nginx.org/download/nginx-1.20.1.tar.gztar-zxvfnginx-1.20.1.tar.gzcdnginx-1.20.1./configure--prefix=/usr/local/nginx--with-http_ssl_modulemakemakeinstallvi/etc/system......
  • openGauss学习笔记-121 openGauss 数据库管理-设置密态等值查询-使用JDBC操作密态数据
    openGauss学习笔记-121openGauss数据库管理-设置密态等值查询-使用JDBC操作密态数据库121.1连接密态数据库连接密态数据库需要使用驱动包gsjdbc4.jar,具体JDBC连接参数参考基于JDBC开发章节介绍。JDBC支持密态数据库相关操作,需要设置enable_ce=1,示例如下。publicstaticConne......
  • Go实现Zabbix企业微信机器人告警
    企业微信应用通知的程序相对复杂点,见上篇文章机器人告警相对简单点,只需一个url即可企业微信里创建一个机器人注意机器人的url,后续程序中需要使用直接上程序sjgzbx_machine.gopackagemainimport("bytes""encoding/json""fmt""io/ioutil""net/ht......
  • Go实现Zabbix企业微信应用通知告警
    企业微信https://work.weixin.qq.com/企业微信->应用管理->创建应用个人微信也能接收企业微信信息我的企业->微信插件->扫码关注特殊说明之前企业微信只需要调用接口就能实现微信应用通知,最近改版,变得比较复杂1:需要配置可信IP才能发2:配置可信IP前需要先设置可信域名......
  • openGauss学习笔记-120 openGauss 数据库管理-设置密态等值查询-概述及使用gsql操作密
    openGauss学习笔记-120openGauss数据库管理-设置密态等值查询-概述及使用gsql操作密态数据库120.1密态等值查询概述随着企业数据上云,数据的安全隐私保护面临越来越严重的挑战。密态数据库将解决数据整个生命周期中的隐私保护问题,涵盖网络传输、数据存储以及数据运行态;更进一步......