M4-04 Backup & Cleanup Module #38

Closed
opened 2026-05-22 21:09:51 +08:00 by wangdl · 1 comment
Owner

目标

设计知习备份与清理模块,实现 MySQL 定时备份、Qdrant snapshot、上传 COS 以及过期数据清理的完整方案。

本 Issue 只做模块架构设计,不直接实现代码。

背景说明

生产数据需要定期备份:MySQL 每天备份、Qdrant 定期 snapshot、备份文件上传 COS。同时需要清理过期数据:本地备份保留 7 天、COS 备份保留 30 天、MySQL 物理清理、COS 过期文件清理、Qdrant 已删除 point 清理。

模块职责

  1. 本模块负责:
    • MySQL 定时备份(mysqldump 或类似方案)
    • Qdrant snapshot 创建和上传
    • 备份文件上传 COS(通过 File Storage)
    • 本地备份过期清理(保留 7 天)
    • COS 备份过期清理(保留 30 天)
    • MySQL 过期软删除数据物理清理
    • COS 已删除文件清理
    • Qdrant deleted point 清理
    • 备份和清理任务日志

候选数据对象

  • BackupJob
  • CleanupJob
  • PurgePolicy
  • RetentionPolicy
  • RestoreRecord

基础设施依赖

  • MySQL:是(清理对象)
  • Redis:否
  • BullMQ:是(备份/清理异步执行)
  • Qdrant:是(snapshot 对象)
  • COS:是(备份存储)

禁止事项

  • 禁止备份操作阻塞在线业务
  • 禁止清理操作删除未标记删除的数据
  • 禁止备份和清理不做日志记录

不建议当前阶段实现

  • 增量备份
  • 自动恢复演练
  • 异地备份
## 目标 设计知习备份与清理模块,实现 MySQL 定时备份、Qdrant snapshot、上传 COS 以及过期数据清理的完整方案。 本 Issue 只做模块架构设计,不直接实现代码。 ## 背景说明 生产数据需要定期备份:MySQL 每天备份、Qdrant 定期 snapshot、备份文件上传 COS。同时需要清理过期数据:本地备份保留 7 天、COS 备份保留 30 天、MySQL 物理清理、COS 过期文件清理、Qdrant 已删除 point 清理。 ## 模块职责 1. 本模块负责: - MySQL 定时备份(mysqldump 或类似方案) - Qdrant snapshot 创建和上传 - 备份文件上传 COS(通过 File Storage) - 本地备份过期清理(保留 7 天) - COS 备份过期清理(保留 30 天) - MySQL 过期软删除数据物理清理 - COS 已删除文件清理 - Qdrant deleted point 清理 - 备份和清理任务日志 ## 候选数据对象 - BackupJob - CleanupJob - PurgePolicy - RetentionPolicy - RestoreRecord ## 基础设施依赖 - MySQL:是(清理对象) - Redis:否 - BullMQ:是(备份/清理异步执行) - Qdrant:是(snapshot 对象) - COS:是(备份存储) ## 禁止事项 - 禁止备份操作阻塞在线业务 - 禁止清理操作删除未标记删除的数据 - 禁止备份和清理不做日志记录 ## 不建议当前阶段实现 - 增量备份 - 自动恢复演练 - 异地备份
wangdl added this to the M4:Admin 生产级运维深化(P3) milestone 2026-05-22 21:09:51 +08:00
wangdl self-assigned this 2026-05-22 21:09:51 +08:00
Author
Owner

M4-04 实施完成

已有基础

  • BackupJob Prisma 模型此前已有
  • task-types 已定义 backup-execute / cleanup-execute
  • MetricsCleanupService 每日清理 ApiMetric
  • FileCleanupProcessor(BullMQ)

本 Issue 新增

模块 说明
CleanupJob Prisma 模型 记录清理任务(type/status/target/rowsAffected)
BackupService 备份任务列表、手动触发备份/清理
BackupController AAPI:备份/清理任务 CRUD
BackupAdmin 页面 备份任务(触发 MySQL/Qdrant/文件备份)+ 清理任务(软删除/指标/日志清理)

清理类型

类型 说明
soft-delete 物理清除 30 天前软删除的 KnowledgeItem/KnowledgeBase
api-metrics 清除 30 天前的 ApiMetric 记录
task-logs 清除 90 天前的 TaskLog 记录

AAPI 端点

端点 方法 说明
/admin-api/backup/jobs GET 备份任务列表
/admin-api/backup/trigger/:type POST 手动触发备份(mysql/qdrant/files)
/admin-api/backup/cleanup GET 清理任务列表
/admin-api/backup/cleanup/:type POST 手动触发清理
## ✅ M4-04 实施完成 ### 已有基础 - BackupJob Prisma 模型此前已有 - task-types 已定义 backup-execute / cleanup-execute - MetricsCleanupService 每日清理 ApiMetric - FileCleanupProcessor(BullMQ) ### 本 Issue 新增 | 模块 | 说明 | |------|------| | CleanupJob Prisma 模型 | 记录清理任务(type/status/target/rowsAffected) | | BackupService | 备份任务列表、手动触发备份/清理 | | BackupController | AAPI:备份/清理任务 CRUD | | BackupAdmin 页面 | 备份任务(触发 MySQL/Qdrant/文件备份)+ 清理任务(软删除/指标/日志清理) | ### 清理类型 | 类型 | 说明 | |------|------| | soft-delete | 物理清除 30 天前软删除的 KnowledgeItem/KnowledgeBase | | api-metrics | 清除 30 天前的 ApiMetric 记录 | | task-logs | 清除 90 天前的 TaskLog 记录 | ### AAPI 端点 | 端点 | 方法 | 说明 | |------|------|------| | /admin-api/backup/jobs | GET | 备份任务列表 | | /admin-api/backup/trigger/:type | POST | 手动触发备份(mysql/qdrant/files) | | /admin-api/backup/cleanup | GET | 清理任务列表 | | /admin-api/backup/cleanup/:type | POST | 手动触发清理 |
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/api-server#38
No description provided.