知识卡片
复制和RAID都不是备份:有副本不等于能撤销错误
内容
“数据有多份副本”和”数据可以被恢复”是两回事,一个常见但危险的误区是把
复制、RAID阵列当成备份的替代品。判断一种数据保护手段算不算”备份”,
有一个简单直接的测试:假设在生产库上意外执行了DROP DATABASE,这份
“保护措施”能不能帮你把数据找回来?复制和RAID都通不过这个测试——复制
的本质是把主库上发生的每一个变更(包括错误操作本身)忠实地同步给
备库,DROP DATABASE一样会被复制到所有备库上,副本越多、错误传播
得越彻底;RAID保护的是单块物理磁盘损坏这一种失效场景,对”数据本身
被正确地删除或改错”这种逻辑层面的错误完全无能为力,因为RAID根本不
区分”这是一次正常写入”还是”这是一次灾难性的误操作”。这揭示了备份的
本质要求:它必须能让你回到”错误发生之前”的某个独立时间点,而复制和
RAID提供的都是”当前状态的实时或近实时镜像”,镜像会忠实地把错误也镜像
过去,这和备份要解决的问题(撤销错误、回到过去)方向正好相反。这不是
说复制和RAID没有价值——它们分别在”读扩展/故障转移”和”单盘物理损坏
容错”这些场景下很有用,只是这些价值和”备份”要解决的问题是两个不同的
维度,不能用一个去替代另一个,评估容灾方案完整性时必须分别确认两者
都到位。
参考来源
- 位置:《高性能MySQL:第3版》第15章"备份与恢复"15.2节"定义恢复需求"
(源文件:_epub-src/OEBPS/Text/part0022.xhtml)
- 结论依据:原文明确"复制不是备份,当然使用RAID阵列也不是备份……
可以考虑一下,如果意外地在生产库上执行了DROP DATABASE,它们是否
可以帮你恢复所有的数据?RAID和复制连这个简单的测试都没法通过。
它们不是备份,也不是备份的替代品",直接给出判断复制/RAID是否算
备份的具体测试方法及结论。
- 原始内容:复制不是备份,当然使用RAID阵列也不是备份……可以考虑
一下,如果意外地在生产库上执行了DROP DATABASE,它们是否可以帮你
恢复所有的数据?RAID和复制连这个简单的测试都没法通过。