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=#
情景再现:
利用磁盘空间满,可以制造相同情景
openGauss集群主库出现流复制延迟告警的更多相关文章
- 一张图解释SQL Server集群、镜像、复制、日志传送
一张图解释SQL Server集群.镜像.复制.日志传送 本文版权归作者所有,未经作者同意不得转载.
- MySQL-MHA集群部署(binlog复制)
MHA的理论知识网上有很多教程,这里不会说明:仅推荐博客链接! MHA的理论说明:http://www.ywnds.com/?p=8094 MHA的安装包需要在google上面下载,或者就是csdn上 ...
- MariaDB Galera集群部署--技术流ken
Galera集群介绍 MariaDB集群是MariaDB同步多主机集群.它仅支持XtraDB/ InnoDB存储引擎. 主要功能 同步复制 真正的multi-master,即所有节点可以同时读写数据库 ...
- 【转载】Mysql主从复制、和MySQL集群(主主复制)
转载:https://www.cnblogs.com/phpstudy2015-6/p/6485819.html 请同时参考和结合这篇文件进行处理:https://blog.csdn.net/envo ...
- 使用GTID给Galera集群做数据库异步复制
一.为什么要做Galera集群异步复制 Galera集群解决了数据库高可用的问题,但是存在局限性,例如耗时的事务处理可能会导致集群性能急剧下降,甚至出现阻塞现象.而不幸的是,类似报表等业务需求就需要做 ...
- tomcat 集群配置,Session复制共享
本配置在tomcat7上验证通过.通过此方法配置的集群,session信息将会被自动复制到各个节点. 1.配置Server.xml 在Server.xml中,找到被注释<Cluster/> ...
- Weblogic 12c 集群部署和session复制
在上一篇Weblogic12c集群搭建的基础上,这一篇介绍Weblogic12c集群应用的部署和session复制. 1.启动服务 首先在weblogic12c控制台,启动受托管服务server1.s ...
- ClickHouse之集群搭建以及数据复制
前面的文章简单的介绍了ClickHouse,以及也进行了简单的性能测试.本次说说集群的搭建以及数据复制,如果复制数据需要zookeeper配合. 环境: 1. 3台机器,我这里是3台虚拟机.都安装了c ...
- 集群、限流、缓存 BAT 大厂无非也就是这么做
前言 前阵子有网友询问,如何优化网站?这个问题真的很大,跟他简单的聊了一下,随便说了几点,觉得有必要整理一篇文章出来,正好前阵子在做爬虫博客,于是把大体思路分享出来,与大家互通有无,共同进步. 优化 ...
- (转) Weblogic 12c 集群部署和session复制
1.启动服务 首先在weblogic12c控制台,启动受托管服务server1.server2.server3. 2.将要部署的应用打包成war文件. 我用的是MyEclipse做的开发,可以用其自带 ...
随机推荐
- fastreport .net打印普通报表
fastreport .net打印普通报表 前言: .net代码层先不记录在这,后续会单独写一篇博客来记录. 直接在工具上进行功能点的实现 一.效果图 二.功能点 分页 分页小计 金额大写 三.功能点 ...
- 详解csrf(跨站请求伪造)
1.什么是csrf (csrf攻击原理)? 用户正常访问A网站,A网站设置cookie被用户浏览器保存 用户不关闭浏览器,直接访问恶意网站,该恶意网站内隐藏式内嵌了A网站接口的请求链接 触发该请求链接 ...
- Oracle【ORA-00600 internal error code arguments [2662]】恢复一例
背景 1.数据库版本:11.2.0.4 2.未开启归档 3.没有备份:无RMAN备份.无DUMP备份 4.数据库redo log全部删除. 解决思路: Oracle 的隐含参数: _allow_res ...
- vue安装tinyMCE
目录 [参考视频] [参考文章] 官网: https://www.tiny.cloud/auth/signup/ 资源下载 tinymce 官方为 vue 项目提供了一个组件tinymce-vue n ...
- C语言:顺序存储循环队列#保存文件中单词的最后三个字母
目录 前言 全局变量和结构体代码 四个任务 ①计算文件中的单词数量 ②保存单词最后三个字母到链表中 ③将链表的内容导出到另一个文件中 ④将新文件的内容打印到屏幕中 @完整代码@ 前言 本博客最终会完成 ...
- Spring源码阅读 ------------------- SpringFrameWork 5.2 术语理解(三)
一.一定要理解的概念 1.控制反转 对象A和对象B,对象A中需要new 一个对象B,但是,现在需要对象A,不在自己内部new 对象B,把new 对象B的权限交给第三方(IOC框架),操作的过程,就是控 ...
- Python:Python字符串中的r、u和转义字符
Python中字符串前面我们经常看到加r(R)或u/(U)的前缀,而这两个符号是什么意思呢? 1.r(R) r意为raw,表示不包含转义字符的原生字符串.常见的转义字符包括下列几种: 转义字符 描述 ...
- go高并发之路——缓存穿透、缓存雪崩
缓存击穿.缓存穿透.缓存雪崩是使用Redis的三个经典问题,上篇文章讲了缓存击穿,今天就讲下剩下的两个问题. 一.缓存穿透 定义:缓存穿透是指查询一个根本不存在的数据,缓存层和DB层都不会命中.这样缓 ...
- 【.NET项目分享】免费开源的静态博客生成工具EasyBlog,5分钟拥有自己的博客
EasyBlog 说明 本博客系统通过构建工具生成纯静态的博客网站,借助GitHub Pages,你可以在5分钟内免费拥有个人博客. 它具有以下特点 生成纯静态网站,访问速度极快 使用markdown ...
- centos安装kvm博客
一 centos如何安装kvm https://blog.csdn.net/yulsh/article/details/91790804