知识卡片

用开源项目:重要存储必须有另一套成熟方案做备份

普通读书笔记卡

内容

即使前面选型、研究、测试、灰度的工作都做得非常完善充分,也不能认为万事大吉——尤其是刚开始使用一个开源项目时,运气不好可能会遇到之前全世界使用者都从未遇到过的bug,导致业务无法恢复,尤其在存储方面,一旦出问题无法恢复,可能就是致命打击。书中举了一个真实案例:某业务使用MongoDB,宕机后部分数据丢失、无法恢复,也没有其他备份,人工恢复都没办法,只能来一个用户投诉处理一个,这次事故导致DBA和运维团队从此以后都反对再用MongoDB,即使只是尝试性使用。虽然因为一次故障就完全反对尝试有点反应过度,但这次故障确实提了一个醒:对于重要的业务或数据,使用开源项目时最好有另外一个比较成熟的方案做备份,尤其是数据存储——例如如果要用MongoDB或者Redis,可以用MySQL做备份存储。这样做虽然会让复杂度和成本高一些,但到了关键时刻能救命。

参考来源

- 位置:《从零开始学架构》第48讲《再谈开源项目:如何选择、使用以及二次开发?》"用:如何使用开源项目"之"做好应急,以防万一"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文说明"某个业务使用了 MongoDB,结果宕机后部分数据丢失,无法恢复,也没有其他备份……对于重要的业务或者数据,使用开源项目时,最好有另外一个比较成熟的方案做备份,尤其是数据存储。例如,如果要用 MongoDB 或者 Redis,可以用 MySQL 做备份存储",直接支撑本卡结论。 - 原始内容:某个业务使用了 MongoDB,结果宕机后部分数据丢失,无法恢复,也没有其他备份……对于重要的业务或者数据,使用开源项目时,最好有另外一个比较成熟的方案做备份,尤其是数据存储。例如,如果要用 MongoDB 或者 Redis,可以用 MySQL 做备份存储