发生了什么
最近 CloudCone 出了点大问题,不少人的数据直接丢了(可以参考 NodeSeek 上的讨论)。
我原本以为自己是有备份意识的,因为我买了两个 CloudCone 的 VPS,互相做备份。结果这次LA连环爆炸,导致两边的数据一起挂掉。这让我意识到,备份不仅要勤,还得跨服务商,而且恢复过程必须足够简单。
为什么换成 SQLite
为了能快速复原,我把 WordPress 的后端从 MySQL 换成了 SQLite。
主要理由如下:
- 数据即文件:整个数据库就是一个
.sqlite文件。备份不再需要mysqldump,直接 cp 或者 rsync 这个文件就行。 - 迁移成本低:换服务器时,直接把网页根目录打包。在新服务器上解压即用,不需要配置数据库用户、权限或处理版本兼容性。
- 省资源:不用常驻一个 MySQL 进程,对小内存 VPS 比较友好。
并且,官方是支持的,虽然目前还是插件状态:SQLite Database Integration。
开发的工具:wordpress-sqlite-tools
为了方便维护这种架构,我写了一个简单的工具集:wordpress-sqlite-tools。
他可以自动安装这种wordpress结构,备份,导入,导出,并且用rclone来备份远端
备份到 Cloudflare R2
这次我选择把额外备份放在 Cloudflare R2,不再放在同一家 VPS 供应商下。
选择 Cloudflare R2 的原因很简单:
- 免费额度:每月提供 10 GB 的存储空间,对于个人博客的数据库和图片来说完全够用。
- 无流量费:R2 最核心的优势是 Zero Egress Fees。很多对象存储(如 AWS S3)下载备份是要收流量费的,但 R2 只要在额度内,下载恢复完全免费(但是下载次数是有限制的,但如果只是拿来备份,完全不会达标)。