1. 摘要
不同于“数据备份”的概念,双集群的容灾是为了在遭遇灾害时保证信息系统正常运行,帮助企业实现业务连续性的目标。
为了实现集群容灾目的,主要通过switchover进行主备切换,最终实现服务的不间断。集群在执行switchover后,主要完成如下工作:
第一步是先保证双集群备份恢复脚本先完成一次全量的数据备份,备集群上完成一次全量数据恢复。
第二步是在切换时,原主集群设置为只读,且做最后一次增量。原备集群设置为可读可写,且完成所有正在恢复备份集的恢复。
第三步是完成主备切换后,新主集群做一次全量备份(这里是轻量备份,后面会讲到),此时标志着主备切换switchover操作的结束。
如下图所示,经过switchover操作,主备集群角色进行了互换:
2. 备份
备份从类型划分,可以分为全量备份和增量备份。
备份从策略角度,主要包括分盘存储,生命周期处理,断点续备份。本文主要介绍分盘存储流程。
2.1 全量备份和增量备份
- 概念差异
全量全量备份会将源数据完整备份,而增量备份仅将上次备份后所做的更改进行备份,这里的上次备份可以全量备份(累计增量备份),也可以是全量备份之后的增量备份(差分增量备份)。
- 执行命令差异
双集群备份命令:python $GPHOME/script/SyncDataToStby.py -t backup --config-file ***
全量备份和增量备份的区别是增量备份命令增加了--prior-backup-key参数,该参数所传的值是上次备份的backup key。通过该参数,系统可以获取到上次备份信息,以判断继上次备份之后所更改的数据,用于执行本次的增量备份。
双集群执行全量备份和增量备份命令时,都是在主集群主节点上,使用GaussRoach.py拉起gs_roach(master)。然后,gs_roach(master)拉起主节点和其他节点的gs_roach(agent)。备份过程的调用关系如下图所示:
执行备份命令后,集群进行增量备份和全量备份的屏显如下图所示:
- 备份列表差异
如果是全量备份,则将整个列表文件进行复制,生成全量备份列表清单,然后进行全量备份。
如果是增量备份,则根据startLsn和endLsn,调用file_list_impl.cpp/GetFileListByIncrementBlockType()中的getMergedCBM(),从CBM中获取数据库和文件的修改记录,生成增量备份列表,然后进行增量备份。
下图为C侧生成全量和增量备份清单时的流程图:
2.2 分盘存储
- 如果没有一个超大盘用于存储备份集,则需要分盘存储备份集
以往的存储方式是将数据放到一个足够大的磁盘上,而修改后的分盘存储,通过软连接到各个实例来实现分盘目的。
- 步骤
1. 在备集群CN和DN实例目录下创建文件夹roachbackup,主集群根据config.ini创建备集群media目录下的目录链接。
2. 备集群恢复前clean集群时,跳过各实例目录的roachbackup文件夹。
3. 备集群恢复时及时删除解压完的rch文件。
4. 恢复完成后,备集群删除创建的符号链接、各实例目录下的roachbackup文件夹。
备集群mediadata目录下通过软连接进行分盘存储示意图如下所示:
每个实例的roachbackup下,所包含的文件如下图所示:
对于data_cn下,所包含的文件如下图所示:
3. 主备切换
- 双集群框架支持主备集群切换,通过SyncDataToStby.py -t switchover命令,这样原主集群在发生failover时,备集群就升为主集群,接管原来主集群的业务,从而达到容灾的目的。
- 主备切换主要指对DN的切换,即将备DN切换为主DN。
下图为执行switchover后,涉及到的动作及耗时统计。
3.1 主备切换后新主集群的轻量备份
正常做完switchover后,新主集群需要做全量。而全量备份的流程是1.生成备份的文件列表 2.在对应的实例下,创建软连接 3.开始备份数据文件。
如果继续做全量,可用性不高,因为1主备集群数据一样2做全量的成本太高,因此提出了轻量备份。
问:轻量是什么意思呢?为什么一定要做一次备份呢?
答:1. 所谓轻量,就是对行存清单、xlog清单和列存清单的准备过程略过,这样就不再备份对应的文件。只在新备上生成CSV信息,并将状态置为“PASS”,即代表了当前备份集已经恢复过。2. 之所以要做一次备份,是因为集群在后面做增量恢复时,都需要prior backupkey作为基准。
switchover后轻量备份的流程如下,图中标记为颜色的过程都进行了跳过。
4. 展望
首先,随着数据量的不断增加,数据仓库业务也在不断的扩展,这就要求双集群的备份恢复以及容灾功能需要不断的迭代。充分挖掘客户需求以及不同的场景差异,是提高集群产品化质量以及开发集群特性的第一性原则。
另外,随着数仓数据量和集群规模的扩大,如何把握网络的带宽和不同介质读写的性能,从而选择合适的组网方式和介质,是接下来需求开发的第一驱动力。
合智互联客户成功服务热线:400-1565-661
留言评论
暂无留言