首批通过分布式安全可靠测评,为关键业务系统打造
扩展 OceanBase 集群及租户的高可用
更新时间:2026-04-14 15:11:01
本节为您介绍如何通过 OCP 扩展 OceanBase 集群及租户的高可用能力。
应用场景
- 拓展机房数量,提供更可靠的高可用能力,例如 2 地 3 中心 部署模式扩容为 3 地 5 中心 部署模式。
- 业务迁移机房,在几乎不影响业务访问的情况下,将 OceanBase 集群的所有 Server 迁移到其他机房。
前提条件
- 添加 Zone 前,OceanBase 集群必须为 运行中 状态。
- OCP 中存在可部署 OBServer 的主机。
- 添加租户副本前,租户必须为 运行中 状态。
注意事项
OceanBase V4.0 及之后版本,要求租户中每个副本的 Unit 数量保持一致。添加租户副本前,需保证 Zone 中有足够的主机资源。
新增 Zone 之前,需确保扩容的所有主机与 OceanBase 集群的时钟源保持一致,时差不超过 10ms。
检查方法为:在 OceanBase 集群 RS Leader 主机上 clockdiff 扩容主机 IP,检查具体时差。
仲裁服务要求租户必须为 2F/4F 模式,如果租户开启了仲裁服务,此时只能从 2F 扩展为 4F。
操作步骤
新增副本 为异步任务,触发任务后由 RS 后台调度逐步完成,如果数据量较大,数据复制需要较长时间。建议参考如下命令定期检查数据复制状态:
# 连接 OceanBase 集群 sys 租户的 oceanbase 库
mysql -hxxx.xxx.xxx.xxx -P2881 -uroot@sys -Doceanbase
# 检查 RS 历史任务记录,出现 tenant_balance_finished 说明数据复制已完成
select * from __all_rootservice_event_history order by gmt_create desc limit 10;
# 检查 server 状态,start 要晚于 offline 时间,状态 active
select svr_ip, gmt_modified, zone, usec_to_time(start_service_time), usec_to_time(last_offline_time), status from __all_server;
# 检查数据副本是否补齐,<副本数> 替换为预期副本数,返回为空说明已补齐
select /*+read_consistency(weak)*/ count(*)c from gv$partition group by table_id, partition_id having c != <副本数>;
# 检查日志是否同步,返回为空说明已同步
select svr_ip, svr_port, table_id, partition_idx from __all_virtual_clog_stat where is_in_sync= 0 and is_offline = 0 and replica_type != 16;
常见问题
Q1:新增租户副本时,用文中给出的方式查询数据复制过慢。 A:可参考如下命令适当提高数据复制并发参数,加速迁移。
# 检查集群数据复制并发参数,记录该参数用于回滚配置
show parameters like "%data_copy_concurrency%";
show parameters like "%server_data_copy_out_concurrency%";
show parameters like "%server_data_copy_in_concurrency%";
# 提高并发参数
alter system set data_copy_concurrency=100;
alter system set server_data_copy_out_concurrency=40;
alter system set server_data_copy_in_concurrency=40;
您可在 OCP 资源管理界面查看租户副本分布,详情请参见 查看 Unit 分布。
