看完这篇,DWS故障修复不再愁
摘要:本文详细梳理分析了DWS服务面临软硬件故障场景和对应的修复原理,希望借此能够让你对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故障修复不再愁。
看完这篇,DWS故障修复不再愁的更多相关文章
- APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了
APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了 彻底理解android中的内部存储与外部存储 存储在内部还是外部 所有的Android设备均有两个文件存储区域:"intern ...
- [转帖]看完这篇文章,我奶奶都懂了https的原理
看完这篇文章,我奶奶都懂了https的原理 http://www.17coding.info/article/22 非对称算法 以及 CA证书 公钥 核心是 大的质数不一分解 还有 就是 椭圆曲线算法 ...
- 看完这篇 Linux 权限后,通透了!
我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 . permission denied 反正我大概率见 ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?
简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...
- [转帖]看完这篇文章你还敢说你懂JVM吗?
看完这篇文章你还敢说你懂JVM吗? 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用 ...
- 看完这篇还不会 GestureDetector 手势检测,我跪搓衣板!
引言 在 android 开发过程中,我们经常需要对一些手势,如:单击.双击.长按.滑动.缩放等,进行监测.这时也就引出了手势监测的概念,所谓的手势监测,说白了就是对于 GestureDetector ...
- Mysql快速入门(看完这篇能够满足80%的日常开发)
这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...
- 看完这篇,还不懂JAVA内存模型(JMM)算我输
欢迎关注专栏[JAVA并发] 更多技术干活尽在个人公众号--JAVA旭阳 前言 开篇一个例子,我看看都有谁会?如果不会的,或者不知道原理的,还是老老实实看完这篇文章吧. @Slf4j(topic = ...
随机推荐
- 铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10)
视频以及图片修复技术是一项具有挑战性的AI视觉任务,它涉及在视频或者图片序列中填补缺失或损坏的区域,同时保持空间和时间的连贯性.该技术在视频补全.对象移除.视频恢复等领域有广泛应用.近年来,两种突出的 ...
- 关于Android Stuido2.3和Eclipse4.4
近3年没有做Android开发了,当时用是ECLISPE电脑配置2g,用的还可以. 现在又重新开始做安卓程序,发现大家都用AS了,作为技术人员,也就开始用了. (几年前AS已经发布,不过是0.x版本, ...
- 「CSP-2023」我曾璀璨星空,星月相伴,致远方,致过往。
Day -1 像往常一样去上学.虽然身在学校但感觉心还在比赛上.在一个上午课间准备去上厕所时遇见了信息老师.她在教我们班信息之前我的一些奖状的指导教师就是写的她,之前就认识了,每次碰到她都会朝我笑 ...
- 栩栩如生,音色克隆,Bert-vits2文字转语音打造鬼畜视频实践(Python3.10)
诸公可知目前最牛逼的TTS免费开源项目是哪一个?没错,是Bert-vits2,没有之一.它是在本来已经极其强大的Vits项目中融入了Bert大模型,基本上解决了VITS的语气韵律问题,在效果非常出色的 ...
- Chromium GPU资源共享
资源共享指的是在一个 Context 中的创建的 Texture 资源可以被其他 Context 所使用.一般来讲只有相同 share group Context 创建的 Texture 才可以被共享 ...
- np.array和np.ndarry 的区别
np.array和np.ndarray都是NumPy中用于创建多维数组的函数. np.ndarray是NumPy中的多维数组类,它是一种可变的数组,可以通过修改数组中的元素来改变其内容.使用np.nd ...
- Qt+FFmpeg播放mp4文件视频
关键词:Qt FFmpeg C++ MP4 视频 源码下载在系列原文地址. 先看效果. 这是一个很简单的mp4文件播放demo,为了简化,没有加入音频数据解析,即只有图像没有声音. 音视频源的播放可以 ...
- 【MySQL】MySQL中的锁
全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态. flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新 ...
- powerdesigner 生成sql语言
首先要确定的是自己已经准备好一个概念模型 在概念模型界面点击上方工具栏中的Tools->Generate logical data model.. 生成逻辑模型 同样的操作生成物理模型 Gene ...
- java如何导入导出excel
在Java中,可以使用多种方式导入和导出Excel文件.下面将详细介绍几种常见的方法及其实现步骤: 1. Apache POI库: Apache POI是一个开源的Java库,提供了许多类和方法用于处 ...