案例说明:

在国产中标麒麟系统生产环境中,监控发现KingbaseES V8R3集群发生了failover的主备切换,客户需要给出分析报告,说明此次集群发生failover切换的原因,本次文档通过分析说明了此次切换产生的具体原因。

适用版本:

KingbaseES V8R3

集群架构:

node 12(10.116.*.12)----原主库
node 11(10.116.*.11)----原备库

一、案例分析步骤

1、读取集群日志(cluster.log、failover.log、recovery.log)获取集群failover切换时间点。
2、分析主备库sys_log,查看日志记录,是否因为数据库业务负载导致切换产生。
3、读取主备库系统日志(message)获取切换发生时,系统的状态信息。
4、结合系统日志、集群日志、数据库日志,总结产生切换发生的具体原因。

二、案例分析总结

1、从”Dec  8 00:43:43”,node 12(主库)操作系统开始出现‘soft lockup’,Soft lockup名称解释:所谓,soft lockup就是说,这个bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。

2、从sys_log看,node 12(主库)缺失“2022-12-08 00:45---00:51”的sys_log日志,这和系统message记录‘soft lockup’时的时间对应,出现‘soft lockup’后,导致系统假死,数据库服务无法正常运行。

3、从cluster.log分析,node 12(主库)缺失‘2022-12-08 00:43:23---01:02:12’日志,这和系统message记录‘soft lockup’时的时间对应,出现‘soft lockup’后,导致系统假死,集群管理kingbasecluster服务无法正常运行。

4、从‘2022-12-08 00:43:11’开始,node 11(备库),无法和主机node 12(主库)的kingbasecluster及数据库服务(54321)正常通讯。

5、node 11(原备库)在‘2022-12-08 00:43:32’开始,尝试连接主库数据库服务,超过连接失败阈值次数后(10),发起failover的切换,并在‘2022-12-08 00:45:10’,执行failover切换,和node 11的failover.log记录的日志信息匹配。

6、node 11 failover.log记录在‘2022-12-08 00:45:10’,node 11(原备库),执行failover主备切换。

从以上分析看,此次主备failover切换,是因为主库出现了‘soft lockup’故障导致,主库系统假死,主库集群管理服务(kingbasecluster)和数据库服务(kingbase)均无法正常运行,导致备库发起了failover切换。

三、故障原因

Soft lockup:这个bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。

如下所示:系统message日志信息

内核参数kernel.watchdog_thresh(/proc/sys/kernel/watchdog_thresh)系统默认值为10。如果超过2*10秒会打印信息,注意:调整值时参数不能大于60。

Linux内核对于每一个cpu都有一个监控进程,在技术界这个叫做watchdog(看门狗)。通过ps –ef | grep watchdog能够看见,进程名称大概是watchdog/X(数字:cpu逻辑编号1/2/3/4之类的)。如果进程进入死锁或者进入死循环,长时间看门狗进程得不到调度,系统检测到进程占用cpu的时间超出特定的时间值后,会打印soft lockup告警,告警包含占用时长和进程名以及pid。

从本次的’soft lockup‘故障看,应该和系统网络进程有关(ping)。

参考文档:https://access.redhat.com/solutions/3615651

四、案例总结

此次系统’soft lockup‘的故障,经操作系统管理人员确认,是系统的bug引起。

KingbaseES V8R3 集群运维案例 --操作系统‘soft lockup’引起的failover切换的更多相关文章

  1. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  2. KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例

    案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...

  3. KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed

    案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...

  4. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  5. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

  6. KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构

    案例说明: 在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移. 适用版本: KingbaseES V8R3 当前数据库版本: TEST=# s ...

  7. KingbaseES V8R3集群维护案例之---pcp_node_refresh应用

    案例说明: 在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换.此文档对pcp_node_refresh工具做了应 ...

  8. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  9. KingbaseES V8R3集群维护案例之---在线添加备库管理节点

    案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...

  10. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

随机推荐

  1. Java Socket编程系列(一)开发一次性会话的Server和Client

    关于什么是Socket: A socket is one end-point of a two-way communication link between two programs running ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (200)-- 算法导论15.2 4题

    四.用go语言,对输入链长度为 n 的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点? 文心一言: 矩阵链乘法问题是一个经典的动态规划问题,其中给定一个矩阵链, ...

  3. win32 - 虚拟内存的一些介绍

    对32位Windows来说,其虚拟地址空间总数就是2的32次方,即4GB. 如果没有在引导时加上/3GB或/BOOTVA选项,Windows默认最大会分2GB给内核模式程序使用,2GB给用户模式程序. ...

  4. SQL Server初体验

    概述 基于SQL Server 2019 Developer免费版搭建一个本地的开发环境. 下载安装 安装文件下载地址:https://www.microsoft.com/zh-cn/sql-serv ...

  5. 关于RabbitMQ消费者预取消息数量参数的合理设置

    根据RabbitMQ官方文档描述,可以通过"预取数量"来限制未被确认的消息个数,本质上这也是一种对消费者进行流控的方法. 详见:https://www.rabbitmq.com/c ...

  6. SpringBoot 服务接口限流,搞定!

    来源:blog.csdn.net/qq_34217386/article/details/122100904   在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.限流可以认为服务降级的一种 ...

  7. go-ini解析ini文件

    文档 https://github.com/go-ini/ini https://ini.unknwon.io/docs/intro/getting_started go get -u gopkg.i ...

  8. 05、secs协议常见问题分析以及如何建立通信

    1.建立通信 在主机和设备之间发送SECS-II消息之前,必须首先"建立"通信.这是通过S1F13(建立通信请求)消息来完成的.这应该是在初始启动后或在长时间不通信之后发送的第一个 ...

  9. 【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成

    问题描述 在Azure Redis的导出页面,突然不能配置Storage Account的SAS作为授权方式. 那么是否可以通过AZ CLI或者是Powershell来实现SAS的配置呢? 问题解答 ...

  10. 【Azure Developer】在Azure Storage Account的两个Blob可以同步吗?可以跨订阅拷贝吗?

    问题描述 不同订阅下的Azure Storage Account中Blob资源可以同步吗? 解决方案 可以.通过Azure 官方推荐的Storage Account工具来完成 Copy/Paste 操 ...