Tutorial: dividir um novo cluster físico em clusters lógicos
Cenário
Esta seção descreve como dividir um novo cluster físico de seis nós (sem dados de serviço) em dois clusters lógicos. Se o cluster físico já tiver dados de serviço, execute operações consultando Tutorial: converter um cluster físico que contém dados em um cluster lógico.
Pré-requisitos
Crie um cluster de seis nós. Para mais detalhes, consulte Criação de um cluster do GaussDB(DWS) 2.0.
Dividir um cluster em clusters lógicos
- Na página Cluster Management, clique no nome de um cluster para acessar a página de detalhes do cluster. No painel de navegação, escolha Logical Clusters.
- Clique em Add Logical Cluster no canto superior direito, selecione um anel de host (três nós) à direita, adicione-o à lista à esquerda, insira o nome de cluster lógico lc1 e clique em OK.
Após cerca de 2 minutos, o cluster lógico é adicionado.
- Repita as etapas anteriores para criar o segundo cluster lógico lc2.
Criar clusters lógicos, associá-los a usuários e consultar dados em clusters lógicos
- Conecte-se ao banco de dados como administrador do sistema dbadmin e execute a seguinte instrução SQL para verificar se o cluster lógico foi criado:
1
SELECT group_name FROM PGXC_GROUP;
- Crie os usuários u1 e u2 e associe-os aos clusters lógicos lc1 e lc2, respectivamente.
1 2
CREATE USER u1 NODE GROUP "lc1" password '{password}'; CREATE USER u2 NODE GROUP "lc2" password '{password}';
- Alterne para o usuário u1, crie a tabela t1 e insira dados na tabela.
1 2 3
SET ROLE u1 PASSWORD '{password}'; CREATE TABLE u1.t1 (id int); INSERT INTO u1.t1 VALUES (1),(2);
- Alterne para o usuário u2, crie a tabela t2 e insira dados na tabela.
1 2 3
SET ROLE u2 PASSWORD '{password}'; CREATE TABLE u2.t2 (id int); INSERT INTO u2.t2 VALUES (1),(2);
- Consulte a tabela u1.t1 como o usuário u2. A saída do comando indica que o usuário não tem a permissão.
1
SELECT * FROM u1.t1;
- Volte para o administrador do sistema dbadmin e consulte as tabelas u1.t1 e u2.t2, que são criadas nos clusters lc1 e lc2, respectivamente, correspondentes a dois serviços. Desta forma, os dados são isolados com base em clusters lógicos.
1 2 3
SET ROLE dbadmin PASSWORD '{password}'; SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't1'; SELECT p.oid,relname,pgroup,nodeoids FROM pg_class p LEFT JOIN pgxc_class pg ON p.oid = pg.pcrelid WHERE p.relname = 't2';
- Conceda ao usuário u2 as permissões para acessar o cluster lógico lc1, esquema u1 e tabela u1.t1.
1 2 3
GRANT usage ON NODE GROUP lc1 TO u2; GRANT usage ON SCHEMA u1 TO u2; GRANT select ON TABLE u1.t1 TO u2;
Clusters lógicos implementam o isolamento de permissão (por grupos de nós) com base em clusters físicos. Para permitir que um usuário acesse dados em clusters lógicos, é necessário conceder ao cluster lógico (camada de grupo de nós) permissões, permissões de esquema e permissões de tabela ao usuário em sequência. Se nenhuma permissão de cluster lógico for concedida, a mensagem de erro "permission denied for node group xx" será exibida.
- Alterne para o usuário u2 e consulte a tabela u1.t1. A consulta foi bem-sucedida. O cluster lógico implementa o isolamento de dados e permite o acesso interlógico ao cluster lógico após a autorização do usuário.
1 2
SET ROLE u2 PASSWORD '{password}'; SELECT * FROM u1.t1;