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

网友投稿 1625 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 等部署的实例进程

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

以集群级起停为例,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小时内删除侵权内容。

上一篇:ser-u服务器安装和使用(创建ftp服务器)
下一篇:【阿里MySQL面试题】内部临时表
相关文章