如何开启数据副本自动切主?

本文主要介绍开启数据副本自动切主。

适用版本

OceanBase 数据库所有版本。

配置方法

enable_auto_leader_switch

用于设置是否开启数据副本自动切主,默认为 True,表示开启数据副本自动切主。

OceanBase 数据库中,租户、数据库、表组和表的都有 Primary Zone 的概念,同一个分区的数据副本分布在多个 Zone 里,其中分区的主副本所在的 Zone 称为 Primary Zone。

enable_auto_leader_switch

设置为 True 后,可以通过

ALTER TENANT SET primary_zone=<zone_name>

将租户的主副本切换到其他 Zone 的节点。其中

zone_name

表示要切换到的 Zone 名称。

有关该配置项的详细信息,请参见《OceanBase 数据库 参考指南》的 系统配置项 章节。

obclient> ALTER TENANT SET primary_zone=’<zone_name>’;

在性能测试过程中,为了避免切主会选择关闭

enable_auto_leader_switch

,来保证不会有切主的动作影响性能。

obclient> ALTER SYSTEM SET enable_auto_leader_switch=‘False’;

在进行多轮性能测试的过程中,需要使用 TRUNCATE TABLE 清理数据。如果关闭了自动切主,可能会导致 TRUNCATE TABLE 后主副本不均衡。因此在测试过程中,需要关注主副本是否在每台 OBServer 上保持均衡;如果不均衡,则需要将

enable_auto_leader_switch

设置为 True,等待同步完成后再设置为 False。

可以通过以下 SQL 检查主副本是否保持均衡,如果各 Zone 中主副本的数量(即 count 列)的数值差不大于 1,则说明当前主副本保持均衡。

obclient> SELECT count(*) svr_ip,svr_port,zone FROM __all_virtual_meta_table WHERE role=1 AND tenant_id=<tenant_id> GROUP BY svr_ip ORDER BY ZONE;