基于 EBS 卷快照备份恢复的性能介绍
本文介绍 EBS 备份恢复的性能、性能的影响因素以及性能测试结果。以下性能指标基于 AWS region us-west-2
。
备份性能
本节介绍影响备份的性能、影响因素以及性能测试结果。
备份耗时
EBS 卷快照备份阶段包含创建备份任务、停止调度、停止 GC、获取备份时间 backupts 以及卷快照。详细信息,参考基于 EBS 卷快照的备份恢复功能架构。其中,耗时最多的阶段是创建卷快照。备份过程中卷的快照并行创建,一个备份完成时间取决于用时最长卷的快照创建完成时间。
备份耗时占比
备份阶段 | 备份耗时 | 备份总占比 | 备注 |
---|---|---|---|
创建卷快照 | 16 分钟 (50 GB) | 99% | AWS EBS 卷快照创建完成的时间 |
其他 | 1 秒 | 1% | 包含停止调度、停止 GC 及获取备份时间 backupts 的时间 |
备份性能数据
卷备份过程是完全并发进行的,因此整个备份的时间取决于耗时最久数据卷快照创建时间,与集群规模无关。该环节由 AWS EBS 服务来完成,当前 AWS 没有提供卷快照完成量化指标。根据测试,在 TiDB-Operator 推荐机型配置下,使用存储卷类型 GP3,配置 400 MiB/s 与 7000 IOPS,整个备份过程耗时大致如下:
卷数据 | 卷总容量 | 卷配置 | 大概备份时间 |
---|---|---|---|
50 GB | 500 GB | 7000IOPS/400 MiB/s | 20 分钟 |
100 GB | 500 GB | 7000IOPS/400 MiB/s | 50 分钟 |
200 GB | 500 GB | 7000IOPS/400 MiB/s | 100 分钟 |
500 GB | 1024 GB | 7000IOPS/400 MiB/s | 150 分钟 |
1024 GB | 3500 GB | 7000IOPS/400 MiB/s | 350 分钟 |
备份影响
使用 GP3 卷进行备份时,经过测试集群影响小于 3%。如下图所示,10:25 分之后发起备份。
恢复性能
本节介绍恢复的性能、影响因素以及性能测试结果。恢复性能是可扩展的,整体恢复时间取决于恢复最慢的 TiKV 节点,与集群规模没有特别大的关系。
恢复耗时
EBS 卷快照恢复阶段包含以下阶段,详细信息,参考基于 EBS 卷快照的备份恢复功能架构。
创建集群
TiDB Operator 创建 recoveryMode 的待恢复集群,启动所有 PD 节点。
卷恢复
TiDB Operator 创建 BR 卷恢复子任务,BR 从卷快照中恢复出 TiKV 启动需要的数据卷。
启动 TiKV
TiDB Operator 挂载 TiKV 卷,启动 TiKV。
数据恢复
TiDB Operator 创建 TiKV 卷数据恢复子任务,BR 把所有 TiKV 数据卷恢复到一致性状态。
启动 TiDB
启动 TiDB,恢复完成。
恢复耗时占比
恢复阶段 | 恢复大致耗时 | 恢复总占比 | 备注 |
---|---|---|---|
创建集群 | 30 秒 | 2% | 包含下载 docker image 和启动 PD 的时间 |
卷恢复 | 20 秒 | 1% | 包含启动 BR pod 和卷恢复的时间 |
启动 TiKV | 10~16 分钟 | 42% | 包含 TiKV 启动时,启动 RocksDB 及读取所有 Region 元信息的时间 |
数据恢复阶段 | 2~20 分钟 | 52% | 包含恢复 raft 共识层数据以及删除 MVCC 数据的时间 |
启动 TiDB | 1 分钟 | 3% | 包含下载 docker image 和启动 TiDB 的时间 |
恢复性能数据
卷快照恢复的时间主要取决于启动 TiKV 和恢复数据的时间,启动 TiKV 和恢复数据都需要读取卷数据。通过快照恢复的卷,其中的数据会延迟加载,即刚刚恢复完成后,不能立刻达到最佳性能。这是因为,数据只有从 Amazon S3 下载完成并写入到恢复的卷之后,后续才能访问。
该延迟加载操作需要一些时间才能完成,并且可能会导致首次访问每个块时的 I/O 操作延迟大大提高。受 EBS 卷快照恢复卷延迟加载的影响,TiKV 启动和数据恢复这两个阶段耗时最长。根据测试,在 TiDB Operator 推荐 EC2 机型配置下使用 GP3 如下配置,整个恢复时间大致如下:
卷数据 | 卷总容量 | 卷配置 | 恢复大致耗时 |
---|---|---|---|
50 GB | 500 GB | 7000IOPS/400 MiB/s | 16 分钟 |
100 GB | 500 GB | 7000IOPS/400 MiB/s | 18 分钟 |
200 GB | 500 GB | 7000IOPS/400 MiB/s | 21 分钟 |
500 GB | 1024 GB | 7000IOPS/400 MiB/s | 25 分钟 |
1024 GB | 3500 GB | 7000IOPS/400 MiB/s | 34 分钟 |