乐趣区

关于GaussDB:一文介绍备机重建各种方法的实现机制

摘要: 本文将介绍备机重建各种办法的实现机制,并联合利用场景剖析,以及对新增参数的应用倡议,以期获得最佳利用成果。

本文分享自华为云社区《先码再看,一文介绍备机重建各种办法的实现机制》,原文作者:Victor_NK。

1 需要介绍

GaussDB(DWS) 的实例在运行过程中不免产生故障,引起实例谬误或无奈启动,此时就须要进行备机重建工作。备机重建性能次要目标是修复实例单点故障,此外,还可用于集群装置的初始化、集群扩容的元数据同步、节点故障后的温备替换等等场景。本文将介绍备机重建各种办法的实现机制,并联合利用场景剖析,以及对新增参数的应用倡议,以期获得最佳利用成果。

2 设计方案

2.1 性能分类

备机重建依照实现形式不同分为:全量重建和增量重建。

备机重建须要在待修复主机上运行 gs_ctl build 工具。在备机重建过程中,均须要和主 DN 建设连贯进行数据的交互拜访。在 gs_ctl 工具的命令行参数中通过–b=mode 参数,能够指定重建 DN 备机的模式。目前 mode 反对的取值包含以下四种:

1. full: 全量重建,通过获取主备之间全量镜像差别的形式从新同步 DN 主机的数据目录。
2. fullcleanup: 全量重建,通过全量镜像的形式从新同步 DN 主机的数据目录。与 full 模式区别为:同步前须要清理 DN 备机的数据目录,保留配置文件。主机将本人的数据目录除了配置文件外,全副发给备机。
3. incremental: 增量重建,通过解析 WAL 日志获取主备 DN 差别的数据进行增量修复备 DN。
4. auto(不指定 -b): 先增量重建,增量重建失败后进行全量重建。

理论生产环境中,具体应用哪种形式,就须要看需要与利用场景所定。

2.2 利用场景

备机重建依照性能场景不同分为:DN Build DN、CN build CN、CN Build DN。各 Build 的利用场景的特点如下:

表 1 Build 的利用场景

抉择何种修复形式最优,须要了解该模式的工作原理,并依据利用场景正当地设置相干参数。

3 实现过程

3.1 fullcleanup mode: 基于推送形式

fullcleanup mode 是一种推送模式,在该模式下,由主机来控制数据流程(我给啥你接啥),在不关怀备机损坏水平和范畴的状况下,须要主机将本人的数据目录配置文件外的全副数据传送给备机,重建后启动备机。

其次要工作过程如图 1 所示:

图 1 fullcleanup build 工作过程

fullcleanup mode build 的特点很显著,备机将失去彻底重建。但毛病也很显著:主机须要 Copy 实例上全副的数据和 XLOG 日志文件,占用较高的网络传输带宽,对运行中的业务有肯定影响。备机没有对修复前数据进行原子化治理,过程中一旦失败将无奈复原到原备机。如果全量 Build 过程中因为偶发网络等起因故障失败,将半途而废,再次 Build 数据须要从头再来。

所以该形式是最激进的最初选项,是在其它重建形式均有效的时候的一种抉择。

3.2 full mode: 基于文件校验获取差别的拉取形式

full mode 是一种拉取模式,在该模式下,由备机来控制数据流程(我须要啥拿啥),仅须要补齐主备之间的差别数据。但前提是备机须要通晓本人与主机差别。full mode 是间接从文件比拟进行切入,主、备机能够同时多线程(并行、并发,晋升性能)在各自本地上对数据目录文件进行遍历,获知文件有无、大小、文件校验计算等信息;通过这些信息,一直对计算结果 File Map List 进行合并筛选,取得最小的差别文件汇合,缩小数据 / 文件的拷贝数量。备机既能够仅备份备机的差别文件作为备份集(满足可靠性),又能够仅拉取主机的差别文件来更新(晋升性能);备机能够采纳多线程(并发,晋升性能)同时从主机拉取文件。

其次要工作过程如图 2 所示:

图 2 full build 工作过程

full mode build 的特点是充分利用备机已有的文件,缩小数据同步的数量,能够不便地进行备份和复原、和并行管制。但须要破费肯定工夫的本地 IO 和计算为代价。与 fullcleanup mode 相比拟在无资源瓶颈条件下通常速度更快(可取得数倍的晋升),可靠性上更平安,是全量 build 的首选。

3.3 incremental mode: 基于 Xlog 剖析获取差别的拉取形式

incremental mode 是另外一种拉取形式。实用于主备双主等因日志造成的不统一场景。增量重建是一种以主 DN 文件和备 DN 的 WAL 日志为基准,依照多退少补的准则对备 DN 文件和文件块进行修复。与全量重建相比拟,拷贝的粒度、数据量和 WAL 日志量都更少,代价更小。

其次要工作过程如图 3 所示:

图 3 incremental build 工作过程

incremental mode build 只实用于主备双主等因日志造成的不统一场景。备机数据文件损坏、数据目录失落等故障通过增量重建的形式无奈修复,此时可通过全量重建的形式从新修复备机。

4 思考总结

随着备机重建性能的性能晋升和可靠性的加强,build 新增了局部参数,在应用时候值得理解和留神。

4.1 -T THREAD-NUMBER

实用于拉取形式的 full 和 incremental 模式。其性能是在备机侧指定与主机连贯个数,用于多线程并发进行计算和与文件拉取。

通常状况下默认值为 4 已可取得较好的性能,在资源容许的状况下,倡议应用更高的线程数。但需注意的是增大线程数目能够晋升 Build 的性能,缩短其重建工夫,但相应的也减少了网络连接、CPU、和网络 IO 的耗费,在应用时候须要思考资源情况,适合设置。

4.2 -u

实用于反对原子化性能的 full 和 incremental 模式。其性能是 Build 过程中将不进行原子化复原和备份,适宜于空间有余或无需备份的须要场景中。

Incremental build 默认是原子化,过程中严格进行原子化复原和备份,过程中出错可复原,排除谬误后,可再次调用重入。因为 Full Build 的波及的数据文件量大,默认无原子化,但会尝试进行原子化复原,疏忽复原后果成败,仅在备机拉取主机上的文件占其总量 20% 内进行备份。在应用时最好明确指出须要或者不须要原子化性能。

4.3 -B –backupdir=DIR

实用于反对原子化性能的 full 和 incremental 模式。其性能是 Build 过程中将从指定的门路下进行备份集的复原和备份。适宜于强高牢靠需要场景,在 Build 胜利之前可放弃备份的原子化,防止原始备份失落。

须要留神的是,用户指定备份集门路的磁盘残余空间应大于 DN 实例数据目录大小。且备份门路下放弃空白或者是本节点的数据集,无关数据将会造成备份集生效,从新生成的备份集会让原始数据正本有失落的危险。除 pg_rewind_bak 门路外,用户指定备份集门路的应与备机实例工作门路隔离。

想理解 GuassDB(DWS) 更多信息,欢送微信搜寻“GaussDB DWS”关注微信公众号,和您分享最新最全的 PB 级数仓黑科技~

点击关注,第一工夫理解华为云陈腐技术~

退出移动版