这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
数据归档策略
随着业务增长,数据库表越来越大。为了防止无限膨胀,我们需要设计数据归档策略。
为什么要归档?
数据增长趋势:
第 1 个月:10 万条 → 查询正常
第 3 个月:500 万条 → 查询变慢
第 6 个月:2000 万条 → 备份困难
第 12 个月:5000 万条 → 需要改变归档的好处
| 好处 | 说明 |
|---|---|
| 控制主表大小 | 保持热数据表在合理范围 |
| 提升查询性能 | 减少扫描数据量 |
| 降低备份成本 | 备份时间窗口缩短 |
| 合规要求 | 满足数据保留政策 |
数据分层策略
数据分层架构
热数据层(Hot)
- MySQL 主库
- 最近 30 天数据
- 频繁访问,需要索引优化
温数据层(Warm)
- MySQL 从库 / 归档表
- 30-90 天数据
- 偶尔访问,查询走从库
冷数据层(Cold)
- 对象存储 / CSV 文件
- 90 天以上数据
- 极少访问,按需查询
归档方案实现
方案 A:归档到文件
设计流程
方案 A:归档到文件
- 步骤 1:归档或清理过期数据
- 步骤 2:读取 API Key、调用方信息和请求上下文
- 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
- 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。
方案 B:归档到历史表
设计流程
方案 B:归档到历史表
- 步骤 1:生成认证结果并绑定用户、应用和权限范围
- 步骤 2:归档或清理过期数据
- 步骤 3:读取 API Key、调用方信息和请求上下文
- 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。
方案 C:使用分区表
定时归档任务
设计流程
定时归档任务:部署操作
- 步骤 1:准备运行环境并启动服务
- 步骤 2:发起验证请求或压测流量
- 步骤 3:读取 API Key、调用方信息和请求上下文
- 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。
数据保留政策
保留策略配置
设计流程
保留策略配置
- 步骤 1:读取 API Key、调用方信息和请求上下文
- 步骤 2:按一致性要求、数据温度和失败情况选择处理路径
- 步骤 3:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。
自动化清理
设计流程
自动化清理
- 步骤 1:归档或清理过期数据
- 步骤 2:读取 API Key、调用方信息和请求上下文
- 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
- 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。
归档监控
监控指标
设计流程
监控指标
- 步骤 1:生成认证结果并绑定用户、应用和权限范围
- 步骤 2:读取 API Key、调用方信息和请求上下文
- 步骤 3:按一致性要求、数据温度和失败情况选择处理路径
- 步骤 4:写入数据变更结果,并保留校验和回滚依据
关注点:一致性、查询性能、归档边界和可回滚性。
告警配置
设计流程
告警配置
- 步骤 1:归档或清理过期数据
- 步骤 2:采集健康状态并触发告警
- 步骤 3:读取 API Key、调用方信息和请求上下文
- 步骤 4:按一致性要求、数据温度和失败情况选择处理路径
关注点:一致性、查询性能、归档边界和可回滚性。