数据备份恢复是保护数据安全的重要手段之一。Roach工具支持多种备份恢复类型,例如集群级的物理备份,表级备份的逻辑备份;分别支持DISK/NBU/OBS/EISOO几种备份介质;支持双集群间的容灾方案等,从而提供数据的可靠性保障机制。
Roach支持如下功能:
本文将梳理Roach全量恢复的整体流程,描述Roach集群全量备份场景的运转机制,PITR、增量备份、断点续做、双集群、表级备份等功能不做阐述。
其优点是:物理备份速度快,通过合理规划,可以低成本进行备份和恢复;
Roach备份采用生产者-消费者模式,下图展现了备份流程各个线程及IO交互图。exec线程作为生产者,同时为减轻exec线程的压力,增加并行的reader线程读取小文件;sender线程作为消费者;中间则是通过一个256MB(可设置)的大buffer衔接。
GaussDB内核的备份组件为GaussRoach.py和gs_roach,需在集群内拉起备份任务。
GaussRoach.py:Roach单集群全量备份入口为GaussRoach.py。每次命令行输入“pythonGaussRoach.py–tbackup…”后,roach的python语言模式就开始运行了。
任意节点均可作为主节点拉起GaussRoach.py,然后每个节点都启动gs_roach进程负责本节点备份,各节点并行备份,节点内各DN并行备份。
根据Gauss数据库的功能结构,全量备份按照以下顺序备份所需要的文件:
·行存全部数据:GaussDBA数据库支持行存。
·xlog日志文件:Roach支持在线业务的备份,则通过备份xlog日志文件可在恢复时将备份期间的业务Redo,保证数据一致性。
·列存全部数据:GaussDBA数据库支持列存。
·备份的数据按照每个节点为单位进行备份,所以每个节点都只存储当前节点的备份。
结合Roach工具备份调度流图和日志信息分析如下:
整个备份流程的上层代码为python代码,即GaussRoach.py,master进程的创建和agent进程的拉起都是由python侧完成的。备份的配置和参数部分检查过程同样是由python侧代码完成。各个节点agent进程被拉起之后,C侧代码进行具体的业务操作。C侧代码运行起来之后,可以通过psux到gs_roach进程查看进程状态。
·只要没有走到③,备份是没有开始的;·②:metadata清单即此次备份的文件清单;
·只要没有打印出④,说明备份还没有结束,即使进度显示是100%;
·⑤:在此参数开启后,所有的ddl语句会在逻辑上执行,对物理文件的操作不会立即生效;
·⑥:createbarrier之后的数据变化,将通过xlog记录来备份;
·⑨:关闭延迟DDL参数后,所有被延迟的对物理文件的操作,将会立即执行;
·备份的数据会进行压缩后写入到rch文件后存储到备份路径下的实例文件夹下,且每个rch文件大小是4GB;
·Roach压缩文件*.rch的内部结构:
·控制备份的元数据,元数据存储路径为备份命令中指定的--metadata-destination的值,其路径下内容如下:
·ini文件中记录着每次备份的元信息
{"BackupCount":1,"BackupDetails":[{"S_NO":1,"BackupKey":"20190814_163625","BackupType":"FULL",…….}
·roach文件夹存储的为特定某个备份的元信息
日志是查看代码运行状态和错误定位的重要文件,Roach内核的回收日志只能保证一个日志回收点:$GAUSSLOG/roach/。
Roach日志的管理可分为三类:
·agent文件夹保存了内核侧生成的日志;
·controller文件夹保存了python侧的调度信息;
·frame文件夹保存了双集群容灾过程中python侧代码生成的日志。
(1)内核日志
·缺省情况下,内核日志仅记录警告及以上级别的消息。Roach工具支持的日志级别,及默认只有ERROR和Warning级别日志。执行命令可开启INFO级别日志,--logging–logging-levelINFO
·如果备份或恢复操作失败,可查看控制台中显示的错误汇总,识别发生错误的主机。
(2)系统日志
·Linux记录系统事件至系统日志中。Roach工具将FATAL及ERROR消息记入相同的系统日志文件。例如,在运行SUSELinux操作系统的设备上,Roach写日志到/var/log/messages文件。
(3)安全日志
(4)控制器日志
·控制器日志为python脚本运行日志,用户可以保存控制器日志信息到文件中。
·控制器日志文件的格式如下:
roach-controller-YYYY-MM-DD_HHMMSS.log。例如:roach-controller-2015-12-15_203415.log遇到故障时,结合打屏信息和相应位置的日志文件,可以快速定位到出错位置,提高解决问题效率。
备份能解决数据丢失的找回、数据损坏的找回和历史数据找回等功能,是构建容灾方案的基础,如何快速、有效实现大数据备份功能是这个时代一个非常重要的课题。