É possível definir a configuração da instância do pool de leitura no arquivo de manifesto da instância de banco de dados. Cada instância do pool de leitura exige a criação de um arquivo de manifesto exclusivo. É possível implantar várias instâncias do pool de leitura, com até 20 nós de pool de leitura no total por cluster de banco de dados.
Cada instância do pool de leitura ocupa a mesma quantidade de armazenamento que a instância replicada.
Criar uma instância de pool de leitura replicada assíncrona
Para criar uma instância de pool de leitura replicada assíncrona do AlloyDB Omni, siga estas etapas:
Crie o manifesto da instância de banco de dados para definir o tipo de instância do pool de leitura:
DBInstance: metadata: name: READ_POOL_INSTANCE_NAME spec: instanceType: ReadPool nodeCount: READ_POOL_NODE_COUNT readPoolPort: READ_POOL_PORT dbcParent: name: DB_CLUSTER_NAMESubstitua:
READ_POOL_INSTANCE_NAME: um nome para esse recurso. Por exemplo,read-pool-instance-1.DB_CLUSTER_NAME: o nome do cluster de banco de dados a que a instância pertence.READ_POOL_NODE_COUNT: (opcional) o número de nós em uma instância do pool de leitura. Isso determina a capacidade de computação geral da instância. É possível ter um máximo de 20 nós de pool de leitura no total por cluster de banco de dados.READ_POOL_PORT: (opcional) a porta no balanceador de carga (VIP) para rotear o tráfego de leitura para essa instância do pool de leitura. O padrão é5434.
Aplique a especificação
DBInstance.alloydbctlalloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"Substitua as seguintes variáveis:
DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.DBINSTANCE_SPECIFICATION: caminho para o arquivo de manifestoDBInstancecriado na etapa anterior.
Ansible
ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \ -e resource_spec="DBINSTANCE_SPECIFICATION"Substitua as seguintes variáveis:
DBINSTANCE_PLAYBOOK: caminho para o manual criado para a especificaçãoDBInstance.DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.DBINSTANCE_SPECIFICATION: caminho para o arquivo de manifestoDBInstancecriado na etapa anterior.
Verificar o status da instância
Para verificar a disponibilidade da instância do pool de leitura, receba o status do recurso DBInstance:
alloydbctl
alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yamlSubstitua as seguintes variáveis:
DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação da implantação criada em Instalar componentes do AlloyDB Omni.READ_POOL_INSTANCE_NAME: o nome da instância do pool de leitura especificada no manifesto.
Ansible
Execute o manual google.alloydbomni_orchestrator.status. Para mais informações, consulte Receber o status do cluster.
ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
-e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"Substitua as seguintes variáveis:
STATUS_PLAYBOOK_PATH: caminho para o manual criado para receber o status do cluster.DEPLOYMENT_SPECIFICATION_PATH: caminho para a especificação de implantação criada em Instalar componentes do AlloyDB Omni.READ_POOL_INSTANCE_NAME: o nome da instância do pool de leitura especificada no manifesto.
Verifique a seção .status.conditions da resposta para o seguinte:
- Se o status da condição
Availablefortrue, isso indica que a instância do pool de leitura pode atender a consultas, mas talvez não esteja replicando dados da instância de banco de dados. - Se o status da condição
Streamingfortrue, isso indica que a instância do pool de leitura está conectada à instância de banco de dados e transmitindo mudanças ativamente.
Quando a instância de banco de dados está inacessível, a instância do pool de leitura continua atendendo a consultas. Nesse caso, o status de disponibilidade será true, enquanto o status de transmissão será false.
Depois de configurar a instância do pool de leitura, todas as inserções, atualizações e exclusões de linhas na instância de banco de dados principal ficam legíveis na instância do pool de leitura.
Conectar-se à instância do pool de leitura
Depois que a instância do pool de leitura fica Available, o balanceador de carga configura automaticamente um front-end somente leitura dedicado que roteia o tráfego para os nós do pool de leitura.
Para conferir o endpoint de conexão, verifique status.endpoints na saída de status DBInstance. O endpoint somente leitura, por exemplo, VIP_IP:5434, distribui consultas somente leitura recebidas em todos os nós íntegros do pool de leitura.
Para se conectar à instância do pool de leitura, use a ferramenta de cliente psql com o endereço IP e a porta do endpoint:
psql -h VIP_IP -p READ_POOL_PORT -U postgresSubstitua:
VIP_IP: o endereço IP do endpoint somente leitura.READ_POOL_PORT: a porta do endpoint somente leitura.
Se você tentar realizar operações de gravação nesse endpoint, as operações falharão imediatamente com um erro indicando que não é possível executar inserções em uma transação somente leitura.
Gerenciar a instância do pool de leitura
O orquestrador de RPM oferece suporte ao escalonamento dinâmico e à exclusão de instâncias de pool de leitura sem tempo de inatividade do cluster.
Escalonar uma instância do pool de leitura
Para adicionar ou remover nós de um pool de leitura atual, atualize o campo nodeCount no arquivo de manifesto DBInstance.
Abra o arquivo de manifesto
DBInstancee modifique o valornodeCountpara refletir o número de nós selecionado.Aplique o manifesto de atualização usando o método de implantação preferido, o comando
alloydbctl applyou o playbook do Ansible.
O orquestrador de RPM provisiona ou remove automaticamente os nós de réplica de leitura, e o balanceador de carga é atualizado dinamicamente para rotear o tráfego para os nós disponíveis no pool.
Excluir uma instância do pool de leitura
Para excluir uma instância do pool de leitura, use o comando alloydbctl delete:
alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAMESubstitua READ_POOL_INSTANCE_NAME pelo nome da instância do pool de leitura que você quer excluir.
Ao excluir uma instância do pool de leitura, o orquestrador interrompe o serviço de réplica de leitura e limpa os nós. O balanceador de carga remove automaticamente o roteamento sem causar impasses de promoção ou afetar o tráfego para as instâncias principal ou em espera.