这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
冷热分离
场景
运行两年后,数据量巨大。
数据规模:
- 总日志记录:10 亿条
- 每天新增:200 万条
- 数据库大小:500GB
问题:
- 查询越来越慢
- 存储成本高
- 备份时间长
解决方案
1. 冷热数据分离策略
数据分类:
热数据(近期):
- 最近 30 天的日志
- 频繁查询
- 存储在 MySQL 主库
- 需要快速访问
温数据(中期):
- 30-180 天的日志
- 偶尔查询
- 存储在 MySQL 从库
- 访问速度要求一般
冷数据(长期):
- 180 天前的日志
- 很少查询
- 归档到对象存储
- 成本优化2. 分区表设计
3. 数据归档
设计流程
3. 数据归档
- 步骤 1:归档或清理过期数据
- 步骤 2:归档或清理过期数据
- 步骤 3:确定要处理的数据表、业务记录和一致性边界
- 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。
4. 冷数据查询
设计流程
4. 冷数据查询
- 步骤 1:归档或清理过期数据
- 步骤 2:校验身份、密钥或权限
- 步骤 3:确定要处理的数据表、业务记录和一致性边界
- 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。