通过修改表的 TABLEGROUP
属性,可以把一个表加入或移出一个表组,或者改变其 TABLEGROUP
属性。修改了表的 TABLEGROUP
属性以后,RootService 会在后台执行副本的迁移,把属于同一个分组组的副本调度到同一台机器上,并发起命令把这些分区并入一个复制组(Replication Group)中。
创建表组
创建表组 grp1
的示例如下:
obclient> CREATE TABLEGROUP grp1;
移出表组
将表 t1
移出表组的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP '';
迁入表组
将表 t1
加入表组 grp1
的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP grp1;
迁移表组
将表 t1
(原先在表组 grp1
中) 迁移进表组 grp2
的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP grp2;
删除表组
下述为删除表组语句的语法,但是如果有任何表的 TABLE GROUP
属性引用了目标表组,则该表组不允许被删除。
obclient> DROP TABLEGROUP grp1;
修改分区方式
对于属于某一个表组的表,不允许使用 ALTER TABLE
直接修改该表的分区方式、Locality 和 Primary Zone 属性。必须使用 ALTER TABLEGROUP
语句来进行操作。
修改一个表组的分区方式、Locality 和 Primary Zone 属性时,实际上会同时原子地修改属于这个表组中所有表的对应属性。
修改 Locality
将表组 grp1
中所有表的 Locality 都修改为 F@z1,F@z3
的示例如下:
obclient> ALTER TABLEGROUP grp1 SET locality = 'F@z1,F@z3';
修改 Primary Zone
将表组 grp1
中所有表的 Primary Zone 都修改为 z1,z2
的示例如下:
obclient> ALTER TABLEGROUP grp1 SET primary_zone = 'z1,z2';
删除分区
将表组 grp1
中所有表的 p0
和 p1
分区都删除的示例如下,该操作仅支持 Range 分区。
其中,p0
和 p1
是创建表组时为 Range 分区指定的分区名,而不是每个表上的分区名,系统根据 Range 分割点能够找到每个表对应的分区。
obclient> ALTER TABLEGROUP grp1 DROP PARTITION (p0,p1);
增加分区
为表组 grp1
中所有表都增加一个 p4
分区的示例如下,该操作仅支持 Range 分区。
obclient> ALTER TABLEGROUP grp1 ADD PARTITION (PARTITION p4 VALUES LESS THAN (200));