知识卡片

复制和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和复制连这个简单的测试都没法通过。