数据归档策略

随着业务增长,数据库表越来越大。为了防止无限膨胀,我们需要设计数据归档策略。

为什么要归档?

数据增长趋势:

第 1 个月:10 万条    →  查询正常
第 3 个月:500 万条  →  查询变慢
第 6 个月:2000 万条 →  备份困难
第 12 个月:5000 万条 →  需要改变

归档的好处

好处说明
控制主表大小保持热数据表在合理范围
提升查询性能减少扫描数据量
降低备份成本备份时间窗口缩短
合规要求满足数据保留政策

数据分层策略

数据分层架构

热数据层(Hot)

  • MySQL 主库
  • 最近 30 天数据
  • 频繁访问,需要索引优化

温数据层(Warm)

  • MySQL 从库 / 归档表
  • 30-90 天数据
  • 偶尔访问,查询走从库

冷数据层(Cold)

  • 对象存储 / CSV 文件
  • 90 天以上数据
  • 极少访问,按需查询

归档方案实现

方案 A:归档到文件

设计流程
方案 A:归档到文件
  1. 步骤 1:归档或清理过期数据
  2. 步骤 2:读取 API Key、调用方信息和请求上下文
  3. 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
  4. 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。

方案 B:归档到历史表

设计流程
方案 B:归档到历史表
  1. 步骤 1:生成认证结果并绑定用户、应用和权限范围
  2. 步骤 2:归档或清理过期数据
  3. 步骤 3:读取 API Key、调用方信息和请求上下文
  4. 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。

方案 C:使用分区表

定时归档任务

设计流程
定时归档任务:部署操作
  1. 步骤 1:准备运行环境并启动服务
  2. 步骤 2:发起验证请求或压测流量
  3. 步骤 3:读取 API Key、调用方信息和请求上下文
  4. 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。

数据保留政策

保留策略配置

设计流程
保留策略配置
  1. 步骤 1:读取 API Key、调用方信息和请求上下文
  2. 步骤 2:按一致性要求、数据温度和失败情况选择处理路径
  3. 步骤 3:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。

自动化清理

设计流程
自动化清理
  1. 步骤 1:归档或清理过期数据
  2. 步骤 2:读取 API Key、调用方信息和请求上下文
  3. 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
  4. 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。

归档监控

监控指标

设计流程
监控指标
  1. 步骤 1:生成认证结果并绑定用户、应用和权限范围
  2. 步骤 2:读取 API Key、调用方信息和请求上下文
  3. 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
  4. 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。

告警配置

设计流程
告警配置
  1. 步骤 1:归档或清理过期数据
  2. 步骤 2:采集健康状态并触发告警
  3. 步骤 3:读取 API Key、调用方信息和请求上下文
  4. 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。