数仓备机DN重建:快速修复你的数仓DN单点故障
摘要:大规模分布式系统中的故障无法避免。当DN发生单点故障时,恢复手段有哪些,又是如何恢复的,本节重点介绍操作gs_ctl build是如何修复DN单点故障的。
本文分享自华为云社区《华为云数仓备机DN重建,快速修复DN单点故障!》,原文作者:welblupen。
1. 技术背景
GaussDB(DWS)的DN高可用架构为主、备、从备架构。即在分布式环境中,完整的集群数据采用分片技术分布在多个DN组上,每组DN承担一个数据分片,包括:一个主DN、一个备DN和一个从备DN。主和备各有一份完整的数据,从备上一般不存储数据,仅在备机故障时做数据的暂存,当备机故障恢复之后,为了保持集群数据的一致性,需要备机连接主机进行数据和xlog日志的拷贝。
2. 备机DN需要进行重建的场景
2.1. 主机发生单点故障之后,备机进行failover升主,原主降备,集群降级;待原主故障恢复后,可能会导致主备机WAL日志CRC校验失败,CM系统检测到该状态后会自动通过备机重建的方式进行自动备机重建。
2.2. 备机发生单点故障之后,备机状态变为unknown,集群降级,待备机故障恢复之后,需需要进行备机重建操作同主机同步数据。
3. 备机DN重建的操作分类
3.1. 增量重建: gs_ctl build -b incremental -Z datanode
用途:
增量build可修复常见的主机或实例故障导致的备机日志分叉问题,也可修复部分数据文件丢失的问题,在重建过程中发生主机异常,可以手动回退有损恢复。
过程:
- 获取差异文件:通过解析Xlog日志获取主备DN差异文件
- 备份与恢复:对主备差异文件进行严格进行原子化恢复和备份,过程中出错可恢复,排除错误后,可再次调用重入
- 传输文件:由备机创建指定(1-16)个线程从主机拉取差异文件
- 完成增量重建等待xlog日志落盘
分析:
增量重建是,根据Xlog日志计算主备DN差异文件,将文件发送给备DN,在备机数据没有损坏的情况下快速进行增量重建,代价较小。
3.2. 全量重建: gs_ctl build -b full -Z datanode
用途:
备机全量重建能够修复绝大多数数据和日志损坏或丢失的场景,但修复时间比增量build更长
过程:
- 获取差异文件:使用依据硬件调优的CRC-32C系列算法获取主DN上相应文件的CRC校验值,同时本地也进行对应操作,二者比较获得差异文件列表
- 备份与恢复:默认无原子化,但会尝试进行原子化恢复,忽略恢复结果成败
- 传输文件:由备机创建指定(1-16)个线程从主机拉取差异文件
- 完成增量重建等待xlog日志落盘
分析:
全量重建是一种以主DN文件为基准,备DN文件同其进行校验,如果备DN文件的某个文件块校验不一致,则主机将此文件块发给备DN。与全量清理重建相比较,拷贝的数据量和WAL日志量都更少,代价中等。
3.3. 全量清理重建: gs_ctl build -b fullcleanup -Z datanode
用途:
与full模式区别为:同步前需要清理DN主机的数据目录。能够修复绝大多数数据和日志损坏或丢失的场景,但修复时间比其他模式更长
过程:
- 清理备机数据文件:备机清空数据目录,保留配置文件
- 主机向备机传输全量镜像:主机使用单个线程将自己的数据目录除了配置文件外,全部发给备机
- 完成全量重建等待xlog日志落盘
分析:
全量清理重建是备机清空数据目录,保留配置文件,向主机发送全量重建请求,主机将自己的数据目录除了配置文件外,全部发给备机,重建后启动备机,代价较大。
4. 总结
备机DN重建功能主要目的是单点故障修复,备机重建方式按照实现分为全量重建,全量清理重建和增量重建,均和主DN进行交互。当DN出现单点故障时,操作人员应该根据实际损坏程度和资源消耗选择合适的重建方法进行备机的数据重建。
想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技~
数仓备机DN重建:快速修复你的数仓DN单点故障的更多相关文章
- 刚查了,Z3795不支持EPT,即WP8开发必须的SLAT,看来只能作为简单的WINDOWS备机了
刚查了,Z3795不支持EPT,即WP8开发必须的SLAT,看来只能作为简单的WINDOWS备机了,也就只能做做文档编辑,脚本编写之类的. 数据来源 http://ark.intel.com/zh-C ...
- Win7如何快速修复系统
Windows 7可能是微软迄 今为止最好的桌面操作系统,但是偶尔出现一些问题还是在所难免的.这里教你如何快速修复出现问题的Windows 7系统,每个操作系统都有重新安装的可能,Windows 7也 ...
- 如何快速求解第一类斯特林数--nlog^2n + nlogn
目录 参考资料 前言 暴力 nlog^2n的做法 nlogn的做法 代码 参考资料 百度百科 斯特林数 学习笔记-by zhouzhendong 前言 首先是因为这道题,才去研究了这个玩意:[2019 ...
- Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using
using Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using 2015-06-29 浏览 ...
- Eclipse 快速修复
Eclipse 快速修复 使用快速修复 在 Eclipse 编辑器中当你输入字母时,编辑器会对你输入的内容进行错误分析. Java 编辑器中使用 Java 语法来检测代码中的错误.当它发现错误或警告时 ...
- 在oracle11g中配置多个DataGuard物理备机
>> from zhuhaiqing.info 主机配置 alter system set DB_UNIQUE_NAME='starboss' scope=spfile; alter sy ...
- 自动清理DataGuard备机日志
>> from zhuhaiqing.info #!/usr/bin/bash #删除DataGuard备机归档日志备份 export ORACLE_HOME=/opt/oracle/pr ...
- 墨仓式进入2.0时代?爱普生商用墨仓式L4158试用
提起"墨仓式"打印机,相信现在已经没有人需要过多的解释,墨仓式打印机在打印市场占有率不断提高就是最佳佐证.为什么用户对于墨仓式这么认可,想必是墨仓式真正洞悉了他们的需求,解决了打印 ...
- CPU相关知识---物理CPU数、物理核数、逻辑核数、逻辑CPU数 ?
一.物理CPU数.物理核数.逻辑核数.逻辑CPU数 相互关系??? 物理CPU数 ---> 每个物理CPU对应物理核数 ---> (每个物理核数对应逻辑核数)物理CPU对应逻辑核数 --- ...
- /编写一个函数,要求从给定的向量A中删除元素值在x到y之间的所有元素(向量要求各个元素之间不能有间断), 函数原型为int del(int A ,int n , int x , int y),其中n为输入向量的维数,返回值为删除元素后的维数
/** * @author:(LiberHome) * @date:Created in 2019/2/28 19:39 * @description: * @version:$ */ /* 编写一个 ...
随机推荐
- gcd|最大公约数|欧几里得算法|欧几里得算法证明 一文说明白
gcd 最大公因数,也称最大公约数.最大公因子,指两个或多个整数共有约数中最大的一个.a,b的最大公约数记为 $ gcd(a,b) $ ,同样的,a,b,c的最大公约数记为 $ gcd(a,b,c) ...
- 产品代码都给你看了,可别再说不会DDD(十):CQRS
这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...
- 一个基于.NET7的开源DNS服务 DnsServer 的部署使用经验分享
前言 接上篇 docker-bind 的使用搭建了一个 dns 服务,本篇将介绍另外一款 DnsServer 的部署和使用,更专注,更轻量. 特点 基于 .NET 7 实现 ,支持 Windows.L ...
- 【pwn】[SWPUCTF 2021 新生赛]nc签到 --shell过滤字符
附件下载打开: import os art = ''' (( "####@@!!$$ )) `#####@@!$$` )) (( '####@!!$: ...
- 记一次在线客服系统用户遭勒索,索要茶水费事件的 Windbg 分析与应对
本文记录了几个月前,客户在使用在线客服系统过程中,遭到勒索威胁,索要茶水费 的事件.经过应对,快速的化解了攻击威胁,并继续安全使用至今. 讲故事 威胁次日,收到报警,服务器 CPU 使用率持续超过 8 ...
- 深入理解 BigBird 的块稀疏注意力
引言 基于 transformer 的模型已被证明对很多 NLP 任务都非常有用.然而,\(O(n^2)\) 的时间和内存复杂度 (其中 \(n\) 是序列长度) 使得在长序列 (\(n > 5 ...
- C/C++ 通过SQLiteSDK增删改查
SQLite,作为一款嵌入式关系型数据库管理系统,一直以其轻量级.零配置以及跨平台等特性而备受青睐.不同于传统的数据库系统,SQLite是一个库,直接与应用程序一同编译和链接,无需单独的数据库服务器进 ...
- 关于点赞业务对MySQL和Redis和MongoDB的思考
点赞 在我个人理解中,点赞业务比较频繁,很多人业务可能都会有这个,比如:博客,视频,文章,动态,评论等,但是不应该是核心业务,不应该大量地请求MySQL数据库,给数据库造成大量的资源消耗,MySQ ...
- PLC 和Modbus/串口设备现场总线通信及短信报警解决方案
在实现 Modbus 设备与 PROFIBUS DP 协议 PLC 通讯的同时可以在手机端实时的接收报警短信,使客户足不出户了解设备与 PLC 的状态,及时处理现场中的问题. 系统组成 Modbus ...
- WPF应用开发之附件管理
在我们之前的开发框架中,往往都是为了方便,对附件的管理都会进行一些简单的封装,目的是为了方便快速的使用,并达到统一界面的效果,本篇随笔介绍我们基于SqlSugar开发框架的WPF应用端,对于附件展示和 ...