问题现象
修改租户的 primary_zone 报错 4019,size overflow。
MySQL [oceanbase]> alter tenant sys primary_zone = 'zone1_cnhbnp01_bdu_cn_bj_f,zone2_cnhbnp01_bdu_cn_bj_d;zone3_cnbd01_bdu_bd_d';
ERROR 4019(HY000):Size overflow
问题原因
zone_name str 过长导致(超 128 字节),这里指的是所有 zone 一起的 name str 超了,比如 3 个 Zone,分别是 zone_bejing_1,zone_beijing_2,zone_nanjing_3,是这 3 个在一起的 name str 超导致的。目前只能通过上下线的方式修改 zone name,减少长度规避
关键信息日志信息。
observer.log:527:[2024-05-23 19:28:55.189733] WDIAG [SHARE] get_tenant_primary_zone_array (ob_primary_zone_util.cpp:613) [3139][T1_COMMONLSSe][T1][xxxxx-xxxxx-xxxxx-xxxxx] [lt=2][errcode=-4019] failed to get tenant primary zone score(ret=-4019, ret="OB_SIZE_OVERFLOW", tenant_schema={tenant_id:1, schema_version:1710999567316712, tenant_name:"sys", zone_list:["zone1_cnhbnp01_bdu_cn_bj_f", "zone2_cnhbnp01_bdu_cn_bj_d", "zone3_cnbd01_bdu_bd_d", "zone4_cnhbnp03_cn_beijing_k", "zone5_cnhbnp03_cn_beijing_i"], primary_zone:"RANDOM", charset_type:0, locked:false, comment:"system tenant", name_case_mode:-1, read_only:false, locality_str:"FULL{1}@zone1_cnhbnp01_bdu_cn_bj_f, FULL{1}@zone2_cnhbnp01_bdu_cn_bj_d, FULL{1}@zone3_cnbd01_bdu_bd_d, FULL{1}@zone4_cnhbnp03_cn_beijing_k, FULL{1}@zone5_cnhbnp03_cn_beijing_i", zone_replica_attr_array:[{replica_attr_set:{full_replica_attr_array:[{num:1, memstore_percent:100}], logonly_replica_attr_array:[], readonly_replica_attr_array:[], encryption_logonly_replica_attr_array:[]}, zone_set:["zone1_cnhbnp01_bdu_cn_bj_f"], zone:"zone1_cnhbnp01_bdu_cn_bj_f"}, {replica_attr_set:{full_replica_attr_array:[{num:1, memstore_percent:100}], logonly_replica_attr_array:[], readonly_replica_attr_array:[], encryption_logonly_replica_attr_array:[]}, zone_set:["zone2_cnhbnp01_bdu_cn_bj_d"], zone:"zone2_cnhbnp01_bdu_cn_bj_d"}, {replica_attr_set:{full_replica_attr_array:[{num:1, memstore_percent:100}], logonly_replica_attr_array:[], readonly_replica_attr_array:[], encryption_logonly_replica_attr_array:[]}, zone_set:["zone3_cnbd01_bdu_bd_d"], zone:"zone3_cnbd01_bdu_bd_d"}, {replica_attr_set:{full_replica_attr_array:[{num:1, memstore_percent:100}], logonly_replica_attr_array:[], readonly_replica_attr_array:[], encryption_logonly_replica_attr_array:[]}, zone_set:["zone4_cnhbnp03_cn_beijing_k"], zone:"zone4_cnhbnp03_cn_beijing_k"}, {replica_attr_set:{full_replica_attr_array:[{num:1, memstore_percent:100}], logonly_replica_attr_array:[], readonly_replica_attr_array:[], encryption_logonly_replica_attr_array:[]}, zone_set:["zone5_cnhbnp03_cn_beijing_i"], zone:"zone5_cnhbnp03_cn_beijing_i"}], primary_zone_array:[], previous_locality_str:"", default_tablegroup_id:18446744073709551615, default_tablegroup_name:"", compatibility_mode:0, drop_tenant_time:-1, status:0, in_recyclebin:false, arbitration_service_status:{status:3}})
问题的风险及影响
无。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V4.x 版本。
解决方法及规避发生
解决方法:
通过上下线的方式修改 zone name,减少长度。
规避方式:
创建集群时 zone_name 不要太长。