本文主要介绍开启数据副本自动切主。
适用版本
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;