三二一原则,我为什么坚持了三年
三份副本、两种介质、一份异地。这话被说烂了,但真正救过我的,是那份我几乎忘了它存在的副本。
那次故障
一块用了四年的机械盘,某天早上开始有异响。SMART 里重映射扇区数在涨,但系统还能跑,我就想着周末再换。结果没等到周末。
盘挂的那天,我第一反应是"还好有备份"。然后发现备份任务最后一次成功是十一天前——脚本在 2>/dev/null 里把错误吞掉了,退出码一直是 0,监控也没查产物。
十一天的数据没了。不多,但足够让人记住。
后来改了什么
第一件事不是加备份,是**让备份失败能被看见**。查产物新鲜度,比查退出码靠谱——脚本可以假装成功,但文件的时间戳不会撒谎。
第二件事是把异地那份真正放到异地。之前的"异地"是同一栋楼里的另一台机器,停电一起停,进水一起进。这不叫异地,叫同城副本。
第三件事是定期恢复演练。备份没恢复过就等于没有备份,这话不是口号,是我在那十一天里想明白的。
备份的价值不在于它存在,在于你要用它的时候它还在,而且是完整的。
现在
每天凌晨跑,早上六点半检查产物新鲜度,超过 26 小时没更新就推消息。周日额外发一条"全部正常",防止检查器自己静默——检查器也是程序,也会坏。
最重要的那条数据单独加密,解密材料离线存放。这不是不信任云,是不想把所有鸡蛋放在一个需要联网才能打开的篮子里。
三年下来,真正用上的次数不多,但每次都很庆幸。