DCA培训时,DM数据库在进行库级还原恢复时需要进行restore、recover、更新数据库魔数(update db_magic)。从而引发如下思考:
单机数据库restore、recover看似就足够,为什么还要更新数据库魔数(update db_magic)?
三部曲应是在集群备份还原时必须要做到。
一、核心概念:集群同步与备份还原的互补性
群同步的核心目的是应对 “一台机器坏了”(硬件故障),备份还原的核心目的是应对 “数据错了”(逻辑错误)。这两种方法是互补关系,而非替代关系。
二、场景一:依靠集群同步(高可用)
- 问题
集群中一个节点的物理硬件损坏(如硬盘损坏、电源故障、网络中断)。
- 解决流程
(1)系统自动检测到节点 A 失联;
(2)集群自动将读写流量切换到其他健康节点(Node-B、Node-C),业务几乎无感知;
(3)管理员修复或更换节点 A 的硬件;
(4)在新机器上启动数据库进程,其会自动从 Node-B 或 Node-C 同步所有数据;
(5)同步完成后,节点 A 重新加入集群,恢复完整状态。
- 核心思想
冗余。通过多副本保证即使一个节点损坏,其他节点仍可正常使用,解决硬件可用性问题。
三、场景二:必须依靠备份还原(最后保险)
- 问题
出现毁灭性操作(如执行 SQL 命令DROP TABLE important_data;或UPDATE table SET salary = 0;),属于数据逻辑错误(误操作)。
- 错误操作后的连锁反应
(1)DROP TABLE等命令会被当作正常写操作;
(2)该操作会在集群所有节点上成功执行;
(3)几秒内,删除 / 修改操作通过同步机制,完美、一致地复制到集群每一个节点;
(4)最终结果:所有节点上的important_data表消失(或salary字段全部归零)。
- 关键结论
此时无法依靠集群同步恢复:因为集群同步机制的核心任务是保证所有节点数据一致性,“数据全错 / 全没” 已成为新的一致状态,同步机制无法逆转该结果。
- 解决流程
(1)放弃依赖集群(所有节点数据均错误);
(2)从外部的、隔离的备份系统中,取出历史备份文件(如昨晚的备份);
(3)执行Restore->Recover->Update DB_Magic流程,重建全新集群;
(4)结果:会丢失从备份后到故障发生前的业务数据(如一天数据),但可恢复整个数据库核心内容。
- 核心思想
隔离的快照。备份是脱离集群同步机制的、某一过去时间点的数据快照,专门应对同步机制无法解决的数据逻辑错误。
四、总结:高可用架构与备份还原架构
集群同步构建的是高可用架构,聚焦硬件故障应对,通过冗余副本保障业务连续性;备份还原构建的是数据安全架构,聚焦逻辑错误应对,通过隔离快照留存数据恢复的 “最后希望”。二者结合,才能形成完整的数据保护体系。
文章开头的疑问便得以解答,更新数据库魔数(update db_magic)是为了重建全新集群,而不和老集群混淆,作为ID。