38 lines
1.0 KiB
Markdown
38 lines
1.0 KiB
Markdown
|
|
# 2026-06-08 — sync_logs 30 天自动清理
|
|||
|
|
|
|||
|
|
## 摘要
|
|||
|
|
|
|||
|
|
primary worker 每日删除 `started_at` 超过 30 天的 `sync_logs` 记录(启动后立即执行首轮),对齐 `design-standards.md` 保留策略。
|
|||
|
|
|
|||
|
|
## 动机
|
|||
|
|
|
|||
|
|
推送历史仅存 MySQL、无 TTL,长期运行后表体积持续增长,影响列表查询与备份。
|
|||
|
|
|
|||
|
|
## 涉及文件
|
|||
|
|
|
|||
|
|
- `server/infrastructure/database/sync_log_repo.py` — `purge_older_than`、常量 `SYNC_LOG_RETENTION_DAYS=30`
|
|||
|
|
- `server/background/sync_log_purge.py` — 24h 周期循环
|
|||
|
|
- `server/main.py` — primary worker 注册后台任务
|
|||
|
|
- `tests/test_sync_log_purge.py`
|
|||
|
|
|
|||
|
|
## 迁移 / 重启
|
|||
|
|
|
|||
|
|
- 无 schema 变更
|
|||
|
|
- **需重启 API**
|
|||
|
|
|
|||
|
|
## 行为
|
|||
|
|
|
|||
|
|
| 项 | 值 |
|
|||
|
|
|----|-----|
|
|||
|
|
| 保留窗口 | 30 天(`started_at`) |
|
|||
|
|
| 执行频率 | 启动后首轮 + 每 24h |
|
|||
|
|
| 删除方式 | 每批最多 1000 行,循环至无匹配 |
|
|||
|
|
|
|||
|
|
## 验证
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pytest tests/test_sync_log_purge.py -q
|
|||
|
|
bash scripts/local_verify.sh
|
|||
|
|
# 可选:INSERT 一条 started_at=31天前 的 sync_log,重启 API 后确认已删除
|
|||
|
|
```
|