Uma instância do ApsaraDB for SelectDB pode conter vários clusters de computação. Cada cluster funciona como um pool independente de recursos computacionais, o que permite direcionar diferentes cargas de trabalho para clusters distintos — por exemplo, isolar o tráfego de leitura do tráfego de escrita ou separar cargas online das offline.
Este tópico descreve como listar clusters, alternar entre eles, conceder e revogar acesso de usuários e defina atribuições de cluster padrão.
Em ambientes de produção, evite renomear clusters, a menos que seja estritamente necessário. Os nomes dos clusters aparecem em consultas e URLs JDBC. Renomear um cluster invalida todas as permissões concedidas anteriormente a ele.
Listar clusters
O comando SHOW CLUSTERS retorna todos os clusters de computação da instância atual.
Sintaxe
SHOW CLUSTERS;
Exemplo de saída
+---------------+------------+-------------+
| cluster | is_current | users |
+---------------+------------+-------------+
| test_cluster | FALSE | admin, jack |
| test_cluster1 | FALSE | |
+---------------+------------+-------------+
|
Coluna |
Descrição |
|
|
Nome do cluster |
|
|
Indica se o usuário atual está utilizando este cluster |
|
|
Usuários para os quais este cluster pode ser definido como padrão |
Alternar para um cluster
Utilize o comando USE para selecione o banco de dados e o cluster de computação da sessão atual.
Sintaxe
USE { [catalog_name.]database_name[@cluster_name] | @cluster_name }
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do catálogo |
|
|
Nome do banco de dados |
|
|
Nome do cluster |
Caso o nome do banco de dados ou do cluster seja uma palavra-chave reservada, coloque-o entre crases. Por exemplo:
USE @`interval`
Exemplos
Para alternar apenas para um cluster específico:
USE @test_cluster;
Para alternar para um banco de dados e um cluster específicos:
USE test_database@test_cluster;
Especifique o banco de dados e o cluster em uma URL de Java Database Connectivity (JDBC):
jdbc:mysql://selectdb-cn-****:9030/test_database@test_cluster
Conceder acesso ao cluster
Conceda o privilégio USAGE_PRIV em um cluster a um usuário para permitir que ele execute consultas nesse cluster.
Sintaxe
GRANT USAGE_PRIV ON CLUSTER {cluster_name} TO {user}
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do cluster |
|
|
Nome de usuário |
Exemplo 1: Conceder acesso a um cluster existente
Conceda ao usuário jack acesso ao test_cluster e verifique o resultado:
GRANT USAGE_PRIV ON CLUSTER test_cluster TO jack;
SHOW GRANTS FOR jack\G;
Saída esperada:
UserIdentity: 'jack'@'%'
Password: Yes
GlobalPrivs: Admin_priv (false)
CatalogPrivs: NULL
DatabasePrivs: internal.information_schema: Select_priv (false)
TablePrivs: NULL
ResourcePrivs: NULL
CloudCluster: test_cluster: Usage_priv (false)
CloudStage: NULL
Exemplo 2: Conceder acesso a um cluster inexistente
O comando GRANT é executado com êxito mesmo que o cluster não exista. O privilégio fica registrado, mas o uso do cluster falhará em tempo de execução.
GRANT USAGE_PRIV ON CLUSTER not_exist_cluster TO jack;
SHOW GRANTS FOR jack\G;
O campo CloudCluster exibe o privilégio:
CloudCluster: not_exist_cluster: Usage_priv (false)
A tentativa de usar o cluster retorna um erro:
USE information_schema@not_exist_cluster;
ERROR 5091 (42000): Cluster not_exist_cluster not exist
Revogar acesso ao cluster
Remova o privilégio USAGE_PRIV de um usuário em um cluster.
Sintaxe
REVOKE USAGE_PRIV ON CLUSTER {cluster_name} FROM {user}
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do cluster |
|
|
Nome de usuário |
Exemplo
Revogue o acesso do usuário jack ao test_cluster e verifique:
REVOKE USAGE_PRIV ON CLUSTER test_cluster FROM jack;
SHOW GRANTS FOR jack\G;
Saída esperada — o campo CloudCluster agora é NULL:
UserIdentity: 'jack'@'%'
Password: Yes
GlobalPrivs: Admin_priv (false)
CatalogPrivs: NULL
DatabasePrivs: internal.information_schema: Select_priv (false)
TablePrivs: NULL
ResourcePrivs: NULL
CloudCluster: NULL
CloudStage: NULL
Defina um cluster padrão
Ao definir um cluster padrão, os usuários deixam de precisar especifique @cluster_name em cada consulta, pois o sistema direciona automaticamente as consultas para esse cluster.
Como o sistema seleciona um cluster padrão (quando nenhum está definido)
Caso nenhum cluster padrão esteja atribuído, o sistema escolhe automaticamente um cluster com backend ativo ao qual o usuário tenha permissão de acesso. Essa seleção permanece estável dentro de uma sessão, mas pode mudar entre sessões nas seguintes situações:
O usuário perde a permissão no cluster padrão anterior (a seleção deve mudar).
Um cluster é criado ou excluído (a seleção deve mudar).
O cluster padrão anterior não possui backend ativo (a seleção pode mudar).
Para evitar comportamentos inesperados, verifique periodicamente se o cluster padrão pretendido ainda está acessível.
Sintaxe
-- Set a default cluster for the current user
SET PROPERTY 'default_cloud_cluster' = '{clusterName}';
-- Set a default cluster for another user (requires admin)
SET PROPERTY FOR {user} 'default_cloud_cluster' = '{clusterName}';
Parâmetros
|
Parâmetro |
Descrição |
|
|
Nome do cluster |
|
|
Nome de usuário. Definir a propriedade de outro usuário requer permissões de administrador. |
Exemplo 1: Defina um cluster padrão para o usuário atual
SET PROPERTY 'default_cloud_cluster' = 'test_cluster';
SHOW PROPERTY;
Saída esperada:
+------------------------+-------------------------------+
| Key | Value |
+------------------------+-------------------------------+
| cpu_resource_limit | -1 |
| default_cloud_cluster | test_cluster |
| exec_mem_limit | -1 |
| load_mem_limit | -1 |
| max_query_instances | -1 |
| max_user_connections | 100 |
| quota.high | 800 |
| quota.low | 100 |
| quota.normal | 400 |
| resource.cpu_share | 1000 |
| resource.hdd_read_iops | 80 |
| resource.hdd_read_mbps | 30 |
| resource.io_share | 1000 |
| resource.ssd_read_iops | 1000 |
| resource.ssd_read_mbps | 30 |
| resource_tags | |
| sql_block_rules | |
+------------------------+-------------------------------+
Exemplo 2: Defina um cluster padrão para outro usuário (requer administrador)
Crie um usuário com a função de administrador e verifique o cluster padrão dele:
CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin";
SHOW PROPERTY FOR jack;
Saída esperada:
+------------------------+-------------------------------+
| Key | Value |
+------------------------+-------------------------------+
| cpu_resource_limit | -1 |
| default_cloud_cluster | test_cluster1 |
| exec_mem_limit | -1 |
| load_mem_limit | -1 |
| max_query_instances | -1 |
| max_user_connections | 100 |
| quota.high | 800 |
| quota.low | 100 |
| quota.normal | 400 |
| resource.cpu_share | 1000 |
| resource.hdd_read_iops | 80 |
| resource.hdd_read_mbps | 30 |
| resource.io_share | 1000 |
| resource.ssd_read_iops | 1000 |
| resource.ssd_read_mbps | 30 |
| resource_tags | |
| sql_block_rules | |
+------------------------+-------------------------------+
Exemplo 3: Defina um cluster inexistente como padrão
Se o cluster especificado não existir, o comando falhará imediatamente:
SET PROPERTY 'default_cloud_cluster' = 'not_exist_cluster';
ERROR 5091 (42000): errCode = 2, detailMessage = Cluster not_exist_cluster not exist, use SQL 'SHOW CLUSTERS' to get a valid cluster
Execute SHOW CLUSTERS para visualizar todos os clusters disponíveis:
SHOW CLUSTERS;
+---------------+------------+-------------+
| cluster | is_current | users |
+---------------+------------+-------------+
| test_cluster | FALSE | admin, jack |
| test_cluster1 | FALSE | |
+---------------+------------+-------------+
Perguntas frequentes
Recebo a mensagem "No cloud cluster name selected." ao me conectar. O que devo fazer?
Conceda ao usuário o privilégio USAGE_PRIV em pelo menos um cluster. Consulte Conceder acesso ao cluster.