适用版本
OCP 和 OceanBase 数据库的各个版本。
问题现象
通过 OCP 创建备集群时报如下错误。
-4179, set table's primary_zone/locality while standby exist not allowed
问题原因
如果在 table 级别或者 database 级别设置了 primary zone 或 locality 就不允许创建备集群了。
具体原因:实现上的限制,如果主备集群异构的话,备集群没有对应的 zone 会有问题的。
解决方法
执行下面的 SQL 命令做检查。
obclient> alter system add cluster verify;
obclient> select * from oceanbase.__all_virtual_database where primary_zone != '';
obclient> select * from oceanbase.__all_virtual_table where locality != '' or primary_zone != '';
通过如下命令将查询出来的 primary_zone 不为空的 database 或 table 的 primary_zone 置空。
obclient> alter table xxx set primary_zone=default;
obclient> alter database xxx set primary_zone=default;