【产品名称】OB 社区版
【产品版本】build_version: 3.1.1_4-8c615943cbd25a6f7b8bdfd8677a13a21709a05e(Oct 21 2021 10:33:14)
【问题描述】
新搭建的ob群集创建好之后,执行创建租户时语句报错:
mysql> create tenant obcp_t1 charset=‘utf8mb4’,replica_num=1,zone_list=(‘zone1,zone2,zone3’),primary_zone=‘zone2,zone3,zone1’,resource_pool_list=(‘mini_pool_t1’) set ob_tcp_invited_nodes=’%’;
ERROR 1235 (0A000): tenant primary zone span regions when GTS is on not supported
从报错字面来看,是创建租户时,primary zone不能跨region。
咨询了阿里技术支持同事,告知是2个zone必须在相同的region,然后才能指定primary zone 到不同的zone。比如zone1/zone2 在同一个region,可以指定zone1/zone2 为primary zone。
深入排查:
排查发现新群集由于是手动初始化,执行初始化语句是zone2/zone3没有指定region属性。
– //正常初始化群集语句
alter system bootstrap REGION “sys_region” ZONE “zone1” SERVER “1.1.1.1:5022”,REGION “sys_region” ZONE “zone2” SERVER “2.2.2.2:5022”,REGION “sys_region” ZONE “zone3” SERVER “3.3.3.3:5022”;
– //本次手动初始化语句,zone2/zone3少了region属性,导致zone1和zone2/zone3 归属不同的region
alter system bootstrap REGION “sys_region” ZONE “zone1” SERVER “1.1.1.1:5022”,ZONE “zone2” SERVER “2.2.2.2:5022”,“zone3” SERVER “3.3.3.3:5022”;
也可以通过下面语句来验证:
mysql> select * from __all_zone where name =‘region’;
±---------------------------±---------------------------±------±-------±------±---------------+
| gmt_create | gmt_modified | zone | name | value | info |
±---------------------------±---------------------------±------±-------±------±---------------+
| 2021-12-23 13:20:24.349978 | 2021-12-23 13:20:24.349978 | zone1 | region | 0 | sys_region |
| 2021-12-23 13:20:24.351031 | 2021-12-23 13:20:24.351031 | zone2 | region | 0 | default_region |
| 2021-12-23 13:20:24.351031 | 2021-12-23 13:20:24.351031 | zone3 | region | 0 | default_region |
±---------------------------±---------------------------±------±-------±------±---------------+
解决办法:
把zone2/zone3 改为和zone1一样的region。
mysql> alter system alter zone ‘zone2’ region ‘sys_region’;
Query OK, 0 rows affected (0.00 sec)
mysql> alter system alter zone ‘zone3’ region ‘sys_region’;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from __all_zone where name =‘region’;
±---------------------------±---------------------------±------±-------±------±-----------+
| gmt_create | gmt_modified | zone | name | value | info |
±---------------------------±---------------------------±------±-------±------±-----------+
| 2021-12-23 13:20:24.349978 | 2021-12-23 16:06:24.853658 | zone1 | region | 0 | sys_region |
| 2021-12-23 13:20:24.351031 | 2021-12-23 16:06:30.097385 | zone2 | region | 0 | sys_region |
| 2021-12-23 13:20:24.351031 | 2021-12-23 16:06:34.389507 | zone3 | region | 0 | sys_region |
±---------------------------±---------------------------±------±-------±------±-----------+
3 rows in set (0.00 sec)
在执行创建租户语句就没问题了
mysql> create tenant obcp_t1 charset=‘utf8mb4’,replica_num=1,zone_list=(‘zone1,zone2,zone3’),primary_zone=‘zone2,zone3,zone1’,resource_pool_list=(‘mini_pool_t1’) set ob_tcp_invited_nodes=’%’;
Query OK, 0 rows affected (0.82 sec)