写点什么

看完这篇,DWS 故障修复不再愁

  • 2023-05-22
    广东
  • 本文字数:2167 字

    阅读完需:约 7 分钟

看完这篇,DWS故障修复不再愁

本文分享自华为云社区《GaussDB(DWS)故障修复系统性介绍》,作者: 闻鲜生。


DWS 是一个分布式架构的 MPP 集群,物理部署上涉及数百数千台主机和对应的磁盘,以及这些主机所在的大规模分布式高速组网环境。在逻辑上,MPPDB 包括 CM、GTM、CN、DN 各种实例组件的配合工作。因此 DWS 的故障场景较多,不过我们提供了针对各种故障场景的系统性修复方案。通过此文可以了解 DWS 服务面临的故障场景和对应的修复方案。

硬件故障场景


1、可修复故障:主要是指硬件故障后可以修复,并且不会造成数据损坏或者丢失,比如内存条故障更换,raid 组内磁盘故障更换,主机断电重启等。这种故障场景下,等待硬件故障恢复后,上面的数据库实例会自动启动并恢复。


2、磁盘故障:包括磁盘故障和 raid 组故障,可能导致 CN,DN 数据损坏或者丢失。这种故障场景下,等待硬件故障修复后,需要对上面的 CN 实例做元数据修复,DN 实例做数据修复,CM,GTM 实例做配置修复。


3、主机故障:包括系统盘损坏,其他硬件故障导致的主机无法启动等,会导致该主机上部署的软件和数据丢失。这种故障场景下,则需要更换主机,使用新主机替换故障主机,需要在新主机上重装数据库软件,重建上面的数据库实例。

软件故障场景


DWS 逻辑上包括 OM,CM,GTM,CN,DN 六种类型的实例组件,每类组件提供的功能不动,配置的数量也不同,但是共同配合,支撑 DWS 的运维和业务功能。如下是 DWS 服务的一种简单部署拓扑图(其中 OM 属于静态工具因此不再列出,为了拓扑简洁性 DN 从备也未列出):



其中硬件故障最终体现到 DWS 数据库实例故障上,DWS 集群修复也是通过修复每类故障实例来进行的,每类实例的修复条件和修复思路如下:


  • 集群管理组件(CM)cm_server:主备模式,主备至少有一个正常的才能修复。主要修复配置,以对端为模板重建故障实例。cm_agent:每个节点都部署一个 cm_agent,原则上只要有一个正常的 cm_agent 就能修复。主要修复配置,以正常的 cm_agent 为模板重建故障实例。

  • 全局事务管理(GTM):主备模式,主备至少有一个正常的才能修复。主要修复配置和少量数据(xid,序列等),以对端为模板重建故障实例。

  • 协调节点(CN):多主多活模式,每个节点可部署一个 CN 实例,整个 DWS 集群最多部署 20 个 CN 实例。只要有一个正常的 CN 就能修复。主要修复配置和元数据,以正常的 CN 为模板重建故障实例。

  • 数据节点(DN):多切片模式,最多支持 2048 个数据切片。每个数据切片又包括主机,备机,从备三副本。每个 DN 切片主备从只能故障一个。主机或备机故障以对端实例为模板修复故障实例配置和数据。从备故障以主机实例为模板修复故障实例的配置。

故障修复场景


结合硬件故障场景和软件故障场景,DWS 支持的故障修复主要包括:DN 主备 build,实例修复,节点修复(温备)

DN 主备 build


DN 主备副本通过 WAL 实时同步数据,由 CM 来自动完成 DN 主备实例的状态监控、主备冲裁、主备切换及主备 build。如果主 DN 所在机器发生故障,CM 自动完成 DN 主备切换(备机升主,主机降备),如果故障恢复后,CM 会自动做 DN 主备数据同步(build)来重建故障备机。该场景主要包括机器宕机重启,更换内存条等,是最常见的故障场景也是最简单的故障场景,DWS 已经支持自动化处理。


实例修复


实例修复主要指相对于“DN 主备 build”更复杂的故障场景,该故障场景主要是指某个机器(或多台机器)发生实例级别故障,实例范围包括 CM、GTM、CN、DN 等实例,故障范围主要包括实例的配置或者数据发生损坏或者丢失,但是故障机器的 OS 系统和 DWS 数据库软件还是正常的。该故障场景主要包括机器数据盘,raid 组损坏,更换磁盘等。


典型的故障场景和修复示意图如下:



该故障场景 DWS 已经不能做自动化修复,但是提供了一键式修复工具 gs_replace,需要运维人员分析故障场景,预估修复耗时,然后在业务空闲时间窗进行修复。


CM、GTM 主要修复配置,秒级修复,对业务和系统负载影响很小;CN 涉及元数据重建,耗时与表数量正相关,并且在修复后期会短暂锁集群做元数据追增,阻塞用户 DDL 业务;DN 涉及数据重建,耗时与数据量正相关,修复过程中不影响业务,但会消耗系统的网络和 IO 资源。

节点修复


节点修复主要处理更加复杂的故障场景,该故障场景主要是指某个机器(或多台机器)发生整机故障,如 CPU、内存故障,OS 系统损坏导致的机器无法启动。


该故障场景修复思路如下:


1、确认故障范围,包括故障机器,影响的数据库实例。


2、故障机器断电下网。


3、重新准备一台新机器,新机器软硬件规格要和故障机器一样。


4、把新机器的主机名和 IP 修改成故障机器一样,并加入到 DWS 集群网络内。


5、通过 DWS 修复工具在新机器上重建故障机器上的软件、配置和数据。


温备


温备处理的故障场景和节点修复一样,主要是修复方式不一样,温备主要适用于云上场景或者有机器富裕的用户。


主要使用场景如下:


1、针对 N 台主机的 DWS 集群,提前规划 M 台机器作为温备机器,温备机器软硬件规格和 DWS 集群机器一样。并把温备机器也加入到 DWS 集群网络环境内。


2、如果 DWS 集群内某台机器发生了硬件故障且无法修复。


3、把故障机器断电并下网。


4、从温备机器中任找一台机器,然后使用 DWS 修复工具在温备机器上重建故障机器上面的软件、配置和数据。



本文详细梳理分析了 DWS 服务面临软硬件故障场景和对应的修复原理,希望借此能够让你对 DWS 的集群故障修复有个全面深入的了解。具体的使用说明和操作步骤可参见 DWS 产品文档,从此对 DWS 故障修复不再愁。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
看完这篇,DWS故障修复不再愁_数据库_华为云开发者联盟_InfoQ写作社区