# [FAQ] BR 备份对 TiDB 集群的性能影响
 
## Key Words

BR, 备份对集群的影响, 备份 注意事项

## Description

尽管 BR 备份时设置了限流 ratelimit 30M/s，如果备份线程数 num-threads 设置较大比如大于 8，在 Backup CPU Utilization 实际使用率较低（比如<200%）的情况下，BR 备份仍有可能对 TiDB Duration 产生显著影响。

![br-effect-performance](/images/BR/br-effact-performance.png)

## Root Cause

备份会从 region leader 中读取 key，mvcc scan 会占用磁盘带宽， 影响 raft 的处理效率，从而影响 storage async write duration。

## Diagnostic Steps

目前缺少明确的证据和诊断方法，仅从问题现象和测试复现情况推断：

```yaml
ratelimit = 120M, num-threads = 32：TiDB 999 Duration 升到 10min+

ratelimit = 30M, num-threads = 32：TiDB 999 Duration 升到 3s+

ratelimit = 30M, num-threads = 8: TiDB 999 Duration 升到 2s+

ratelimit = 30M, num-threads = 4: TiDB 999 Duration 基本没有变化
```

## Resolution

运行在线业务的集群，如果不希望 BR 备份导致 Duration 抖动，推荐将 BR 备份线程数 num-threads 调整到小于8，同时使用 ratelimit 限流。

5.4 版本支持 auto tune，可以自动限制备份使用的资源，但仍有可能无法彻底移除备份对集群的影响，详见 [BR 自动调节](https://docs.pingcap.com/zh/tidb/stable/br-auto-tune)。

## Workaround

使用 Dumpling 在运维专用的 TiDB 实例上执行备份任务，同样要限制备份线程数防止读请求对 TiKV 产生过大压力，备份大表时还需注意控制内存使用防止 TiDB OOM，参考 [控制导出 TiDB 大表（超过 1 TB）时的内存使用]([<https://docs.pingcap.com/zh/tidb/stable/dumpling-overview##%E6%8E%A7%E5%88%B6%E5%AF%BC%E5%87%BA-tidb-%E5%A4%A7%E8%A1%A8%E8%B6%85%E8%BF%87-1-tb%E6%97%B6%E7%9A%84%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#%23%E6%8E%A7%E5%88%B6%E5%AF%BC%E5%87%BA-tidb-%E5%A4%A7%E8%A1%A8%E8%B6%85%E8%BF%87-1-tb%E6%97%B6%E7%9A%84%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8))。

## Affected Versions

All

> **注意**
> 
> 根据 [文档描述](https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-faq##br-%E5%A4%87%E4%BB%BD%E6%97%B6%E5%AF%B9%E9%9B%86%E7%BE%A4%E5%BD%B1%E5%93%8D%E5%A4%9A%E5%A4%A7)：
>
> 1. 为了减少 BR 备份对集群的影响，有两种方案：方案一是使用 –ratelimit 限速，方案二是调节备份线程数 backup.num-threads。从实际情况看，方案二的效果更加显著。
> 2. 过往的测试数据表明，当 BR 备份的线程数量不大于 8、集群总 CPU 利用率不超过 60% 时，BR 备份任务对集群（无论读写负载）几乎没有影响。这个结论用户测试时不成立。