GaussDB (DWS) 集群管理系列:CM组件介绍(核心功能)

举报
CloudGanker 发表于 2020/12/14 23:17:49 2020/12/14
【摘要】 集群管理 CM 组件与各类实例的主备数据同步、倒换、重建等机制高度融合,通过告警、重启、倒换、隔离等手段,赋予数据库实例故障恢复及自愈的高可用(HA)能力,保证数据的可靠性和完整性,最终实现集群对外的业务连续性。

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 类似)

FBB53162-9DE5-40E4-914C-A10AB874C539.png

发生过主备倒换的集群,状态参考下面示例图(只显示部分状态,其中6001 和 6002 发生主备倒换;balanced 显示 No;集群仍然是 Normal 状态)。

3539B319-7C8E-4CF1-95DC-4861803529FF.png

如果有实例发生故障,状态参考下面示例图(只显示部分状态,其中 6001 被手动停止,6002 升主;集群处于 Degraded 状态,表明集群仍可继续提供服务)。

912DF6DA-0CFD-443C-B711-1B60933CAE04.png

如果一组 DN 主备从多个发生故障,则状态参考下面示例图(只显示部分状态,其中 6001 被手动停止,6002 磁盘故障无法被拉起;集群处于 Unavaliable 状态,无法提供服务)。

C720E9AF-D318-429B-9A76-155A707FFC71.png

启动和停止

集群的启动和停止可分为集群级、节点级和实例级等。

  • 集群级:启动和停止集群中的所有节点和实例

  • 节点级:启动和停止集群中的某个节点

  • 实例级:启动和停止集群中的某个节点的某个实例

节点内的启动顺序为:

① 系统定时任务拉起 OM Monitor 进程

② OM Monitor 进程拉起 CM Agent 进程

③ CM Agent 进程拉起节点内的 CN,DN,GTM,CM Server 等部署的实例进程

以集群级起停为例,cm_ctl 命令和输出示例见下图。

0BD7284E-A6C9-40BE-89D2-504A93ED510C.png

故障恢复

数据库故障恢复主要指实例发生明确的故障时,CM 组件根据探测到的状态进行仲裁,从而尽可能恢复集群可用性的过程。

单节点故障场景在生产环境中不可避免

以某个主 DN 故障为例,一次典型的仲裁流程包括:

① CM Agent 1探测DN主实例并发现故障

② CM Agent 1持续上报实例故障信息至CM Server

③ CM Server执行仲裁流程,选择DN备机升主

④ CM Server下发升主命令至CM Agent 2

⑤ CM Agent 2对实例执行升主操作

7626452E-5B80-4A7E-980F-29404F57CAC8.png

常见故障类型有(限于篇幅,本文不做具体分析):

  • 磁盘故障

    • 磁盘损坏

    • 慢盘

    • 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 挂死

  • 内存占用异常

07444417-5716-4066-A2BB-F35285CE2A7E.png

注:长短链接的概念是相对的。CM Agent 检测实例状态时也会与实例建立链接,通常情况下不会释放,因此称为“长链接”;异常检测流程建立链接并执行 SQL 后随即释放,因此称为“短链接”。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。