案例说明:

在国产中标麒麟系统生产环境中,监控发现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. 使用Python读取nc数据

    在地学领域,nc 格式的文件可谓随处可见,这种文件可以存储多维数字矩阵,同时又封装了自描述信息(例如经纬度.高度层.时间戳.单位等),因此使用起来十分方便,不用担心数据和描述信息分离而导致数据不可用. ...

  2. OsgEarth开发笔记(二):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(中)

    上一篇:<OsgEarth开发笔记(一):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(上)>下一篇:敬请期待-   前言  上一篇编译了osg和osgCurl ...

  3. 项目实战:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、支持大量实时显示下位机数据)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111660400长期持续带来更多项目与技术分享, ...

  4. 像闪电般击碎天空吧——快速轻量化模型之 SDXL-Lightning

    SDXL-Lightning 是一个由 ByteDance(字节跳动) 开发的文本到图像的生成模型,其主要贡献在于其高速的生成能力和轻量化的设计. 模型的特点 快速生成:SDXL-Lightning ...

  5. Java JVM——3.运行时数据区概述及线程

    运行时数据区概述 在JVM 中的位置 内部划分 当我们通过前面的:类的加载 → 验证 → 准备 → 解析 → 初始化 这几个阶段完成后,执行引擎就会对我们的类进行使用,同时执行引擎将会使用到我们的运行 ...

  6. Java package(包) +import 关键字(2)

    1 package com.bytezero.exer; 2 3 import java.lang.reflect.Field; 4 5 //import java.util.ArrayList; 6 ...

  7. GitHub访问地址映射更新的时候刷新DNS

    1.windows系统 上设置地址映射 Window系统本地可以安装 Git Bash 方便本地管理仓,或下载Git 上的代码,在访问Git的时候经常出现Git访问主页加载不了等问题.需要设置在本地设 ...

  8. go程序在mac下的交叉编译

    主页 微信公众号:密码应用技术实战 博客园首页:https://www.cnblogs.com/informatics/ 背景 go语言的一大优势就是跨平台,go语言是编译型语言,与Java.C#等语 ...

  9. Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld

    绝了,坑是真 nm 的多,官方给的文档里到处都是坑. 用的环境 ObjectCRX,以下简称 objcrx. #1 安装环境 & 参考文档的大坑 #1.1 Caxa 提供的文档和环境安装包 首 ...

  10. Pod中断预算 PodDisruptionBudget(PDB)

    PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护.升级或其他操作时,系统中的Pod不会被意外中断或终止.PDB提供了一种机制,通过限制在给定时 ...