100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 金仓数据库KingbaseES物理备份恢复最佳实践(数据恢复解决方案)

金仓数据库KingbaseES物理备份恢复最佳实践(数据恢复解决方案)

时间:2019-06-06 08:01:57

相关推荐

金仓数据库KingbaseES物理备份恢复最佳实践(数据恢复解决方案)

为了预防上述故障的发生,同时提升数据的高可用性,KingbaseES 提供了sys_rman物理备份恢复工具,该工具集成了WAL文件归档、PITR恢复等功能,实现了自动化定时备份以及灵活多样化的恢复,为用户提供了安全便捷的数据备份恢复解决方案。

sys_rman工具的介绍与部署请参考《KingbaseES物理备份恢复工具手册》,这里不再赘述。

目录

3.1.sys_rman备份方式¶

3.2.数据丢失恢复策略¶

3.2.1.恢复目标点的确定¶

3.2.2.恢复后是否提升节点¶

3.2.3.多时间线恢复点的确定¶

3.2.4.目标明确的恢复¶

3.2.5.目标不明确的恢复¶

3.1.sys_rman备份方式¶

下表对sys_rman支持的备份类型做了一个简要说明。

3.2.数据丢失恢复策略¶

数据库恢复的原理简单来说,是首先通过拷贝物理备份集建立起一个基础的数据库data目录全貌,然后将要恢复到的目标点写入配置文件,这两步使用sys_rman restore命令即可完成,最后启动数据库进入恢复模式,借助归档的WAL文件恢复至目标点并暂停,需要人工确认恢复是否符合预期再执行后续操作。

若恢复符合预期,则执行sys_wal_replay_resume()将数据库由恢复模式转到正常运行模式,此时数据库运行在新的时间线上;若不符合预期,则需要停止数据库删掉data目录,重新确定恢复目标点再次恢复。

3.2.1.恢复目标点的确定¶

sys_rman恢复的第一个原则就是通过离目标点最近的备份集和WAL日志做恢复,这样可以减少WAL重做的数量,在一定程度上避免因WAL文件缺失导致的恢复后数据库无法正常启动的问题。离目标点最近的备份集既可以指定该备份集加时间做恢复,也可以只指定时间做恢复,需要注意的是该时间必须大于备份集的结束时刻,否则会使用上一个备份集做恢复。

在下图中,由于缺少一个基础的备份集支撑,因而无法恢复到位置1;而位置2、位置3、位置4都是可用的恢复目的点。

以下图所示的情况,介绍指定时间点恢复与指定备份集恢复时,sys_rman restore恢复命令的差异与注意事项:

3.2.2.恢复后是否提升节点¶

恢复结束后,如果只是用来测试是否恢复到当前数据,则无须执行sys_wal_replay_resume(),因为执行后时间线会切换,多条时间线的出现会对后续的还原造成干扰;或者恢复后的数据不符合预期,也无须执行sys_wal_replay_resume()提升节点。

比如下图所示场景,第一次在位置1处执行了恢复操作,启动数据库后发现数据不符合预期,因而未执行sys_wal_replay_resume(), 时间线未切换,将该库关闭后删除data目录;重新到位置2处执行恢复,恢复后发现数据符合预期,执行sys_wal_replay_resume(),该库正式作为生产库启用,时间线切换到2.

下面所示的场景,第一次在位置1执行恢复,在拉起数据库后执行了sys_wal_replay_resume()操作,时间线切换到了 2;之后若想恢复到时间线1上的增量备份2之后的位置2,需添加时间线参数--target-timeline=1,否则默认会恢复到最新的时间线2上的位置3。

3.2.3.多时间线恢复点的确定¶

时间线发生过切换后,执行恢复时需要确定恢复目标点在哪条时间线上,默认是使用最新的时间线做恢复的,若想恢复到旧时间线上的某个位置,需要添加时间线参数避免PITR恢复时发生歧义导致数据错乱。

3.2.4.目标明确的恢复¶

目标明确的恢复只需要考虑时间线因素即可,默认使用最新的时间线做恢复,若想恢复到旧时间线上的某个位置请添加时间线参数限制。

下图所示情况,当需要恢复到位置1时,可直接使用时间点恢复或指定备份集恢复:

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore --type=time --target='位置1的时刻'/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore -set='增量备份1' --type=time --target='位置1的时刻'

下图所示情况,数据库在位置1时发生过恢复,当前数据库运行在时间线2上,此时需要恢复到时间线1上的位置2,需要在恢复时指定时间线:

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore --type=time --target='位置2的时刻' --target-timeline=1/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore --type=time --target='位置2的时刻' --target-timeline=1 –set=’增量备份2’

3.2.5.目标不明确的恢复¶

目标不明确的恢复比较常见,适用于多次尝试寻找最终恢复点,需要操作的步骤较多,比如下面这个示例:

第一次在位置1处执行了恢复操作,启动数据库后发现数据不符合预期,因而未执行sys_wal_replay_resume()时间线未切换,将该库关闭后删除data目录;重新到位置2处执行恢复,恢复后发现数据符合预期,执行sys_wal_replay_resume(),该库正式作为生产库启用,时间线切换到2.

/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore --type=time --target='位置1的时刻'/opt/Kingbase/ES/V8/Server/bin/sys_rman --config /home/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase restore --type=time --target='位置2的时刻'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。