每天推送5篇优质英文文章 · By makers, for makers

运营 857 天, 推荐好文 3,910 篇, 原创简评 821,904 字, 原文总阅读时间 33,128 分钟, 83,159 人订阅

湾区日报是如何备份数据库的?


一个稍微严肃一点的项目的数据库都需要定时备份,这点应该大家都同意吧?因为你都得假设世界末日模式:数据中心突然地震火灾、数据库的那台虚拟机突然消失了、黑客入侵把数据库清空等。至少得留一条后路东山再起吧?

湾区日报运营至今 500 多天,才开始备份数据库的。可见我直到最近才比较觉得湾区日报是一个稍微严肃一点的项目:)

秉持着『快糙猛』的原则,咱就不用各种学术派的最佳实践来备份数据库了,简单够用的方法足矣。

湾区日报有两个数据库:PostgreSQL 与 Redis。所有数据都是数字与字符串,全部 dump 出来的话,PostgreSQL 里的数据只有 50 MB(压缩后10几MB),Redis 里的数据只有 5 MB(压缩后不到 1MB)。

大概的思路是:有一个每天自动执行一次的 job 把所有数据 dump 出来,压缩一下,按日期命名,最后上传到某个地方。上传到哪里呢?任何提供API的云存储服务都行(Dropbox、Box之类的)。

对于 PostgreSQL 里的数据,我用 Django 的 dumpdata 命令把所有数据 dump 成一个 json file,然后 gzip 一下。

对于 Redis 里的数据,直接 gzip 一下 disk 上的 dump.rdb

这个定时的 job 已经运行好几天了。我演习了几次恢复数据:把 production 的数据备份导入我开发中用的虚拟机(vagrant + virtualbox),成功恢复。

分享到:


选一种适合你的订阅方式: 33,626 人 · 23,240 人 · 6,725 人 · 6,547 人 · 5,236 人 · 4,882 人 · 1,994 人 · 834 人 · 44 人 · 31 人