冷热分离

场景

运行两年后,数据量巨大。

数据规模:

  • 总日志记录:10 亿条
  • 每天新增:200 万条
  • 数据库大小:500GB

问题:

  • 查询越来越慢
  • 存储成本高
  • 备份时间长

解决方案

1. 冷热数据分离策略

数据分类:

热数据(近期):
- 最近 30 天的日志
- 频繁查询
- 存储在 MySQL 主库
- 需要快速访问

温数据(中期):
- 30-180 天的日志
- 偶尔查询
- 存储在 MySQL 从库
- 访问速度要求一般

冷数据(长期):
- 180 天前的日志
- 很少查询
- 归档到对象存储
- 成本优化

2. 分区表设计

3. 数据归档

设计流程
3. 数据归档
  1. 步骤 1:归档或清理过期数据
  2. 步骤 2:归档或清理过期数据
  3. 步骤 3:确定要处理的数据表、业务记录和一致性边界
  4. 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。

4. 冷数据查询

设计流程
4. 冷数据查询
  1. 步骤 1:归档或清理过期数据
  2. 步骤 2:校验身份、密钥或权限
  3. 步骤 3:确定要处理的数据表、业务记录和一致性边界
  4. 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。

当前架构