首批通过分布式安全可靠测评,为关键业务系统打造
备份恢复性能调优
更新时间:2026-07-10 11:28:39
性能调优手段
理想情况下,备份恢复的性能应当仅受限于数据分布(分区数量和分区大小)及硬件(CPU、磁盘、网络)性能,但在默认配置下,备份恢复可能无法充分发挥硬件性能,为此,OceanBase 数据库提供了资源隔离策略及以下配置项,对备份恢复进行性能调优:
网络配置:配置项
sys_bkgd_net_percentage用于限制后台系统任务(包含备份恢复任务)可占用总网络带宽的百分比。将sys_bkgd_net_percentage设置为合适的值有助于备份恢复任务在不影响前台业务的前提下充分利用网络带宽资源。CPU、IO 配置:同时,Oceanbase 数据库还提供了 Resource Manager 资源隔离机制来限制不同类型的任务的 CPU、IO 使用量。如果为备份恢复任务配置了资源隔离,请根据实际资源和业务需求来设置上限,避免备份恢复任务的 CPU 和 IO 使用量达到瓶颈。
其他配置:在保证 CPU、IO 以及网络资源充足的情况下,还可以通过设置相关配置项(
ha_low_thread_score、log_archive_concurrency、log_restore_concurrency、ha_high_thread_score等)来提高备份恢复任务的并发度以进一步提升性能。
资源配置相关
集群级配置项 sys_bkgd_net_percentage
配置项 sys_bkgd_net_percentage 用于设置后台系统任务可占用的网络带宽百分比,默认值为机器网卡速率的 60%。带宽满时,在不影响业务请求的前提下,可以适当调大配置项 sys_bkgd_net_percentage 的值。
设置成功后,可以通过以下方式查看日志:
使用
admin用户登录 OBServer 节点所在的机器。进入 OceanBase 数据库软件的安装目录。
以下以 OceanBase 数据库软件的安装路径为
/home/admin/oceanbase/为例,操作时请以实际环境为准。[admin@xxx /]$ cd /home/admin/oceanbase执行以下命令,查看网卡速率。
[admin@xxx oceanbase]$ grep -E 'print band limit|succeed to init_bandwidth_throttle' log/observer.log*其中,
observer.log为集群启动时的 observer 日志。例如,查询结果如下:
log/observer.log.20210811100806:[2021-08-11 10:06:32.934433] INFO [SERVER] ob_server.cpp:1783 [76957] [0] [Y0-0000000000000000] [lt=4] [dc=0] succeed to init_bandwidth_throttle(sys_bkgd_net_percentage_=60,ethernet_speed_=1310720000,rate=786432000) log/observer.log.20210811100806:[2021-08-1110:07:42.351813] INFO [COMMON] utility.cpp:1487 [77169][418] [Y9FA64586E9E-0005C93F15DAE715] [lt=11] [dc=0] print band limit(comment= in , copy_KB=0, sleep_ms_sum=0, speed_KB_per_s=0, total_sleep_ms=0,total__bytes=531, rate_KB/s=786432,print_interval_ms=69417)第一条查询结果中,
sys_bkgd_net_percentage_=60表示后台系统任务可占用的网络带宽为机器网卡速率的 60%;network_speed=1310720000表示 OceanBase 数据库识别的机器网卡的最大速率为 1310720000 B/s;rate=786432000表示限速后的最大速率为 786432000 B/s,且rate = network_speed * sys_bkgd_net_percentage。第二条查询结果中,
rate_KB/s=786432表示 OceanBase 数据库识别的限速后的最大速率(rate)为 786432 KB/s。
由于 OceanBase 数据库识别到的网卡速率可能不准,查看日志后,如果发现 OceanBase 数据库识别的速率与实际不一致,可以参考 网卡速率检查 来进行修改。
修改完成后,可以查看视图 V$OB_NIC_INFO 来确认修改后的网卡速率是否生效。
Resource Manager 的资源隔离
Resource Manager 是 OceanBase 数据库的资源隔离机制,通过 Function 级资源隔离可以配置不同后台任务的资源上限,包括 CPU、IOPS、网络带宽等。有关资源隔离的详细介绍,参见 资源隔离概述。
Function 级资源隔离中,与备份恢复相关的后台任务如下:
- ha_high:复制、Rebuild 和恢复等高优先级高可靠任务。
- ha_mid:中优先级高可靠任务,例如迁移任务。
- ha_low:备份和备份清理等低优先级高可靠任务。
可以通过视图 DBA_OB_RSRC_DIRECTIVES 来查看当前租户配置的资源隔离计划,如果查询结果为空,则表示租户未配置资源隔离计划。如果查询到后台任务对应的记录,可以先观察 CPU、IO、网络带宽等是否已达到瓶颈并且与资源隔离的限制相符,如果确认相符,建议在不影响前台业务的前提下,适当修改资源隔离计划。修改资源计划的详细操作,参见 更新资源管理计划内容(MySQL 模式) 和 更新资源管理计划内容(Oracle 模式)。
执行备份恢复的性能测试时,不建议配置资源隔离计划。
数据备份相关
| 配置项 | 描述 | 默认值 | 配置说明 |
|---|---|---|---|
| ha_low_thread_score | 租户级配置项,用于控制数据备份的并发数。 | 0,表示默认并发数为 2 | 小规格租户(租户 CPU ≤ 4C)建议设置为默认值;大规格租户可以先设置为 10,如果发现备份速度过慢,可以按需翻倍调整。执行备份恢复的性能测试时,建议直接调整到最大值 100。 |
日志归档相关
| 配置项 | 描述 | 默认值 | 配置说明 |
|---|---|---|---|
| log_archive_concurrency | 租户级配置项,用于控制日志归档的并发数。 | 0,在当前版本中,表示根据租户的 MAX_CPU 按照以下自适应规则计算归档工作线程数:
|
建议大、小规格的租户均保持为默认值,按自适应规则来计算工作线程数。 |
物理恢复相关
| 配置项 | 描述 | 默认值 | 配置说明 |
|---|---|---|---|
| log_restore_concurrency | 租户级配置项,用于控制日志恢复的并发数。 | 0,表示以租户的 MAX_CPU 的核数作为并发数 |
调大该配置项的值,除了会增加工作线程,同时也会增加内存资源的开销。建议统一设置为默认值 0,如果发现恢复速度过慢,再根据机器的实际资源适当调大该配置项的值。 |
| ha_high_thread_score | 租户级配置项,用于控制数据恢复的并发数。 | 0,表示默认并发数为 8 | 非性能测试时建议使用默认值,执行备份恢复的性能测试时建议调整到最大值 100。 |
| _restore_idle_time | 集群级隐藏配置项,用于控制 RS 恢复的调度间隔。 | 1m,表示 1 分钟 | 调整为 10s 的情况下,数据恢复的耗时会减少几十秒至两分钟时间不等,建议针对有较高性能要求的小规格租户(租户 CPU ≤ 4C)进行调整,否则效果不明显。 |
表级恢复相关
物理恢复辅助租户阶段
通过 表级恢复相关视图介绍 中的视图获取与该任务关联的临时辅助租户的名称,辅助租户名称默认以 AUX 为前缀开头进行标识。
表级恢复中物理恢复辅助租户阶段与物理恢复一致,该阶段相关的性能调优,可参考本文档中 物理恢复相关 的内容进行调优。
跨租户导表阶段
| 配置项 | 描述 | 默认值 | 配置说明 |
|---|---|---|---|
| ddl_thread_score | 租户级配置项,用于控制租户所在 OBServer 节点的表级恢复线程池的容量。 | 0,表示默认表级恢复线程池的容量为 2 |
|
| recover_table_concurrency | 租户级配置项,用于控制多表并行恢复的并行度,设置允许多少个表同时执行跨租户导表。 | 0,表示默认允许 1 个表执行跨租户导表 | 建议统一设置为默认值 0。此外:
注意跨租户导表会消耗大量的临时存储空间和内存资源,建议结合租户的资源情况合理调大。其中,临时存储空间的消耗是在重建索引阶段,如果表的数据量很大,可能会消耗大量的临时空间。临时空间消耗大可能导致出现查询失败,事务回滚、服务不可用等问题。 |
| recover_table_dop | 租户级配置项,用于控制单表恢复的并行度。 | 0,表示默认并行度为 1 | 建议统一设置为 8 或 16,即能满足大部分场景要求。 如果需要恢复的表是数据量较大的非分区表或恢复的表存在一个数据量较大的分区,建议根据分区数据量翻倍调大 |