探索BI系统搭建的必要性与AI技术的应用潜力
1708
2022-05-28
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 状态,表明集群仍可继续提供服务)。
如果一组 DN 主备从多个发生故障,则状态参考下面示例图(只显示部分状态,其中 6001 被手动停止,6002 磁盘故障无法被拉起;集群处于 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 后随即释放,因此称为“短链接”。
EI企业智能 数据仓库服务 GaussDB(DWS) Gauss AP
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。