【YashanDB 知识库】如何在备机节点上做备份和恢复
本文内容来自 YashanDB 官网,原文内容请见 https://www.yashandb.com/newsinfo/7817898.html?templateId=1718516
问题现象
一主一备情况下,主机需要支持常规业务,为了不影响业务,在备机做备份恢复的场景。
问题的风险及影响
1、备机恢复后,会变成 primary 节点,出现脑裂。
2、备机恢复的数据,只是备份那一时间点的数据,需要同步到主机现在时间点的数据。
复现步骤
1、一主一备,正常场景如下
2、模拟主机执行业务,备机开始备份场景
主机插入 20000000 万条数据
备机开始备份:
3、模拟备机根据备份集恢复数据
4、恢复后,变为两个 primary 节点,如下
备机查看 tmp5 表、scn、asn、flush_point:
主机的 tmp5 表、scn、asn、flush_point,对比发现 scn 小于备机的 scn,asn 和 flush_point 大于备机的 asn 和 flush_point,如下图:
解决方法及规避方式
解决备机根据备份集恢复后,数据不一致的问题。
思路是备机的 primary 降备,然后同步数据即可。操作如下:
备机 primary 降备:
<table cellspacing="0"><tbody><tr><td><p><span>-- 启动备变主库的节点(例如 1-2)到 mount 状态</span></p><p><span>yasboot node start -c yashandb -n 1-2 -m mount</span></p><p><span>-- 备机的主库降备</span></p><p><span>ALTER DATABASE CONVERT TO PHYSICAL STANDBY;</span></p><p><span>alter database open;</span></p></td></tr></tbody></table>
同步数据,主机修复 need repair 状态:
<table cellspacing="0"><tbody><tr><td><p><span>BUILD DATABASE REPAIR STANDBY standby1;</span></p></td></tr></tbody></table>
修复后查看备机结果:
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/e11114b621fba043072d53247】。文章转载请联系作者。
评论