教程:新物理集群划分为逻辑集群 本章节演示一套全新6节点物理集群(无业务数据)划分为2套逻辑集群的操作。 场景介绍 本章节演示一套全新6节点物理集群(无业务数据)划分为2套逻辑集群的操作。 前提条件 创建6个节点的集群。 划分逻辑集群 1. 在集群管理页面,单击指定集群名称进入集群详情页面,左导航栏单击“逻辑集群管理”。 2. 进入逻辑集群页面,单击右上角“添加逻辑集群”,从右侧勾选1个主机环(3个节点)到左侧列表中,并输入逻辑集群名称lc1,单击“确定”。 等待约2分钟,逻辑集群添加成功。 3. 重复以上步骤,划分第二套逻辑集群lc2。 创建逻辑集群关联用户并跨逻辑集群查询数据 1. 以系统管理员dbadmin连接数据库,执行以下SQL语句查看逻辑集群创建成功。 SELECT groupname FROM PGXCGROUP; 2. 创建两个用户u1和u2,分别关联逻辑集群lc1和逻辑集群lc2。 CREATE USER u1 NODE GROUP "lc1" password ' {password} '; CREATE USER u2 NODE GROUP "lc2" password ' {password} '; 3. 切换到用户u1,创建表t1,并插入数据。 SET ROLE u1 PASSWORD ' {password} '; CREATE TABLE u1.t1 (id int); INSERT INTO u1.t1 VALUES (1),(2); 4. 切换到用户u2,创建表t2,并插入数据。 SET ROLE u2 PASSWORD ' {password} '; CREATE TABLE u2.t2 (id int); INSERT INTO u2.t2 VALUES (1),(2); 5. 同时使用u2查询u1.t1表。返回结果提示没有权限。 SELECT FROM u1.t1; 6. 切换回系统管理员dbadmin,查询表u1.t1和u2.t2分别创建到了集群lc1和lc2中,分别对应企业的两块业务,实现了基于逻辑集群的数据隔离。 SET ROLE dbadmin PASSWORD ' {password} '; SELECT p.oid,relname,pgroup,nodeoids FROM pgclass p LEFT JOIN pgxcclass pg ON p.oid pg.pcrelid WHERE p.relname 't1'; SELECT p.oid,relname,pgroup,nodeoids FROM pgclass p LEFT JOIN pgxcclass pg ON p.oid pg.pcrelid WHERE p.relname 't2'; 7. 将逻辑集群lc1的访问权限授予用户u2,同时将SCHEMA u1访问权限、表u1.t1访问权限授予用户u2。 GRANT usage ON NODE GROUP lc1 TO u2; GRANT usage ON SCHEMA u1 TO u2; GRANT select ON TABLE u1.t1 TO u2; 说明 划分逻辑集群后,相当于在原来物理集群的基础上,再增加一层逻辑集群(NODE GROUP)的权限隔离。所以跨逻辑集群访问数据,首先要授权用户有逻辑集群(NODE GROUP层)权限,其次是SCHEMA权限,最后是单张表TABLE权限。如果没有授予逻辑集群的权限,会提示类似permission denied for node group xx的错误信息。 8. 再次切换到u2用户,查询u1.t1表,查询成功,逻辑集群既实现了数据隔离,又可以在用户授权后进行跨逻辑集群访问。 SET ROLE u2 PASSWORD ' {password} '; SELECT FROM u1.t1;