Skip to content

TiDB 备份策略设计

备份策略设计原则

业务连续性优先

备份策略设计应优先考虑业务连续性,确保在发生数据丢失或系统故障时,能够快速恢复业务:

  • 明确 RTO(恢复时间目标)和 RPO(恢复点目标)要求
  • 根据业务重要性分级制定备份策略
  • 确保备份恢复流程经过测试验证
  • 定期演练备份恢复过程,提高应急响应能力

数据完整性保护

备份策略应确保数据完整性,防止数据丢失或损坏:

  • 采用可靠的备份技术,确保备份数据的完整性
  • 定期验证备份数据的可用性和完整性
  • 采用多副本备份,防止单一备份介质故障
  • 实现备份数据的版本管理,支持按时间点恢复

成本与效率平衡

备份策略设计应平衡备份成本和备份效率:

  • 根据数据重要性和变化频率选择合适的备份类型
  • 优化备份存储方案,降低存储成本
  • 合理规划备份时间窗口,减少对业务的影响
  • 采用增量备份和差异备份,减少备份数据量

备份类型选择

全量备份

全量备份是指备份整个 TiDB 集群的数据,包括所有数据库、表和索引:

  • 适用场景

    • 初始化备份
    • 定期完整备份
    • 重大变更前的备份
    • 灾难恢复演练
  • 优缺点

    • 优点:恢复速度快,无需依赖其他备份
    • 缺点:备份时间长,占用存储空间大,对系统资源消耗高
  • 实现方式

    • 使用 BR(Backup & Restore)工具进行全量备份
    • 使用 Dumpling 工具进行逻辑全量备份

增量备份

增量备份是指备份自上次全量备份或增量备份以来变更的数据:

  • 适用场景

    • 高频备份需求
    • 数据变化量大的场景
    • 缩短备份时间窗口
    • 降低存储成本
  • 优缺点

    • 优点:备份时间短,占用存储空间小,对系统资源消耗低
    • 缺点:恢复时需要依赖基础全量备份,恢复流程复杂
  • 实现方式

    • 使用 BR 工具进行增量备份
    • 使用 TiCDC 进行实时增量备份

差异备份

差异备份是指备份自上次全量备份以来变更的数据:

  • 适用场景

    • 中等频率备份需求
    • 数据变化量适中的场景
    • 平衡备份和恢复效率
  • 优缺点

    • 优点:恢复时只需要全量备份和最新差异备份,恢复流程相对简单
    • 缺点:备份数据量随时间增长,占用存储空间逐渐增大
  • 实现方式

    • TiDB 目前不直接支持差异备份,但可以通过定期全量备份+增量备份组合实现类似效果

逻辑备份 vs 物理备份

备份类型逻辑备份物理备份
工具DumplingBR
备份对象SQL 语句或数据文件底层存储数据
备份速度较慢较快
恢复速度较慢较快
跨版本兼容性较好较差
空间占用较大较小
恢复灵活性较高较低

备份存储方案设计

存储介质选择

根据备份数据的重要性和访问频率,选择合适的存储介质:

  • 本地存储

    • 适用于临时备份或测试备份
    • 优点:访问速度快,成本低
    • 缺点:容量有限,易受硬件故障影响
  • 网络存储

    • 适用于日常备份存储
    • 包括 NAS、SAN 等
    • 优点:容量大,易于扩展,支持共享访问
    • 缺点:成本较高,性能受网络影响
  • 对象存储

    • 适用于长期备份存储和灾难恢复备份
    • 包括 AWS S3、阿里云 OSS、腾讯云 COS 等
    • 优点:容量无限,按需付费,高可用性,支持跨区域复制
    • 缺点:访问延迟较高,成本随数据量增长

存储架构设计

设计可靠的备份存储架构,确保备份数据的安全性和可用性:

  • 多副本存储

    • 采用 3 副本或更多副本存储备份数据
    • 防止单一存储节点故障导致备份数据丢失
  • 跨区域存储

    • 将备份数据存储在不同地理区域
    • 防止区域级灾难导致备份数据丢失
    • 支持跨区域灾难恢复
  • 分层存储

    • 热数据:存储在高性能存储介质中,用于快速恢复
    • 温数据:存储在中性能存储介质中,用于常规恢复
    • 冷数据:存储在低成本存储介质中,用于长期归档

存储安全设计

确保备份数据的安全性,防止未授权访问和数据泄露:

  • 加密存储

    • 对备份数据进行加密存储
    • 支持对称加密和非对称加密
    • 加密密钥单独管理,定期轮换
  • 访问控制

    • 严格控制备份存储的访问权限
    • 采用最小权限原则,只有授权人员可以访问备份数据
    • 记录所有备份数据访问操作,便于审计
  • 数据完整性校验

    • 对备份数据进行完整性校验,防止数据篡改
    • 定期验证备份数据的完整性
    • 采用哈希算法或校验和进行数据完整性验证

备份频率规划

影响因素

制定备份频率时,需要考虑以下因素:

  • 业务 RPO 要求:RPO 越小,备份频率越高
  • 数据变化量:数据变化量越大,备份频率越高
  • 系统资源情况:系统资源充足,可以提高备份频率
  • 备份窗口大小:备份窗口越大,可以执行更长时间的备份
  • 存储成本:存储成本越高,需要降低备份频率或采用更高效的备份方式

推荐方案

根据不同业务场景,推荐以下备份频率方案:

  • 核心业务系统

    • 全量备份:每周 1 次
    • 增量备份:每天 1 次或每 6 小时 1 次
    • 实时备份:使用 TiCDC 进行实时复制
  • 重要业务系统

    • 全量备份:每两周 1 次
    • 增量备份:每天 1 次
  • 一般业务系统

    • 全量备份:每月 1 次
    • 增量备份:每周 1 次

备份时间窗口

合理规划备份时间窗口,减少对业务的影响:

  • 选择业务低峰期进行备份
  • 对于核心业务系统,考虑使用在线备份技术,减少对业务的影响
  • 对于大型集群,可以采用分片备份策略,将备份负载分散到不同时间窗口
  • 监控备份过程,确保备份在预定时间窗口内完成

备份验证与测试

备份验证

定期验证备份数据的可用性和完整性:

  • 自动验证

    • 使用备份工具提供的验证功能,自动验证备份数据的完整性
    • 配置定期验证任务,生成验证报告
  • 手动验证

    • 定期从备份中恢复部分数据,验证数据的可用性
    • 检查恢复数据的完整性和一致性
    • 比较恢复数据与生产数据,确保数据准确无误

恢复测试

定期进行恢复测试,确保备份恢复流程的有效性:

  • 测试频率

    • 核心业务系统:每季度至少 1 次
    • 重要业务系统:每半年至少 1 次
    • 一般业务系统:每年至少 1 次
  • 测试内容

    • 全量恢复测试
    • 增量恢复测试
    • 时间点恢复测试
    • 跨版本恢复测试
    • 灾难恢复演练
  • 测试流程

    1. 制定详细的恢复测试计划
    2. 准备测试环境,与生产环境隔离
    3. 执行恢复操作,记录恢复时间和过程
    4. 验证恢复数据的完整性和一致性
    5. 评估恢复结果,生成恢复测试报告
    6. 优化备份恢复流程,改进备份策略

常见问题(FAQ)

Q1: 如何选择合适的备份类型?

A1: 选择备份类型时需要考虑:

  • 业务 RTO 和 RPO 要求
  • 数据量和变化频率
  • 系统资源情况
  • 存储成本
  • 恢复灵活性需求

一般建议采用全量备份+增量备份的组合方案,核心业务系统可以增加实时备份。

Q2: 备份数据应该保存多久?

A2: 备份数据保存时间应根据业务需求和合规要求确定:

  • 核心业务数据:至少保存 3-6 个月
  • 重要业务数据:至少保存 1-3 个月
  • 一般业务数据:至少保存 1-4 周
  • 合规要求:根据行业法规要求,可能需要保存更长时间

建议采用分层存储策略,将不同时间的备份数据存储在不同介质中,平衡成本和可用性。

Q3: 如何确保备份过程不影响生产业务?

A3: 可以采取以下措施:

  • 选择业务低峰期进行备份
  • 调整备份工具的并发度和资源使用限制
  • 使用物理备份(BR)代替逻辑备份(Dumpling),减少对系统资源的消耗
  • 对于大型集群,采用分片备份策略
  • 监控备份过程,及时调整备份参数

Q4: 如何验证备份数据的完整性?

A4: 可以通过以下方式验证:

  • 使用备份工具的内置验证功能
  • 定期从备份中恢复部分数据进行验证
  • 对备份数据进行哈希校验
  • 比较备份前后的数据量和表结构

建议配置自动验证任务,定期生成验证报告。

Q5: 如何制定灾难恢复备份策略?

A5: 灾难恢复备份策略应考虑:

  • 跨区域备份存储,防止区域级灾难
  • 采用多副本存储,确保备份数据可用性
  • 定期进行跨区域恢复测试
  • 制定详细的灾难恢复计划,包括恢复流程和责任分工
  • 确保灾难恢复备份与生产备份分离,防止生产环境问题影响备份数据

建议将灾难恢复备份存储在与生产环境不同的云服务商或物理区域,提高灾难恢复能力。