KingbaseES V8R3集群运维案例---failover切换故障分析
案例说明:
KingbaseES V8R3集群主库数据库服务重启后,failover切换失败,分析failover失败的具体原因。
适用版本:
KingbaseES V8R3
一、集群架构
node13----->主库(primary)
node25----->管理备库(standby)
node58----->备库(standby)
二、故障现象
1主2备集群, 172.31.*.13 172.31.*.25 172.31.*.58 。13是主;主机服务器内存不足报警,集成重启主服务器尝试解决,数据库未成功切换;
应用访问异常,报错无法访问数据库。
三、故障分析
搜集集群节点故障发生时间点前后的系统、集群及数据库日志:
1、系统日志:message等
2、集群日志:cluster.log、failover.log、recovery.log等
3、数据库日志:sys_log等
结合故障时间点前后,分析对应日志,综合判断故障原因。
日志分析:
1、node25节点,cluster.log获取,在“2023-04-27 19:20:42watchdog node state changed from [INITIALIZING] to [MASTER]“,kingbasecluster重启后,成为master节点,并且存在多次kingbasecluster服务重启。

2、node13节点,cluster.log获取,在”2023-04-27 19:21:07:successfully joined the watchdog cluster as standby node“,kingbasecluster重启后,成为standby节点,在后面的时间点,又多次重启kingbasecluster服务。

3、从node13的系统日志message获取,在“Apr 27 19:21:49 localhost [/bin/bash]: [sys_ctl -D data stop]”,执行数据库关库的命令,从对应的cluster.log及sys_log看,此时间点都无法连接数据库服务。
4、从cluster.log获取,在”2023-04-27 19:25:25: pid 16083: LOG: health checking retry count 10”,node25节点检测到连接主库数据库服务失败超过阈值(10)后,应该触发failover切换。
5、但是在“2023-04-27 19:25:25: pid 16083: LOG: failed to connect to watchdog command server socket”,连接kingbasecluster失败,导致无法触发failover切换。
6、在备库cluster.log的日志中相同时间点,出现同样的日志信息。
从以上日志分析,在“2023-04-27 19:21:49”,node13(数据库primary)执行关库服务后,在“2023-04-27 19:25:25”时间点,kingbasecluster检测数据库服务连接失败超过阈值后 ,触发failover切换,但是连接kingbascluster服务失败,导致切换未正常执行。从node13、node25节点cluster.log获悉,kingbasecluster服务多次重启导致主库数据库服务down后,未产生failover切换。
以下为主库重启后,数据库sys_log日志:

故障分析:
系统参数:RemoveIPC=yes|no
一些操作系统中RemoveIPC的默认值是yes。操作系统配置中RemoveIPC参数设置为yes,数据库运行过程中出现宕机,并显示如下日志消息。
FATAL: semctl(1463124609, 3, SETVAL, 0) failed: Invalid argument
原因分析
当RemoveIPC参数设置为yes时,操作系统会在对应用户退出时删除IPC资源(共享内存和信号量),从而使得KingbaseES服务器使用的IPC资源被清理,引发数据库宕机。
处理分析
设置配置文件/etc/systemd/logind.conf中的参数RemoveIPC参数为no。
四、问题总结
此次故障,是由于主机系统环境RemoveIPC=yes导致集群宕机(数据库服务及kingbasecluster服务),kingbasecluster在fatal状态就会导致退出进程,退出后就会重启。周而复始。
[kingbase@node102 bin]$ cat /etc/systemd/logind.conf|grep -i remove
RemoveIPC=no
对于生产环境下数据库在部署前,需要检查此系统参数的配置,避免触发数据库宕机的故障。
KingbaseES V8R3集群运维案例---failover切换故障分析的更多相关文章
- KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析
案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...
- KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例
案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...
- KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed
案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...
- KingbaseES V8R3集群运维案例之---用户自定义表空间管理
案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...
- KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例
案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...
- KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构
案例说明: 在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移. 适用版本: KingbaseES V8R3 当前数据库版本: TEST=# s ...
- KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析
案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...
- KingbaseES V8R3集群维护案例之---pcp_node_refresh应用
案例说明: 在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换.此文档对pcp_node_refresh工具做了应 ...
- KingbaseES V8R3集群维护案例之---在线添加备库管理节点
案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...
- PB 级大规模 Elasticsearch 集群运维与调优实践
PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...
随机推荐
- linux下使用find查找并操作文件
介绍 最近在centos7上部署了一套环境,需要根据文件名找到程序运行路径下的文件,并进行移动文件操作,为此查阅了一番,记录下这个操作的脚本.我想很多人都会有这个需求,查找简单,但是要对对查找到的文件 ...
- win32 - 虚拟内存的一些介绍
对32位Windows来说,其虚拟地址空间总数就是2的32次方,即4GB. 如果没有在引导时加上/3GB或/BOOTVA选项,Windows默认最大会分2GB给内核模式程序使用,2GB给用户模式程序. ...
- 好用的OCR文本识别工具
之所以会用到OCR工具,是因为在看一些扫描版的PDF文档时,有时候需要复制粘贴一些文字,特别是技术性文档,对于一些命令或者代码片段需要复制出来执行验证. 网络上有许多推荐OCR工具的文章,但是大多数都 ...
- 如何在矩池云上安装语音识别模型 Whisper
如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以 ...
- CoaXPress 协议的CRC及其具体实现
CoaXPress CRC 在CXP协议中,CRC用在stream packet和control packet中,用于指示数据是否错误,如果是control packet, device发现CRC错误 ...
- 吐血分享一套iOS底层面试题,真心想帮你!!!
一 选择题(单选/多选) 1. 在LP64下,一个指针的有多少个字节 A: 4 B: 8 C: 16 D: 64 答案B解析: 1个指针8字节 2. 一个实例对象的内存结构存在哪些元素 A:成员变量 ...
- redis 安装的参考文章
redis 安装 : https://www.runoob.com/redis/redis-install.html
- Advanced .Net Debugging 3:基本调试任务(上)
一.简介 这是我的<Advanced .Net Debugging>这个系列的第三篇文章.这个系列的每篇文章写的周期都要很长,因为每篇文章都是原书的一章内容(太长的就会分开写).再者说,原 ...
- window.open代理劫持
window.open = new Proxy(window.open, { apply(target, ctx, args) { if (hasAuth(args[0])) { return tar ...
- 3DES算法的起源与演进:保障信息安全的重要里程碑
一.3DES算法的起源与演进 3DES算法是DES算法的增强版,由IBM公司在上世纪90年代初提出.DES算法的密钥长度只有56位,随着计算机计算能力的提升,其安全性逐渐受到威胁.为了增强数据的安全性 ...