fix: 提供 SQLite 迁移故障恢复开关

This commit is contained in:
Logan.Li committed 2026-07-30 23:49:38 +08:00
1 parent 99b5d94dc2
commit f22e575124
3 files changed
+28 -15

No files matched your search

+7
View File
@@ -436,6 +436,13 @@ WebSocket 无法设置自定义 header → 后端 `JWTAuth` 支持 `?token=` que
- 生产模式:MySQL + Redis。
- 告警引擎使用 Redis 分布式锁(SetNX + 60s TTL)保证多副本仅 Leader 执行检查。
### 7.4.1 数据保留与清理(强制)
- 对监控指标、Agent 原始上报、日志和审计等时序/高频数据,必须实现可配置的保留期与定时清理;禁止无限累积。
- 清理任务不能只调用 `DELETE`:必须记录并校验受影响行数,处理关联的明细/索引数据,并将执行结果写入系统任务状态,确保清理可审计、失败可发现。
- SQLite 的 `DELETE` 仅释放可复用页,不会缩小 `sqlite3.db` 文件。生产维护窗口内必须在备份成功、应用停写后执行 `PRAGMA wal_checkpoint(TRUNCATE)` 和 `VACUUM`,确认 WAL 与主库空间实际回收;不得在高峰期或存在活跃写入时执行 `VACUUM`。
- 大表不得在每次应用启动时无条件触发全表重建。结构变更必须使用可追踪、幂等的迁移,并评估 SQLite 下 GORM `AutoMigrate` 的重建与 WAL 写放大风险。
### 7.5 健康检查
- 推荐探针:`GET /version`(无 DB 依赖)。