ERROR 1064 , add REPLICA

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013568

ALTER SYSTEM ADD REPLICA LS [=] ls_id SERVER [=] ‘svr_ip:svr_port’ REPLICA_TYPE [=] ‘replica_type’ [DATA_SOURCE [=] ‘data_source’] [PAXOS_REPLICA_NUM [=] paxos_replica_num] [TENANT [=] ‘tenant_name’];

MySQL [oceanbase]>ALTER SYSTEM ADD REPLICA LS = 1001 SERVER = ‘10.10.1.73:2882’ REPLICA_TYPE = ‘F’ DATA_SOURCE = ‘10.10.1.71:2882’ PAXOS_REPLICA_NUM=3 TENANT=‘tenant1’;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'REPLICA LS=1001 SERVER=‘10.10.1.73:2882’ REPLICA_TYPE=‘F’ DATA_SOURCE=‘10.10.1.7’ at line 1

报语法错误,仔细核对了,语法是正确的啊。 不知道是什么地方的原因了。谁知道原因呢 ?

当通过修改 Locality 增加副本时,正常情况下,系统会自动补充缺少的副本。
正常情况这个不需要人为操作的,当前集群架构是啥样。操作是打算将两副本添加为三副本么

我就是纯粹的觉得好玩,想做下实验而已。 当前集群是1-1-1 架构, 但是租户是2副本,我欲把租户扩展为3副本 。

租户的Locality已经修改为三了么?
你可以先查一下LS日志流是否已经自动添加了
SELECT * FROM oceanbase.DBA_OB_LS_LOCATIONS WHERE LS_ID=1001;

我没有执行 ALTER TENANT tenant1 locality=“FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3”,如果执行了ALTER TENANT tenant1 locality="FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3"那不就是自动添加副本了嘛,我的目的是模拟手工添加副本。所以直接使用 ALTER SYSTEM ADD REPLICA LS 手工添加。

难道ALTER SYSTEM ADD REPLICA LS只适合ALTER TENANT tenant1 locality="FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3"自动添加副本出现异常的时候,才可以进行手工添加副本吗?

官方文档有介绍的

谢谢

select tenant_name,tenant_id,locality from oceanbase.dba_ob_tenants where tenant_name=‘sys’;
±------------±----------±-----------------------------+
| tenant_name | tenant_id | locality |
±------------±----------±-----------------------------+
| sys | 1 | FULL{1}@zone1, FULL{1}@zone2 |
±------------±----------±-----------------------------+

MySQL [oceanbase]> SELECT ls_id,svr_ip,zone,role,member_list,paxos_replica_number
→ FROM oceanbase.CDB_OB_LS_LOCATIONS
→ WHERE LS_ID=1
→ AND TENANT_ID=1;
±------±-----------±------±---------±---------------------------------------------------±---------------------+
| ls_id | svr_ip | zone | role | member_list | paxos_replica_number |
±------±-----------±------±---------±---------------------------------------------------±---------------------+
| 1 | 10.10.1.71 | zone1 | LEADER | 10.10.1.71:2882:1,10.10.1.72:2882:1749437622533146 | 2 |
| 1 | 10.10.1.72 | zone2 | FOLLOWER | NULL | NULL |
±------±-----------±------±---------±---------------------------------------------------±---------------------+
2 rows in set (0.01 sec)

SELECT svr_ip,unit_id,tenant_id,zone FROM oceanbase.GV$OB_UNITS WHERE TENANT_ID=1;
±-----------±--------±----------±------+
| svr_ip | unit_id | tenant_id | zone |
±-----------±--------±----------±------+
| 10.10.1.71 | 1 | 1 | zone1 |
| 10.10.1.74 | 1003 | 1 | zone4 |
| 10.10.1.75 | 1004 | 1 | zone5 |
| 10.10.1.72 | 1001 | 1 | zone2 |
| 10.10.1.73 | 1002 | 1 | zone3 |
±-----------±--------±----------±------+

MySQL [oceanbase]> ALTER SYSTEM REMOVE REPLICA LS = 1 SERVER = ‘10.10.1.75:2882’ PAXOS_REPLICA_NUM = 2 TENANT = ‘sys’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ‘REPLICA LS = 1 SERVER = ‘10.10.1.75:2882’ PAXOS_REPLICA_NUM = 2 TENANT = ‘sys’’ at line 1
MySQL [oceanbase]>