华为云数仓GaussDB(DWS)备份恢复的实现
为什么要进行数据备份?
在信息化社会,数据是每个企业最重要的资产,每个好的企业致力于为用户提供稳定可靠的服务,各种客观(自然灾害,网络故障,硬盘故障等)或者主观原因(人为损坏,人为误操作等)会造成数据丢失,影响企业业务,所以数据的备份及恢复显得尤为重要。保护好客户数据,灾难来临,客户数据不丢失,企业业务能够连续进行是数据灾备的目的。数据库灾备能力是评价数据库优劣的重要指标之一。
Raoch工具介绍:
GaussDB A通过Roach工具提供备份和灾难恢复功能。目前Roach支持的集群形态包括:主备从集群、一主多备集群、小型化集群(单节点部署)。支持物理备份和逻辑备份,并且支持DISK,NBU,OBS(DWS线上使用),EISOO等备份介质。在备份恢复过程中,集群内每个节点都会运行gs_roach进程,并且会有一个节点以roach master的角色运行roach进程,其余所有节点会以roach agent的角色运行roach进程。roach master控制备份恢复的所有流程和操作,roach agent接收和处理来自于master的命令。
应用场景之集群级备份:
集群级备份属于物理备份,GaussDB A根据用户需求提供全量备份和增量备份两种方式,并支持断点续做。
集群级全量备份场景:
python $GPHOME/script/GaussRoach.py
-t <命令类型> 【例如:restore】
--master-port <master端口号> 【roach主代理进程执行端口】
--media-type <介质类型> 【备份集存放的介质类型,如DISK等】
--media-destination <备份文件存放路径>【例如:/home/test/media】
--metadata-destination <备份元数据存放路径>【例如:/home/test/meta】
集群级增量备份场景:
在全量备份基础上加--prior-backup-key参数:
--prior-backup-key<指定基于的全量备份的key>【例如:如果该参数的值为20200505_162558,则表示该次备份为增量备份,且本次增量备份基于key为20200505_162558的全量备份进行】
集群全量备份断点续做场景:
考虑到集群级备份数据量大且备份时间较长,在备份过程中可能受到不可抗力导致备份中断,GaussDB A 提供了断点续做功能,只需要在备份命令添加—resume-backup参数即可。
应用场景之集群级恢复:
集群级恢复命令如下:
python $GPHOME/script/GaussRoach.py -t restore --master-port 7786 --media-type disk --media-destination /home/test/media --metadata-destination /home/test/meta --clean –backup-key XXXX_XXXX
其中:
--clean <表示恢复前清除数据库中的数据>
--backup-key <参数值为带恢复的备份集的key>
应用场景之表级备份:
全量备份数据量较大,备份集占用存储空间较大,重复数据重复备份,造成存储空间的浪费。实际应用中,客户数据库中常用的表有限,需要经常的做全量备份,因此,为了节约存储资源,提升客户工作效率,GaussDB A提供了表级备份功能。其中,表级备份分为单表备份和多表备份。
单表备份场景:
python $GPHOME/script/GaussRoach.py -t backup --master-port <master端口> --media-destination <备份路径> --media-type disk --metadata-destination <元数据备份路径>
--tablename <表名称>
--agent-port<备份表时Roach与数据库内核之间建立外表所需端口>
–dbname <表所在数据库名称>
多表备份场景:
python $GPHOME/script/GaussRoach.py -t backup --master-port <master端口> --media-destination <备份路径> --media-type disk --metadata-destination <元数据备份路径>
--agent-port <agent端口>
--table-list <待备份tablelist列表文件,例如:tablist.txt>
--dbname <备份表所在数据库名称>
--logical <--logical参数表示本次备份为逻辑备份>
说明:--table-list的值为tablist.txt,其内容需要备份的表,每张表名一行,格式如下:
schema01.tab01
schema02.tab02
schema01.tab03
…
应用场景之表级恢复:
单表恢复:
python $GPHOME/script/GaussRoach.py -t restore --clean --create --master-port 9898 --media-type DISK --media-destination /home/test/media --metadata-destination /home/test/meta --agent-port 7000 --dbname db1 –tablename tab1 --backup-key XXXX_XXXX
其中:
--create <表示创建表结构>
--logging <参数值为true或false,true表示启用日志文件记录功能;false表示禁用日志文件记录功能>
多表恢复:
python $GPHOME/script/GaussRoach.py -t restore --clean --create --master-port 9898 --media-type DISK --media-destination /home/test/media --metadata-destination /home/test/meta --agent-port 7000 --dbname db1 –table-list tablist.txt --backup-key XXXX_XXXX --logical
在执行备份恢复命令时,还提供了以下多种功能参数:
--buffersize <缓存大小>
--compression-type <压缩算法类型,值为1代表采用zlib压缩算法,值为 2代表采用lz4压缩算法>
--compression-level <压缩级别,参数值为0-9,值为0表示快速压缩或无压缩,值为9表示慢速压缩或最大压缩>
--filesplit-size <被拆分文件的大小>
--log-filecount <日志文件的最大个数>
--log-filesize <最大日志文件的大小>
--logging-level <日志级别 FATAL ERROR WARNING INFO DEBUG DEBUG2>
--parallel-process <roach可使用子进程个数>
--retry-wait-time <失败后重试时需等待的时间>
……
roach其它功能介绍:
stop---用于停止正在进行的备份恢复进程;
validate---用于验证所有的备份文件,识别文件有无损坏;Roach工具提供了备份集的两种验证方法,分别是Full(基于CRC校验)和Partial(基于文件大小验证)。
delete---用于删除不需要的备份集;
show---以列表形式显示可用备份、备份类型、将用于特定backup key恢复的备份,回显信息中包括BACKUP KEY、BKP TYPE、BARRIER TIME、DELETION TIME、VALIDATION TIME、STATUS、TLI、BKP PRIOR KEY、BACKUP LEVEL等关键信息。
除以上应用场景,roach工具还提供了基于schema级别和database数据库级别的备份恢复。
GaussDB A提供了管控面管理,可以在管控面进行备份恢复管理。客户可以在管控面,定制自己的备份恢复策略,轻松创建一个备份任务,对备份集进行管理。可视化执行备份恢复任务。
除了基本备份恢复,GaussDB A还提供专门容灾工具,在两套主备集群之间实现周期性备份恢复,主集群正常提供业务,进行周期性备份,并将备份集传给备集群,备集群进行周期性恢复,两套集群互不影响,当主集群发生故障,备集群能够迅速替代主集群,提供正常业务。
总而言之,GaussDB A提供各种符合客户使用需求的备份恢复,容灾,迁移解决方案,使数据管理变得更加简单,安全和可靠。
更多精彩内容,请关注华为云开发者社区论坛:https://bbs.huaweicloud.cn/forum/forum-598-1.html 及微信公众号“华为云AI”
- 点赞
- 收藏
- 关注作者
评论(0)