首批通过分布式安全可靠测评,为关键业务系统打造
优化日志同步性能
更新时间:2026-06-02 14:19:40
物理备库的同步性能受数据库负载、存储介质以及网络带宽等多方面因素的影响,在不考虑这些因素的情况下,基于日志归档的物理备库提供了两个配置项 log_archive_concurrency 和 log_restore_concurrency,分别用于控制日志归档和日志恢复的并发度。
注意事项
注意
由于调大 log_archive_concurrency 和 log_restore_concurrency 两个配置项的默认值,均会为日志归档和日志恢复分配更多的 CPU 和内存资源,可能对正常的数据库执行带来负面影响,故在未确定有明确的性能瓶颈并经过实际验证的情况下,不建议修改配置项 log_archive_concurrency 和 log_restore_concurrency 的默认值。
调整备租户的日志同步性能
调整备租户恢复日志的并发度
在备租户的日志同步过程中,如果发现备租户的同步进度与主租户相差较大,则表示备租户的日志同步可能落后于主租户。您可以在备租户与恢复源之间带宽足够的前提下,尝试通过修改租户级配置项 log_restore_concurrency 来调整备租户恢复日志的并发度,进而提高备租户的日志同步性能。
查看备租户日志同步状态的详细操作,请参见 查看日志同步进度。
使用管理员用户登录备租户或备租户所在集群的
sys租户。选择合适的语句,设置配置项
log_restore_concurrency。租户级配置项
log_restore_concurrency用于配置日志恢复总的工作线程数量,取值范围为 [0, 100],默认值为0,表示使用 OceanBase 数据库自适应的日志恢复并行度。该配置项的修改为动态生效,不需要重启 OBServer 节点。建议使用默认值。注意
对于小规模租户(CPU 为 2C、4C 的租户),建议使用默认值,不要调整该配置项的值。
如果确认备租户与恢复源之间的带宽足够,可以尝试提高并发度。恢复源的介质为 NFS 的情况下,
log_restore_concurrency设置为5可以满足绝大多数场景。SQL 语句如下:
ALTER SYSTEM SET log_restore_concurrency = value [TENANT [=] tenant_name];语句使用说明:
SET:MySQL 模式下,该关键字为可选。value:指定修改后的配置项的值。TENANT [=] tenant_name:仅系统租户可以通过指定租户的方式设置租户级配置项。
示例如下:
备租户调整本租户的日志同步性能
obclient> ALTER SYSTEM SET log_restore_concurrency = 5;sys租户调整指定租户的日志同步性能obclient> ALTER SYSTEM SET log_restore_concurrency = 5 TENANT = standby_tenant;
有关配置项
log_restore_concurrency的更多信息,请参见 log_restore_concurrency。
关闭网络备库上的并行日志传输协议
在并行日志传输框架下,备租户(备库)发送 RPC 的频率会更加频繁,出于性能或稳定性的考虑,可以关闭网络备库上的并行日志传输协议,从而减少性能开销。
使用管理员用户登录备租户或备租户所在集群的
sys租户。查看当前配置项
_ob_enable_standby_db_parallel_log_transport的值。租户级隐藏配置项
_ob_enable_standby_db_parallel_log_transport用于控制是否开启网络备库上的并行日志传输协议,默认值为True,表示开启网络备库上的并行日志传输协议。该配置项的修改为动态生效,不需要重启 OBServer 节点。MySQL 模式Oracle 模式MySQL 模式下查询隐藏配置项的值:
obclient [oceanbase]> SELECT * FROM oceanbase.GV$OB_PARAMETERS WHERE NAME LIKE '_ob_enable_standby_db_parallel_log_transport';Oracle 模式下查询隐藏配置项的值:
obclient [SYS]> SELECT * FROM SYS.GV$OB_PARAMETERS WHERE NAME LIKE '_ob_enable_standby_db_parallel_log_transport';查询结果如下:
+----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ | SVR_IP | SVR_PORT | ZONE | SCOPE | TENANT_ID | NAME | DATA_TYPE | VALUE | INFO | SECTION | EDIT_LEVEL | DEFAULT_VALUE | ISDEFAULT | +----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ | 172.xx.xxx.xxx | 2882 | zone1 | TENANT | 1004 | _ob_enable_standby_db_parallel_log_transport | NULL | True | Specifies whether the parallel log transport protocol is enabled on the standby database. The parallel log transport protocol is enabled only if this parameter is true and the primary database is compatible with the parallel log transport protocol. | LOGSERVICE | DYNAMIC_EFFECTIVE | True | YES | +----------------+----------+-------+--------+-----------+----------------------------------------------+-----------+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+-------------------+---------------+-----------+ 1 row in set选择合适的语法,设置配置项
_ob_enable_standby_db_parallel_log_transport。SQL 语句如下:
ALTER SYSTEM [SET] _ob_enable_standby_db_parallel_log_transport = value [TENANT [=] tenant_name];语句使用说明:
SET:MySQL 模式下,该关键字为可选。value:指定修改后的配置项的值。TENANT [=] tenant_name:仅系统租户可以通过指定租户的方式设置租户级配置项。
示例如下:
备租户关闭本租户上的并行日志传输协议
MySQL 模式Oracle 模式MySQL 租户关闭本租户上的并行日志传输协议:
obclient> ALTER SYSTEM SET _ob_enable_standby_db_parallel_log_transport = False;Oracle 租户关闭本租户上的并行日志传输协议:
obclient> ALTER SYSTEM SET "_ob_enable_standby_db_parallel_log_transport" = False;sys租户关闭指定租户上的并行日志传输协议obclient> ALTER SYSTEM SET _ob_enable_standby_db_parallel_log_transport = False TENANT = standby_tenant;
调整主租户的日志归档速度
在主租户的日志归档过程中,如果发现主租户的归档位点与当前时间相差较大,则表示主租户的日志归档速度可能存在瓶颈,可以尝试通过修改租户级配置项 log_archive_concurrency 来调整主租户日志归档的并发度,进而提高主租户的日志归档速度。
查看主租户日志归档进度的详细操作,请参见 查看归档进度。
使用管理员用户登录主租户或主租户所在集群的
sys租户。选择合适的语法,设置配置项
log_archive_concurrency。租户级配置项
log_archive_concurrency用于配置日志归档总的工作线程数量。该配置项为动态生效,不需要重启 OBServer 节点。该配置项的取值范围为 [0, 100],默认值为0,表示使用 OceanBase 数据库自适应的日志归档并行度。建议使用默认值。注意
对于小规模租户(CPU 为 2C、4C 的租户),建议使用默认值,不要调整该配置项的值。
SQL 语句如下:
ALTER SYSTEM [SET] log_archive_concurrency = value [TENANT [=] tenant_name];语句使用说明:
SET:MySQL 模式下,该关键字为可选。value:指定修改后的配置项的值。TENANT [=] tenant_name:仅系统租户可以通过指定租户的方式设置租户级配置项。
示例如下:
主租户调整本租户的日志归档速度
obclient> ALTER SYSTEM SET log_archive_concurrency = 10;sys租户调整指定主租户的日志归档速度obclient> ALTER SYSTEM SET log_archive_concurrency = 10 TENANT = mysql;
有关配置项
log_archive_concurrency的更多信息,请参见 log_archive_concurrency。