共计 2921 个字符,预计需要花费 8 分钟才能阅读完成。
摘要:本文将梳理 Roach 全量复原的整体流程,形容 Roach 集群全量备份场景的运行机制。
数据备份复原是爱护数据安全的重要伎俩之一。Roach 工具反对多种备份复原类型,例如集群级的物理备份,表级备份的逻辑备份;别离反对 DISK/NBU/OBS/EISOO 几种备份介质;反对双集群间的容灾计划等,从而提供数据的可靠性保障机制。
Roach 反对如下性能:
一、简介
本文将梳理 Roach 全量复原的整体流程,形容 Roach 集群全量备份场景的运行机制,PITR、增量备份、断点续做、双集群、表级备份等性能不做论述。
Roach 的集群级备份采纳的是物理备份,即通过物理文件拷贝的形式对数据库进行备份,通过备份的数据文件及日志等文件,数据库能够进行完全恢复。全量备份则是将以后工夫点数据库中所有的数据进行备份。当然,全备份能够备份整块硬盘、整个分区或某个具体的目录。全备份的益处是数据恢复不便,因为所有的数据都在同一个备份中,所以只有复原全备份,所有的数据都会被复原。
其长处是:物理备份速度快,通过正当布局,能够低成本进行备份和复原;
其毛病是:相较于增量备份备份工夫较长。
二、备份架构
2.1 roach 备份全局流程图
Roach 备份采纳生产者 - 消费者模式,下图展示了备份流程各个线程及 IO 交互图。exec 线程作为生产者,同时为加重 exec 线程的压力,减少并行的 reader 线程读取小文件;sender 线程作为消费者;两头则是通过一个 256MB(可设置)的大 buffer 连接。
GaussDB 内核的备份组件为 GaussRoach.py 和 gs_roach,需在集群内拉起备份工作。
2.2 调度流程
GaussRoach.py:Roach 单集群全量备份入口为 GaussRoach.py。每次命令行输出“python GaussRoach.py –t backup…”后,roach 的 python 语言模式就开始运行了。
任意节点均可作为主节点拉起 GaussRoach.py,而后每个节点都启动 gs_roach 过程负责本节点备份,各节点并行备份,节点内各 DN 并行备份。
2.3 备份具体流程
2.4 接口调用
实现数据备份压缩后,须要将压缩文件传送到远端存储介质,实现存储介质与 Roach 备份流程松耦合,第三方介质不必关注 Roach 的备份流程,只须要依照接口实现即可实现与 Roach 的对接。同时 Roach 流程实现也不用关注底层存储介质实现,缩小了不必要的分支判断。
2.5 全量备份的内容
依据 Gauss 数据库的性能构造,全量备份依照以下程序备份所须要的文件:
· 数据库相干的配置文件。
· 行存全副数据:GaussDB A 数据库反对行存。
· xlog 日志文件:Roach 反对在线业务的备份,则通过备份 xlog 日志文件可在复原时将备份期间的业务 Redo,保证数据一致性。
· 列存全副数据:GaussDB A 数据库反对列存。
· 备份的数据依照每个节点为单位进行备份,所以每个节点都只存储以后节点的备份。
2.6 流程剖析
联合 Roach 工具备份调度流图和日志信息剖析如下:
整个备份流程的下层代码为 python 代码,即 GaussRoach.py,master 过程的创立和 agent 过程的拉起都是由 python 侧实现的。备份的配置和参数局部查看过程同样是由 python 侧代码实现。各个节点 agent 过程被拉起之后,C 侧代码进行具体的业务操作。C 侧代码运行起来之后,能够通过 ps ux 到 gs_roach 过程查看过程状态。
· 只有没有走到③,备份是没有开始的;· ②:metadata 清单即此次备份的文件清单;
· 备份时的百分比,并不代表工夫维度的备份进度,只代表流程进度;
· 只有没有打印出④,阐明备份还没有完结,即便进度显示是 100%;
· ⑤:在此参数开启后,所有的 ddl 语句会在逻辑上执行,对物理文件的操作不会立刻失效;
· ⑥:create barrier 之后的数据变动,将通过 xlog 记录来备份;
· ⑨:敞开提早 DDL 参数后,所有被提早的对物理文件的操作,将会立刻执行;
2.7 备份集的存储模式
· 备份的数据会进行压缩后写入到 rch 文件后存储到备份门路下的实例文件夹下,且每个 rch 文件大小是 4GB;
· 寄存门路:[存储门路]/roach/backupkey/hostname/,其中存储门路为备份命令中指定的 –media-destination 的值,backupkey 为以后备份开始的工夫作为标识某个特定的备份集,hostname 为以后节点的 hostname。内容如下:
· Roach 压缩文件 *.rch 的内部结构:
· 管制备份的元数据,元数据存储门路为备份命令中指定的 –metadata-destination 的值,其门路下内容如下:
· ini 文件中记录着每次备份的元信息
{“BackupCount”:1,”BackupDetails”:[{“S_NO”:1,”BackupKey”:”20190814_163625″,”BackupType”:”FULL”, …….}
· roach 文件夹存储的为特定某个备份的元信息
2.8 日志回收
日志是查看代码运行状态和谬误定位的重要文件,Roach 内核的回收日志只能保障一个日志回收点:$GAUSSLOG/roach/。
Roach 日志的治理可分为三类:
· agent 文件夹保留了内核侧生成的日志;
· controller 文件夹保留了 python 侧的调度信息;
· frame 文件夹保留了双集群容灾过程中 python 侧代码生成的日志。
(1)内核日志
· 缺省状况下,内核日志仅记录正告及以上级别的音讯。Roach 工具反对的日志级别,及默认只有 ERROR 和 Warning 级别日志。执行命令可开启 INFO 级别日志,–logging –logging-level INFO
· 如果备份或复原操作失败,可查看控制台中显示的谬误汇总,辨认产生谬误的主机。
(2)系统日志
· Linux 记录零碎事件至系统日志中。Roach 工具将 FATAL 及 ERROR 音讯记入雷同的系统日志文件。例如,在运行 SUSE Linux 操作系统的设施上,Roach 写日志到 /var/log/messages 文件。
(3)平安日志
· 用户能够保留所有流动信息到文件中。平安日志文件包含工夫戳,以及备份,复原和生成文件的详细信息。平安日志文件的文件名称格局如下:roach-agent-security-YYYY-MM-DD_HHMMSS.log。
(4)控制器日志
· 控制器日志为 python 脚本运行日志,用户能够保留控制器日志信息到文件中。
· 控制器日志文件的格局如下:
roach-controller-YYYY-MM-DD_HHMMSS.log。例如:roach-controller-2015-12-15_203415.log 遇到故障时,联合打屏信息和相应地位的日志文件,能够疾速定位到出错地位,进步解决问题效率。
三、总结
备份能解决数据失落的找回、数据损坏的找回和历史数据找回等性能,是构建容灾计划的根底,如何疾速、无效实现大数据备份性能是这个时代一个十分重要的课题。
本文分享自华为云社区《数仓 GaussDB(DWS) 全量备份总结》,原文作者:不熄火。
点击关注,第一工夫理解华为云陈腐技术~