GaussDB (DWS) 集群管理系列:CM组件介绍(核心功能)
GaussDB (DWS) 集群管理系列:CM组件介绍(架构和部署形态)》所介绍基本结构的基础上,展示 CM 组件的核心功能,包括状态查询、集群起停、故障恢复和异常检测等。这些功能结合告警、重启、倒换、隔离等手段,与各类实例组件的主备数据同步、倒换、重建等机制一起,构建数据库的高可用(HA)能力,实现集群的对外连续性。
通过 cm_ctl query -Cv
可以查看当前集群的整体状态和各实例状态(详细参数说明本文不做介绍,可通过执行 cm_ctl --help
查看)。以下图为例,整个数据库集群部署了
-
3 个 CN,分别是 5001, 5002, 5003;
-
1 组主备 GTM,分别是 1001, 1002
-
三组 DN,主 DN 分别对应 6001, 6003, 6004
此外还可看出
-
cluster_state
属性为normal
,说明整个集群属于正常状态 -
balanced
属性为Yes
,说明 GTM 和 DN 均未发生主备倒换 -
DN 6001, 6002, 3002 为 1 个主备从结构(6003 和 6005 类似)
发生过主备倒换的集群,状态参考下面示例图(只显示部分状态,其中6001 和 6002 发生主备倒换;balanced
显示 No
;集群仍然是 Normal
状态)。
如果有实例发生故障,状态参考下面示例图(只显示部分状态,其中 6001 被手动停止,6002 升主;集群处于 Degraded
状态,表明集群仍可继续提供服务)。
Unavaliable
集群的启动和停止可分为集群级、节点级和实例级等。
-
集群级:启动和停止集群中的所有节点和实例
-
节点级:启动和停止集群中的某个节点
-
实例级:启动和停止集群中的某个节点的某个实例
节点内的启动顺序为:
① 系统定时任务拉起 OM Monitor 进程
② OM Monitor 进程拉起 CM Agent 进程
③ CM Agent 进程拉起节点内的 CN,DN,GTM,CM Server 等部署的实例进程
以集群级起停为例,cm_ctl 命令和输出示例见下图。
数据库故障恢复主要指实例发生明确的故障时,CM 组件根据探测到的状态进行仲裁,从而尽可能恢复集群可用性的过程。
单节点故障场景在生产环境中不可避免
以某个主 DN 故障为例,一次典型的仲裁流程包括:
① CM Agent 1探测DN主实例并发现故障
② CM Agent 1持续上报实例故障信息至CM Server
③ CM Server执行仲裁流程,选择DN备机升主
④ CM Server下发升主命令至CM Agent 2
⑤ CM Agent 2对实例执行升主操作
常见故障类型有(限于篇幅,本文不做具体分析):
-
磁盘故障
-
磁盘损坏
-
慢盘
-
RAID卡损坏
-
-
网络故障
-
断网
-
闪断
-
时延
-
丢包
-
-
下电故障
-
节点下电
-
节点重启
-
-
操作系统故障
-
时间跳变
-
IO过载
-
磁盘空间不足
-
文件句柄耗尽
-
文件权限出错
-
进程数耗尽
-
进程异常退出
-
进程僵死
-
-
其它故障
-
CPU/内存 损坏等
-
对于不同的实例故障,CM 恢复手段(不同场景下恢复时间 30 秒到 30 分钟不等)主要包括:
-
CN 故障
-
DDL 语句无法执行,DML 语句不受影响
-
通过将故障 CN 剔除,可保障 DDL 语句不受影响
-
仅支持集群内 CN 个数大于 3,且 1 个 CN 发生故障时剔除
-
-
DN 故障
-
单点故障可自动恢复
-
主 DN 故障时,仲裁备 DN 升主继续提供服务
-
备 DN 故障时,主 DN 将日志和数据同步至从备,业务不受影响
-
-
主 GTM 故障
-
备 GTM 升主后继续提供服务
-
-
主 CM Server 故障
-
备 CM Server 接受多数派 CM Agent链接,升主后继续提供服务
-
CM 组件包含异常检测流程,可用于识别和处理网络不稳定、磁盘 IO 挂死、进程/线程僵死、进程频繁退出、实例状态时好时坏等场景,提高集群的稳定性和可用性。
以 DN 短链接检测为例,CM Agent 按照固定时间间隔与 DN 实例新建链接。如果与某个主 DN 链接失败或通过新链接无法执行 SQL 语句,则认为该 DN 发生 1 次 Hang 异常。如果多次出现异常,则会触发 Hang 检测机制,将该 DN 实例杀死并执行主备切换。目前常见的异常检测项有:
-
短链接建立
-
通过短链接执行 SQL 语句
-
IO 挂死
-
内存占用异常
注:长短链接的概念是相对的。CM Agent 检测实例状态时也会与实例建立链接,通常情况下不会释放,因此称为“长链接”;异常检测流程建立链接并执行 SQL 后随即释放,因此称为“短链接”。
- 点赞
- 收藏
- 关注作者
评论(0)