如何增加主备库同步时备集群的同步效率?

批量导入场景下,例如主库为 2-2-2 集群,备库为 1-1-1 集群,如果主备库配置不一致,会导致备集群需要承担更大的压力。这种场景下,备集群内存占用量很大,会导致主集群与备集群数据不同步。本文主要介绍在批量导入结束后,如何调整参数以提升同步效率。

适用版本

OceanBase 数据库 V2.2.30 及后续版本。

配置步骤

可以根据场景,在备集群上调整以下参数。

注意以下参数需根据实际情况(服务器 CPU 数量、内存大小)动态调整,有关具体参数值请联系 OceanBase 技术支持。

  1. 根据备集群服务器的 CPU 数量,调整 L0 与 L1 转储并发数。
  2. 其中 _mini_merge_concurrency 用于控制 OceanBase 数据库 L0 转储的工作线程数,minor_merge_concurrency 用于控制 OceanBase 数据库 L1 转储的工作线程数。

obclient> ALTER SYSTEM SET _mini_merge_concurrency = 20; obclient> ALTER SYSTEM SET minor_merge_concurrency = 48;

  1. 说明_mini_merge_concurrency 设置为 0 时,由 minor_merge_concurrency 参数控制 OceanBase L0、L1 的通用转储工作线程数。配置 _mini_merge_concurrency 参数后,L0 转储的工作线程与通用转储工作线程独立。
  2. 减少触发冻结转储的比例。
  3. freeze_trigger_percentage 用于设置触发全局冻结的租户使用内存阈值。该参数越小,就会越发频发地进行转储,从而减少备库内存占用。

obclient> ALTER SYSTEM SET freeze_trigger_percentage = 40;

  1. 调大系统的 IO 限速。
  2. sys_bkgd_io_low_percentage 用于设置系统后台 IO 最少占用百分比,sys_bkgd_io_high_percentage 用于设置系统后台 IO 最高占用百分比。

obclient> ALTER SYSTEM SET sys_bkgd_io_low_percentage = 100; obclient> ALTER SYSTEM SET sys_bkgd_io_high_percentage = 100;

  1. 注意sys_bkgd_io_low_percentage 与 sys_bkgd_io_high_percentage 仅推荐在备库修改,在主库配置该参数会影响写入速度。

关于上文提到的各配置项的详细信息,请参见《OceanBase 数据库 参考指南》中 配置项 章节。

1 个赞