TeleDB中存储组将不同的dn节点组成不同的存储组,不同的存储组之间数据隔离。
创建存储组
将多个dn组成一个group
--创建默认存储组
create default node group group_name with (dn1,dn2...)
--创建普通存储组
create node group group_name with (dn1,dn2...)
初始化创建sharding
在存储组创建sharding之后,才能创建表,插入数据。
teledb=# CREATE sharding group to group default_group;
CREATE SHARDING GROUP
teledb=# clean sharding;
CLEAN SHARDING
说明
TeleDB实例创建成功后,默认会将所有dn节点组成一个默认存储组default_group。
如果不存在默认存储组,则建表时需指定存储组。
如果没有任何存储组,则不允许创建表。
create sharding map创建的为主shard map, 当主shard map存在时,该命令会报错。
主shard map已经存在时,后续新增一个存储组,需要通过下述命令创建扩展shard map。
teledb=# create extension sharding group to group group2;
CREATE SHARDING GROUP
删除存储组
drop node group group_name
如果group中已经存在sharding,会抛出异常,需要先删除sharding; 如果group中存在表等对象,删除sharding也会失败,需先清空所有对象。
teledb=# drop node group default_group;
ERROR: shard info exist in group:default_group groupoid:49156
-- 删除sharding
teledb=# drop sharding in group default_group;
ERROR: node group default_group still has relations inside, please remove them first.
清空表和sharding之后可正常删除节点组。
teledb=# drop table t1;
DROP TABLE
teledb=# drop sharding in group default_group;
DROP SHARDING GROUP
teledb=# drop node group default_group;
DROP NODE GROUP
修改存储组
查看存储组相关信息
修改存储组只能将存储组定义为默认存储组,语法如下:
alter node group group_name set to default;
当已存在默认存储组的情况下,此语句无法生效。
teledb=# create node group group1 with (dn01);
CREATE NODE GROUP
teledb=# create node group group2 with (dn02);
CREATE NODE GROUP
teledb=# alter node group group1 set to default;
ALTER NODE GROUP
teledb=# alter node group group2 set to default;
ERROR: default group already exists, groupoid:57352
查看存储组相关信息
teledb=# select oid,* from pgxc_group;
oid | group_name | default_group | group_members
-------+------------+---------------+---------------
57353 | group2 | 0 | 16386
57352 | group1 | 1 | 16385