这两天给 blog 项目添加了数据备份功能。
需求:
- 每天定时打包 mongo 数据库 blog 项目的所有数据。
- 在另一台 vps 服务器上自动定时下载打包的数据库文件。
- 在本地电脑上自动定时下载打包的数据库文件。
- 所有功能都不需要手动操作。
方案:
- dump mongo 数据库数据;
- blog web 项目添加一个下载数据的链接,并且添加验证机制,通过一个动态的token做权限验证,下载一次 url 立刻失效,使用 redis 存储更新 token;
- 每次下载写一条日志,包含 ip、ua 等信息。
步骤:
- 通过 crontab 定时脚本每天 dump mongo 数据库的文件到指定文件夹下。
- 同样使用 crontab 定时脚本,定时打包 dump下的数据库文件。
- 更新最新的 token 到 redis 里面。
- vps 和本地电脑添加 crontab 配置,每天自动拉取最新的数据库文件。
备注
经过测试,个人 blog 的数据量比较小, 所以采取这种方式进行备份, 如果数据量较大, 此套方案则不太可行。
同时由于网站使用了 cloudflare , 所以在中国国内更新数据的时候, 需要使用代理, 否则不是很稳定。直接从 美国 vps 服务器上更新数据还是很稳定, 速度也快很多。
没有采用直接 ssh 到服务器上下载数据的方式是因为不想这三台服务器有任何直接的联系。
也没有使用 亚马逊 AWS 的快照和任何备份功能,因为个人项目,还没那个必要。