基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
1F-1F-1F 三节点分布在三个地域的 OceanBase 集群创建多副本业务租户时失败的原因和解决方法
更新时间:2026-06-04 01:56
本文主要介绍 1F-1F-1F 三节点分布在三个地域的 OceanBase 集群创建多副本业务租户时失败的原因和解决方法。
问题现象
OceanBase 集群分布架构如下图所示:三台 OBServer 机器分别位于不同地域的不同机房中:

继续通过 OCP 为该集群创建业务租户时遇到了报错:


由上述可知 1F-1F-1F 的三节点 OceanBase 集群,三个 Zone 分别在不同的三个 Region,不管创建什么样的 Primary_zone 的业务租户,都会遇到报错:租户 Zone 第一优先级 [zone1] 所在的地域 Hangzhou 需要至少有 2 个全功能型副本,实际只有 1 个全功能型副本,或者报错:租户 Zone 第一优先级 [zone1, zone2] 不允许跨地域,实际跨地域 [Hangzhou, shanghai]。
问题原因
因为 OBServer 内核的限制,创建业务租户时,Primary Zone 目前不支持跨 Region:
MySQL [oceanbase]> create resource unit unit1 min_cpu=3, max_cpu=3, memory_size='12g';
Query OK, 0 rows affected (0.005 sec)
MySQL [oceanbase]> create resource pool pool1 unit = 'unit1', unit_num = 1, zone_list = ('zone1', 'zone2', 'zone3');
Query OK, 0 rows affected (0.016 sec)
MySQL [oceanbase]> create tenant mysqlt resource_pool_list = ('pool1'), primary_zone = 'RANDOM' set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql', recyclebin = off;
ERROR 1235 (0A000): tenant primary zone span regions not supported
MySQL [oceanbase]>
MySQL [oceanbase]> create tenant mysqlt resource_pool_list = ('pool1'), primary_zone = 'zone1,zone2' set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql', recyclebin = off;
ERROR 1235 (0A000): tenant primary zone span regions not supported
MySQL [oceanbase]>
MySQL [oceanbase]> create tenant mysqlt resource_pool_list = ('pool1'), primary_zone = 'zone1,zone2,zone3' set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql', recyclebin = off;
ERROR 1235 (0A000): tenant primary zone span regions not supported
同时 OBServer 内核要求多副本业务租户 Zone 第一优先级 [zone1] 所在的地域需要至少有 2 个全功能型 F 副本:
MySQL [oceanbase]> create resource unit unit1 min_cpu=3, max_cpu=3, memory_size='12g';
Query OK, 0 rows affected (0.005 sec)
MySQL [oceanbase]> create resource pool pool1 unit = 'unit1', unit_num = 1, zone_list = ('zone1', 'zone2', 'zone3');
Query OK, 0 rows affected (0.016 sec)
MySQL [oceanbase]> create tenant mysqlt resource_pool_list = ('pool1'), primary_zone = 'zone1' set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql', recyclebin = off;
ERROR 4179 (HY000): primary zone F type replica not enough in its region not allowed
MySQL [oceanbase]>
MySQL [oceanbase]> create tenant mysqlt resource_pool_list = ('pool1'), primary_zone = 'zone1;zone2,zone3' set ob_tcp_invited_nodes = '%', ob_compatibility_mode = 'mysql', recyclebin = off;
ERROR 4179 (HY000): primary zone F type replica not enough in its region not allowed
适用版本
OceanBase 数据库 V2.x、V3.x、V4.x 版本。
OCP V3.x、V4.x 版本。
解决方法
当前
1F-1F-1F三节点分布在不同地域的 OceanBase 集群只支持创建单副本业务租户:
如果需要创建多副本租户,需要先卸载集群后,重新设置主机的 Region,保证同一个Region下至少存在两个 Zone。
使用其它推荐的高可用部署方案,详情请参见:三地五中心五副本部署。