Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-08-19 GMT+08:00

Visão geral do cluster lógico

Conceitos

Um cluster físico pode ser dividido em Grupos de nós, que são clusters lógicos. Todos os nós físicos em um cluster físico são divididos em vários clusters lógicos. Um cluster lógico é essencialmente um grupo de nós que contém um ou mais nós físicos. Cada nó físico pertence a apenas um cluster lógico, e as tabelas de dados do usuário só podem ser distribuídas dentro do mesmo cluster lógico. Os dados de cada cluster lógico são isolados dos outros. Os recursos físicos alocados a um cluster lógico são usados principalmente para operações em suas próprias tabelas de dados, mas também para consultas interativas com outros clusters lógicos. Uma empresa pode implementar serviços em diferentes clusters lógicos para implementar o gerenciamento de serviços unificados e, enquanto isso, isolar os dados e os recursos dos serviços.

Clusters lógicos são criados pela divisão de nós de um cluster físico. Tabelas em um banco de dados podem ser alocadas para diferentes nós físicos por cluster lógico. Um cluster lógico pode conter tabelas de vários bancos de dados. Figura 1 mostra as relações entre clusters lógicos, bancos de dados e tabelas.

Um cluster elástico é um cluster que sempre existe no modo de cluster lógico e consiste em nós que não fazem parte de nenhum cluster lógico. É um grupo especial de nós que pode ter vários ou zero DN. Um cluster elástico não pode ser criado manualmente. Quando o primeiro cluster lógico é criado em um cluster físico, um cluster elástico também é criado automaticamente e todos os nós físicos não pertencentes ao cluster lógico são automaticamente adicionados ao cluster elástico. Os DNs no cluster elástico serão usados para clusters lógicos criados posteriormente. Para criar um cluster lógico, certifique-se de que o cluster lógico tenha DNs. (Os DNs não são necessários somente quando você cria o primeiro cluster lógico no modo de cluster físico.) Você pode adicionar novos nós físicos ao cluster elástico por meio de expandir.

Figura 1 Relações entre clusters lógicos, bancos de dados e tabelas
  • Os clusters lógicos são suportados no 8.1.0.100 ou posterior.
  • É aconselhável alocar tabelas em um banco de dados para o mesmo cluster lógico.
  • Um cluster lógico não é um subcluster independente. Ele pode isolar dados, recursos e permissões, mas não pode ser operado ou mantido de forma independente.
  • A opção Change all specifications não suporta clusters lógicos.
  • O cluster lógico de um cluster do GaussDB(DWS) 3.0 não pode ser alternado se o cluster físico original contiver dados. Certifique-se de que o cluster físico original esteja vazio durante a alternância.

Arquitetura de cluster lógico

Figura 2 mostra a arquitetura de um cluster físico dividido em vários clusters lógicos. Os nós no cluster físico são divididos em Grupos de nós. Os trabalhos dos usuários 1 e 2 são executados em grupos de nó diferentes. Os dois usuários podem definir pools de recursos dentro de seu próprio cluster lógico para controlar recursos (CPU, memória e I/O) usados para trabalhos diferentes. Se alguns trabalhos do usuário 1 precisarem acessar os dados do usuário 2, eles poderão acessar os dados em grupos de nó após serem autorizados. Para um cluster lógico, você pode configurar recursos acessíveis em clusters lógicos para garantir que seus recursos sejam suficientes.

Figura 2 Arquitetura de cluster lógico

Um cluster físico é dividido em vários lógicos. Você pode definir um pool de recursos para cada um deles com base nos requisitos de serviço. As tabelas de usuário não são distribuídas entre clusters lógicos. Se os serviços não acessarem dados em clusters lógicos, eles não competirão por recursos. Os recursos podem ser alocados para trabalhos no mesmo cluster lógico usando pools de recursos. Se necessário, você pode permitir que os serviços acessem dados em clusters lógicos e controlar os recursos usados para esse acesso para reduzir a competição de recursos entre trabalhos dentro e fora de um cluster lógico.

Depois de criar um cluster físico, você precisa decidir se deseja dividi-lo em clusters lógicos. Você não pode dividi-lo em clusters lógicos se já tiver criado tabelas de usuário antes, porque essas tabelas de usuário são distribuídas em todos os nós físicos. Para obter mais informações sobre as limitações, consulte Restrições e limitações. Se você quiser gerenciar um cluster existente (por exemplo, um cluster de banco de dados criado em uma versão anterior a 8.1.0.100) como um cluster lógico, você pode atualizar o cluster para 8.1.0.100 ou posterior e, em seguida, converter todos os nós do cluster em um único cluster lógico. Em seguida, adicione nós ao cluster físico e crie outro cluster lógico nos novos nós.

As operações em clusters lógicos incluem:

  • Criação de um cluster lógico: depois de converter um cluster físico em um cluster lógico, você pode agrupar alguns nós físicos em um cluster lógico especificando o nome e os nós do cluster lógico.
  • Modificação de um cluster lógico: você pode adicionar ou remover nós de um cluster lógico conforme necessário.
  • Gerenciamento de recursos (modo de cluster lógico): você pode gerenciar recursos em um cluster lógico especificado (suportado apenas por 8.1.3.101 e versões posteriores).
  • Expansão de um cluster lógico: esta operação aumenta o número de nós físicos no cluster lógico e redistribui tabelas no cluster lógico para os novos nós físicos.
  • Reinício um cluster lógico: esta operação reinicia todos os DNs no cluster lógico. Considerando o impacto em todo o cluster físico, os DNs em um cluster lógico não podem ser interrompidos ou iniciados individualmente.
  • Exclusão de um cluster lógico: você pode excluir um cluster lógico com um nome especificado. Depois que o cluster lógico for excluído, os nós físicos liberados serão colocados no cluster elástico.

Restrições e limitações

  • A menor unidade de criação, expansão e redução de um cluster lógico é um anel. Um anel consiste em pelo menos três hosts, onde os DNs primário, em espera e secundário são distribuídos.
  • Durante a alternância do cluster lógico, se o cluster físico original tiver dados, o cluster será bloqueado. Você pode executar instruções DML simples, como adicionar, excluir, modificar e consultar dados. No entanto, a execução de instruções DDL complexas, como objetos de banco de dados operacionais, bloqueará serviços e relatará erros. Tenha cuidado ao realizar esta operação.
  • Não é possível fazer backup ou restauração independente de um cluster lógico.
  • Um cluster lógico não pode ser atualizado de forma independente.
  • Um cluster físico não pode ser revertido para um cluster físico depois de ser convertido num cluster lógico.
  • No modo de cluster lógico, apenas clusters lógicos podem ser criados e Grupos de nós não podem ser criados. Além disso, os Grupos de nós não podem ser criados em um cluster lógico.
  • As operações de O&M (criação, exclusão, edição, expansão, redução e reinicialização) de clusters lógicos não podem ser executadas simultaneamente.
  • Objetos de banco de dados públicos (excluindo catálogos do sistema, tabelas estrangeiras e exibições) são distribuídos em todos os nós em um cluster físico. Depois que um nó do cluster lógico for reiniciado, as operações DDL executadas por outros clusters lógicos nos objetos serão interrompidas.
  • No modo de cluster lógico, cada DN contém apenas as tabelas no cluster lógico ao qual o DN pertence. Funções definidas pelo usuário precisam ser criadas em todos os DNs. Portanto, %type não pode ser usado para fazer referência a tipos de campo de tabela no corpo da função.
  • No modo de cluster lógico, a instrução WITH RECURSIVE não pode ser pressionada.
  • No modo de cluster lógico, as partições podem ser trocadas apenas no mesmo cluster lógico. Tabelas particionadas e tabelas comuns em diferentes clusters lógicos não podem ser trocadas.
  • No modo de cluster lógico, se os parâmetros da função ou os valores de retorno contiverem tipos de tabela, esses tipos de tabela deverão pertencer ao mesmo cluster lógico.
  • No modo de cluster lógico, execute o comando CREATE TABLE.... Ao criar uma tabela estrangeira usando LIKE, certifique-se de que a tabela de origem e a tabela estrangeira a ser criada estejam no mesmo cluster lógico.
  • No modo de cluster lógico, a instrução CREATE TABLE não pode ser usada durante a criação de um esquema (CREATE SCHEMA...). Você precisa criar um esquema primeiro e, em seguida, criar uma tabela no esquema.
  • Um cluster lógico não suporta a arquitetura de um nó primário e vários nós em espera. Um cluster lógico tem efeito somente na arquitetura de um nó primário, um nó em espera e um nó secundário.
  • Um usuário de cluster lógico não pode acessar as tabelas temporárias globais criadas por outro usuário de cluster lógico.

Permissões necessárias em ferramentas

A seguir, descrevem-se as permissões de usuário para objetos de banco de dados em clusters lógicos:

  • A permissão CREATE ON NODE GROUP pode ser concedida a qualquer usuário ou função para executar operações como a criação de tabelas em um cluster lógico.
    • Se o esquema especificado para uma tabela criada for um esquema privado de um usuário (ou seja, o esquema tem o mesmo nome que o usuário e o proprietário do esquema é o usuário), o proprietário da tabela criada assume como padrão o usuário. Não é necessário associar a tabela a um cluster lógico.
    • Quando um usuário associado a um cluster lógico cria uma tabela, se a cláusula to group não for especificada, a tabela será criada nesse cluster lógico. O cluster lógico associado ao usuário pode ser alterado.
    • Se um usuário não estiver associado a nenhum cluster lógico, quando o usuário criar uma tabela, a tabela será criada no cluster lógico especificado por default_storage_nodegroup. Se default_storage_nodegroup estiver configurado para installation, a tabela será criada no primeiro cluster lógico. No modo de cluster lógico, o cluster lógico com o menor OID é definido como o primeiro cluster lógico. Se default_storage_nodegroup não estiver definido, seu valor é installation por padrão.
    • GaussDB(DWS) 3.0 suporta a criação de clusters lógicos somente leitura. Se um usuário estiver associado a um cluster lógico somente leitura, as tabelas temporárias em nível de sessão (tabelas temporárias locais e tabelas temporárias voláteis, excluindo tabelas temporárias globais) pode ser criado somente no cluster lógico somente leitura. Se o usuário criar outras tabelas comuns e estrangeiras, as tabelas serão criadas no cluster lógico especificado por default_storage_nodegroup. Se default_storage_nodegroup estiver configurado para installation, a tabela será criada no primeiro cluster lógico.
    • O administrador do sistema pode executar o comando ALTER ROLE para definir default_storage_nodegroup para cada usuário. Para obter detalhes sobre a sintaxe, consulte ALTER ROLE.
  • Regras de criação de tabelas
    • Se to group não for especificado para uma tabela de usuário, mas default_storage_nodegroup for definido, as tabelas serão criadas no cluster lógico especificado.
    • Se default_storage_nodegroup estiver configurado para installation, as tabelas serão criadas no primeiro cluster lógico, ou seja, o cluster lógico com o menor OID.
  • O proprietário de uma tabela pode ser alterado para qualquer usuário. No entanto, você precisa verificar as permissões do esquema e do grupo de nós ao executar operações na tabela.
  • Um administrador de sistema pode ser associado a um cluster lógico e pode criar tabelas em vários clusters lógicos.
    • Se o administrador do sistema estiver associado a um cluster lógico e to group não for especificado quando você criar uma tabela, a tabela será criada no cluster lógico associado por padrão. Se to group for especificado, a tabela será criada no cluster lógico especificado.
    • Se o administrador do sistema não estiver associado a um cluster lógico e to group para não for especificado, as tabelas serão criadas no cluster lógico de default_storage_nodegroup. Para obter detalhes, consulte as regras de criação de tabela.
  • Permissões de administrador do sistema podem ser concedidas a um usuário associado a um cluster lógico, mas as regras de criação de tabela também se aplicam.
  • A permissão de cluster lógico para acessar objetos não-tabela (como esquemas/sequências/funções/gatilhos) não será verificada.
  • Um pool de recursos deve estar associado a um cluster lógico.
    • Um cluster lógico pode ser associado a vários pools de recursos, mas um pool de recursos pode ser associado a apenas um cluster lógico.
    • Trabalhos executados por usuários do cluster lógico associados a um pool de recursos só podem usar recursos no pool de recursos.
    • Não é necessário criar um grupo de cargas de trabalho para definir o número de trabalhos concorrentes em um cluster lógico. Portanto, os grupos de carga de trabalho não são necessários para clusters lógicos.
  • Quando um cluster lógico é excluído, somente a tabela, a tabela estrangeira e os objetos do pool de recursos são excluídos.
    • Objetos dependentes das tabelas (incluindo as sequências/funções/gatilhos parcialmente dependentes) no cluster lógico também serão excluídos.
    • Associações lógicas de cluster com seus usuários e locatários pai-filho serão removidas durante o processo. Como resultado, os usuários serão associados ao grupo de nós installation padrão e ao pool de recursos globais padrão.
  • Um usuário de cluster lógico pode criar um banco de dados se tiver a permissão concedida.

Grupo de nós de tabela de replicação

Um grupo de nós de tabela de replicação é um grupo de nós especial no modo de cluster lógico. Ele pode conter um ou mais clusters lógicos, mas só pode criar tabelas de replicação. Um cenário típico é criar tabelas de dimensão públicas. Se vários clusters lógicos exigirem algumas tabelas de dimensão comuns, crie um grupo de nós de tabela de replicação e adicione as tabelas de dimensão comuns a ele. Os clusters lógicos contidos no grupo de nós da tabela de replicação podem acessar essas tabelas de dimensão nos DNs locais, sem a necessidade de acessar as tabelas em outros DNs. Se um cluster lógico for reduzido, o grupo de nós da tabela de replicação será dimensionado de acordo. Se o cluster lógico for excluído, o grupo de nós da tabela de replicação será reduzido. No entanto, se o grupo de nós da tabela de replicação contiver apenas um cluster lógico e o cluster lógico for excluído, o grupo de nós da tabela de replicação também será excluído. Nesse caso, crie tabelas em um cluster lógico em vez disso.

Crie um grupo de nós de tabela de replicação usando a instrução CREATE NODE GROUP e exclua um usando DROP NODE GROUP. Antes de excluir um grupo de nós de tabela de replicação, exclua todos os objetos de tabela no grupo de nós.

A criação de grupos de nós de tabela de replicação é suportada no 8.1.2 ou posterior.

Cenários de aplicações

Cenário 1: isolando dados com diferentes requisitos de recursos
Figura 3 Divisão lógica do cluster com base nos requisitos de recursos

Conforme mostrado na figura anterior, os dados com diferentes requisitos de recursos são armazenados em diferentes clusters lógicos, e diferentes clusters lógicos também suportam acesso mútuo. Isso garante que as funções não sejam afetadas enquanto os recursos estiverem isolados.

  • As tabelas T1 e T2 são usadas para calcular uma grande quantidade de dados e gerar dados de relatório (por exemplo, processamento em lote bancário). Esse processo envolve grande importação em lote e consulta de Big Data, que consomem muita memória e recursos de I/O dos nós e levam muito tempo. No entanto, essa consulta não requer alto desempenho em tempo real. Portanto, os dados dessas duas tabelas podem ser separados em um cluster lógico diferente.
  • As tabelas T3 e T4 contêm alguns dados de computação e dados em tempo real, que são usados principalmente para consultas de ponto e consultas em tempo real. Essas consultas precisam de alto desempenho em tempo real. Para evitar a interferência de outras operações de alta carga, os dados dessas duas tabelas podem ser separados em um cluster lógico diferente.
  • As tabelas T5 e T6 são usadas principalmente para operações OLTP com alta simultaneidade. Os dados nessas tabelas são atualizados com frequência e sensíveis a I/O. Para evitar o impacto da consulta de Big Data na I/O, os dados dessas duas tabelas podem ser separados em um cluster lógico diferente.
Cenário 2: isolando dados para diferentes serviços e melhorando a multilocação de um cluster de dados
Figura 4 Dados lógicos de vários serviços baseados em cluster e gerenciamento de vários locatários

Um grande cluster de banco de dados geralmente armazena dados para vários serviços. Cada serviço tem suas próprias tabelas de dados. Para alocar recursos para diferentes serviços, você pode criar vários locatários. Especificamente, atribua diferentes usuários de serviços a diferentes locatários para minimizar a contenção de recursos entre os serviços. À medida que a escala de serviços cresce continuamente, o número de serviços no sistema de cluster também aumenta. Criar vários locatários torna-se menos eficaz no controle da concorrência de recursos. Como cada tabela é distribuída em todos os DNs de um cluster de banco de dados, cada operação de tabela de dados pode envolver todos os DNs, o que aumenta a carga de rede e o consumo de recursos do sistema. Simplesmente expandir o cluster não é suficiente para resolver esse problema. Portanto, vários clusters lógicos podem ser criados para lidar com o número crescente de serviços, conforme mostrado na figura acima.

Você pode criar um cluster lógico separado e atribuir novos serviços a ele. Desta forma, os novos serviços têm pouco impacto sobre os serviços existentes. Além disso, se a escala de serviço em clusters lógicos existentes aumentar, você poderá escalar os clusters lógicos existentes.

Um cluster lógico não é adequado para gerenciar vários sistemas de banco de dados independentes. Um sistema de banco de dados independente requer O&M independente e precisa ser gerenciado, monitorado, feito backup e atualizado separadamente. Além disso, as falhas devem ser isoladas entre os clusters. Clusters lógicos não podem obter O&M independente e isolamento completo de falhas.