技术与生活 / 一篇记录
SQLite 备份不只是复制一个文件
成功复制文件并不等于备份可恢复,数据库写入过程中尤其如此。
数据库写入可能同时涉及主文件和日志文件,简单复制某一部分不能保证拿到一致快照。使用数据库支持的备份接口,更容易控制复制时的数据状态。
从一个例子看起
查询示例以 SQLite 为例;notes 为测试表,包含 id、title、score、category、created_at 字段。
PRAGMA integrity_check;
在备份副本上执行检查,并实际打开查询样本数据。
排查时再往前走一步
对副本执行完整性检查,再读取几条已知记录。文件能打开并不证明业务数据完整,恢复验证还应覆盖关键表、记录数量与必要约束。
恢复测试还应确认备份文件属于哪个数据库和哪个时间点。把实例、版本和生成时间写入受限的备份记录,有助于避免事故时恢复了一份完整却属于错误环境的文件。
在线 SQLite 备份应使用受支持的备份接口,不能只随手复制主文件。
参考:SQL 文档。