SQLite 数据备份:三种方案与一次完整的恢复演练
用 SQLite 最大的好处是简单:整个数据库就是一个文件。最大的风险也是这个:文件损坏、误删、服务器故障,数据就没了。
很多人的备份方式是定时 cp 一下数据库文件。这是有问题的:如果复制时恰好有写入,得到的备份文件可能是损坏的;开启 WAL 模式后,还有一部分最新数据在 -wal 文件里,只复制主文件会丢数据。
这篇文章会介绍三种正确的备份方式,分别适合不同的场景:
| 方案 | 适合场景 | 数据丢失窗口 |
|---|---|---|
| sqlite3 .backup | 定时全量备份,最通用 | 取决于备份频率 |
| VACUUM INTO | 在应用代码里触发备份 | 取决于备份频率 |
| Litestream | 需要接近实时的备份 | 秒级 |
最后会完整演示一次从备份恢复的过程。没有演练过恢复的备份,不能算真正的备份。
剩余内容需付费阅读
¥4.90
购买后永久可读