# SQLite 维护与恢复演练 Runbook 适用范围:独立二进制或 local 模式的 SQLite 数据库。生产维护只能在批准的维护窗口执行;高峰期及存在活跃写入时禁止 `VACUUM`。 ## 维护前检查 1. 确认近期备份可读取,并记录当前数据库、WAL 文件大小。 2. 在发布窗口停止 AIOps 写入进程;`VACUUM` 期间必须保持停写。 3. 使用绝对路径,禁止将 `/`、工作区或未核实的路径作为维护目标。 ```bash ./scripts/sqlite-maintenance.sh \ --maintenance-window \ --db /srv/aiops/sqlite3.db \ --backup-dir /srv/aiops/backups/sqlite \ --pid-file /srv/aiops/.aiops.pid ``` 脚本会先执行 SQLite `.backup`,对备份运行 `PRAGMA integrity_check`,再执行 `wal_checkpoint(TRUNCATE)`、`VACUUM` 和最终完整性检查。备份校验失败时不会进入空间回收步骤。 ## 恢复演练 1. 在隔离测试目录复制一份备份,绝不直接覆盖生产库。 2. 用同版本二进制指向副本启动,并验证 `/version`、管理员登录、服务器列表和近期 Agent 指标查询。 3. 对副本执行 `PRAGMA integrity_check`,并记录恢复耗时、RPO、RTO 与验证结果。 4. 仅当演练通过后,更新备份巡检记录;生产恢复须由值班负责人批准并保留原库只读副本。 ## 线上当前风险 `sqlite3.db` 与 WAL 已达到多 GB 级别。请先完成备份恢复演练,再安排维护窗口;本次整改不会在在线服务上直接运行 `VACUUM`。