首批通过分布式安全可靠测评,为关键业务系统打造
切主
更新时间:2026-05-25 17:18:12
OceanBase 数据库可以打开自动切主参数,在节点宕机后可正常提供服务;也可以通过 stop server 或者修改 primary_zone list 实现切换主副本。
场景描述
OceanBase 中由分区的主(leader)提供对外读写服务,非弱一致性读的 SQL 都在主上执行。当主副本所在机器有问题时,应用可能出现短暂报错,此时可尝试将主副本切到其它机器,来保证正常提供服务。
业务影响
主副本切到其它机房后 SQL 将通过 proxy 跨机房访问主,SQL RT 会增加,每条 SQL 大概增加数毫秒,具体抖动幅度视具体环境情况而定。
操作步骤
保留日志
保留 OBServer 服务相关日志。
目录:
/home/admin/oceanbase/log如果发生 core,保留 core 文件。
目录:
/data/1/(core 文件存储放在数据文件目录下)
具体操作
检查自动切主参数
enable_auto_leader_switch。该参数值若为
TRUE,则已打开自动切主,无需进行任何操作,等待 OceanBase 集群自动切主即可;该参数值若为FALSE,则执行第二步。执行以下 SQL 语句,停掉当前故障主机,此后 OceanBase 数据库会自行切主到正常运行的服务器上。
obclient> ALTER system stop server '$server_ip$:2882';说明
语句中的
$server_ip$需要替换为对应机器 IP。或者通过修改 primary_zone list 实现切主。SQL参考如下:
obclient> ALTER TENANT tenant_name PRIMARY_ZONE 'zone_name';
验证步骤
登录集群 sys 租户,查询主副本分布情况:
obclient> SELECT count(1),svr_ip FROM __all_meta_table WHERE role=1 group by svr_ip order by 1 desc;
查看对应 IP 已经没有主副本。
同时检查关闭当前服务后,应用是否持续报错。