Criar e gerenciar réplicas de leitura no Banco de Dados do Azure para PostgreSQL – Servidor Flexível no portal do Azure, na CLI ou na API REST
Artigo
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
Neste artigo, você aprenderá a criar e gerenciar réplicas de leitura no servidor flexível do Banco de Dados do Azure para PostgreSQL no portal do Azure, na CLI e na API REST. Para saber mais sobre réplicas de leitura, confira Visão Geral.
Ao implantar réplicas de leitura para cargas de trabalho primárias persistentes com uso intensivo de gravação, o atraso de replicação pode continuar a crescer e nunca alcançar o primário. Isso também pode aumentar o uso do armazenamento no primário, pois os arquivos WAL são excluídos apenas uma vez recebidos na réplica.
Examinar as configurações primárias
Antes de configurar uma réplica de leitura para o servidor flexível do Banco de Dados do Azure para PostgreSQL, verifique se o servidor primário está configurado para atender aos pré-requisitos necessários. Configurações específicas no servidor primário podem afetar a capacidade de criar réplicas.
Crescimento automático do armazenamento: as configurações de crescimento automático de armazenamento no servidor primário e suas réplicas de leitura devem seguir diretrizes específicas para garantir a consistência e evitar interrupções de replicação. Confira o Crescimento automático do armazenamento para obter regras e configurações detalhadas.
SSD Premium v2: a versão atual não dá suporte à criação de réplicas de leitura para servidores primários usando o armazenamento Premium SSD v2. Se a carga de trabalho exigir réplicas de leitura, escolha uma opção de armazenamento diferente para o servidor primário.
No portal do Azure, escolha a instância de servidor flexível do Banco de Dados do Azure para PostgreSQL que deseja para a réplica.
Na caixa de diálogo Visão Geral, observe a versão do PostgreSQL (ex 15.4). Além disso, observe a região em que o primário está implantado (ex., East US).
Na barra lateral do servidor, em Configurações, selecione Computação + armazenamento.
Examine e observe as seguintes configurações:
Camada de computação, processador, tamanho (ex Standard_D4ads_v5).
Armazenamento
Tamanho do armazenamento (ex 128GB)
Aumento Automático
Alta disponibilidade
Habilitado/Desabilitado
Configurações de zona de disponibilidade
Configurações de backup
Período de retenção
Opções de redundância
Em Configurações, selecione Rede.
Revise as configurações de rede.
Observação
Os comandos fornecidos neste guia são aplicáveis à CLI do Azure versão 2.56.0 ou superior. Verifique se você tem a versão necessária ou uma posterior instalada para executar esses comandos com êxito. Você pode verificar sua versão atual da CLI do Azure executando az --version em sua interface de linha de comando. Para atualizar a CLI do Azure para a versão mais recente, siga as instruções fornecidas na documentação da CLI do Azure.
Para exibir a configuração e o status atual de um servidor flexível do PostgreSQL do Azure, use o comando az postgres flexible-server show. Esse comando fornece informações detalhadas sobre o servidor especificado.
az postgres flexible-server show \
--resource-group <resource-group> \
--name <server-name>
Substitua <resource-group> e <server-name> pelo grupo de recursos específico e o nome do servidor que deseja exibir.
Examine e observe as seguintes configurações:
Camada de computação, processador, tamanho (ex Standard_D8ads_v5).
Para obter informações sobre a configuração de um servidor no servidor flexível do Banco de Dados do Azure para PostgreSQL, especialmente para exibir as configurações de recursos introduzidos recentemente, como crescimento automático de armazenamento ou link privado, você deve usar a versão mais recente da API 2023-06-01-preview. A solicitação GET seria formatada da seguinte maneira:
Substitua {subscriptionId}, {resourceGroupName} e {serverName} por sua ID de assinatura do Azure, o nome do grupo de recursos e o nome do servidor primário que você quer examinar, respectivamente. Esta solicitação fornece acesso aos detalhes de configuração do servidor primário, garantindo que ele esteja configurado corretamente para criar uma réplica de leitura.
Examine e observe as seguintes configurações:
Camada de computação, processador, tamanho (ex Standard_D8ads_v5).
Selecione uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL existente para usar como servidor primário.
Na barra lateral do servidor, em Configurações, selecione Replicação.
Selecione Criar réplica.
Preencha o formulário “Básico” com as informações a seguir.
Selecione Revisar + Criar para confirmar a criação da réplica ou Avançar: Rede para adicionar, excluir ou modificar qualquer regra de firewall.
Mantenha os padrões restantes e pressione o botão Revisar + criar na parte inferior da página ou continue com os próximos formulários para adicionar marcas ou alterar o método de criptografia de dados.
Examine as informações na janela de confirmação final. Quando estiver pronto, selecione Criar. Uma nova implantação é criada.
Durante a implantação, você verá o primário no Updating estado.
Depois que a réplica de leitura é criada, ela pode ser exibida na janela Replicação.
Substitua <replica-name>, <resource-group>, <source-server-name> e <location> pelos valores específicos.
Depois que a réplica de leitura é criada, as propriedades de todos os servidores, que são réplicas de uma réplica primária, podem ser obtidas usando o comando az postgres flexible-server replica create.
az postgres flexible-server replica list \
--name <source-server-name> \
--resource-group <resource-group>
Substitua <source-server-name> e <resource-group> pelos valores específicos.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Aqui, você precisa substituir {subscriptionId}, {resourceGroupName} e {replicaserverName} por sua ID de assinatura do Azure, o nome do grupo de recursos e o nome desejado específicos para sua réplica de leitura, respectivamente.
Depois que a réplica de leitura for criada, as propriedades de todos os servidores, que são réplicas de uma réplica primária, poderão ser obtidas iniciando uma solicitação HTTP GET usando a lista de réplicas pela API do servidor:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/replicas?api-version=2022-12-01
Aqui, você precisa substituir {subscriptionId}, {resourceGroupName} e {sourceserverName} pela ID de assinatura específica do Azure, o nome do grupo de recursos e o nome atribuído à réplica primária, respectivamente.
É uma prática recomendada do CAF (Cloud Adoption Framework) usar uma convenção de nomenclatura de recursos que permitirá determinar facilmente a qual instância você está se conectando ou gerenciando e onde ela reside.
Selecione um local diferente do primário, mas observe que você pode selecionar a mesma região.
Defina a computação e o armazenamento para o que você registrou do primário. Se a computação exibida não corresponder, selecione Configurar servidor e selecione a opção apropriada.
Observação
Se você selecionar um tamanho de computação menor que o primário, a implantação falhará. Lembre-se também de que o tamanho da computação pode não estar disponível em uma região diferente.
Para evitar problemas constantes durante a promoção de réplicas, primeiro altere os seguintes parâmetros de servidor nas réplicas, antes de aplicá-los ao servidor primário: max_connections, max_prepared_transactions, max_locks_per_transaction, max_wal_senders, max_worker_processes.
Criar pontos de extremidade virtuais (versão prévia)
Observação
Todas as operações envolvendo pontos de extremidade virtuais — como acréscimo, edição ou remoção — são executadas no contexto do servidor primário.
Substitua <resource-group>, <primary-name>, <virtual-endpoint-name> e <replica-name> pelos valores específicos.
Para criar um ponto de extremidade virtual usando a API REST do Azure, você usaria uma solicitação HTTP PUT. A solicitação se pareceria com o exemplo abaixo:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
O corpo JSON que acompanha essa solicitação é o seguinte:
Aqui, {replicaserverName} deve ser substituído pelo nome da réplica de servidor que você está incluindo como um destino de ponto de extremidade de leitura nesse ponto de extremidade virtual.
Listar pontos de extremidade virtuais
Para listar pontos de extremidade virtuais, use as seguintes etapas:
No portal do Azure, selecione o servidor primário.
Na barra lateral do servidor, em Configurações, selecione Replicação.
Na parte superior da página, você verá os pontos de extremidade de leitor e gravador exibidos, juntamente com os nomes dos servidores aos quais eles estão apontando.
Você pode exibir os detalhes do ponto de extremidade virtual usando o comando list ou show. Considerando que apenas um ponto de extremidade virtual é permitido por par de réplica primária, ambos os comandos produzem o mesmo resultado.
Veja um exemplo de como usar o comando list:
az postgres flexible-server virtual-endpoint list \
--resource-group <resource-group> \
--server-name <server-name>
Substitua <server-name> pelo nome do servidor primário e <resource-group> pelo nome do grupo de recursos.
Aqui está como você pode usar o comando show:
az postgres flexible-server virtual-endpoint show \
--name <virtual-endpoint-name>
--resource-group <resource-group> \
--server-name <server-name>
Nesse comando, substitua <virtual-endpoint-name>, <server-name> e <resource-group> pelos respectivos nomes. <server-name> é o nome do servidor primário.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints?api-version=2023-06-01-preview
Aqui, {sourceserverName} deve ser o nome do servidor primário a partir do qual você está gerenciando os pontos de extremidade virtuais.
Modificar o aplicativo para apontar para o ponto de extremidade virtual
Para usar os novos pontos de extremidade virtuais, modifique quaisquer aplicativos que estejam usando o servidor flexível do Banco de Dados do Azure para PostgreSQL (por exemplo: corp-pg-001.writer.postgres.database.azure.com e corp-pg-001.reader.postgres.database.azure.com).
Promover réplicas
Com todos os componentes necessários em vigor, você está pronto para executar uma réplica de promoção para a operação primária.
Para promover uma réplica no portal do Azure, siga estas etapas:
No portal do Azure, selecione o servidor principal da instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
No menu do servidor, em Configurações, selecione Replicação.
Em Servidores, selecione o ícone Promover para a réplica.
Na caixa de diálogo, verifique se a ação é Promover para o servidor primário.
Para de sincronização de dados, verifique se Planejado – sincronizar dados antes de promover está selecionado.
Selecione Promover para iniciar o processo. Depois de concluído, as funções são invertidas: a réplica se torna a primária e a primária assume a função da réplica.
Ao promover uma réplica para um servidor primário no servidor flexível do PostgreSQL do Azure, use o comando az postgres flexible-server replica promote. Esse processo é essencial para elevar um servidor de réplica para funcionar como servidor primário e rebaixar a função primária para a réplica atual. Especifique --promote-mode switchover e --promote-option planned no comando.
Substitua <resource-group> e <replica-server-name> pelo grupo de recursos específico e o nome do servidor de réplica. Esse comando garante uma transição suave da réplica para uma função primária de maneira planejada.
Ao promover uma réplica para um servidor primário, use uma solicitação HTTP PATCH com um corpo JSON específico para configurar as opções de promoção. Esse processo é crucial quando você precisa elevar uma réplica de servidor para atuar como se fosse o servidor primário.
A solicitação HTTP é estruturada da seguinte maneira:
Nesse JSON, a promoção está configurada para ocorrer no modo switchover com uma opção de promoção planned. Embora existam duas opções para a promoção — planned ou forced — escolha planned para esse exercício.
Observação
A réplica que você está promovendo deve ter o ponto de extremidade virtual do leitor atribuído ou você receberá um erro na promoção.
Testar aplicativos
Para executar algumas operações, reinicie os seus aplicativos e tente executar essas operações. Seus aplicativos devem funcionar perfeitamente sem modificar a cadeia de conexão de ponto de extremidade virtual ou as entradas DNS. Deixe seus aplicativos em execução desta vez.
Failback para o servidor e a região originais
Repita as mesmas operações para promover o servidor original para primário.
Na barra lateral do servidor, em Configurações, selecione Replicação
Em Servidores, selecione o ícone Promover para a réplica.
Na caixa de diálogo, verifique se a ação é Promover para o servidor primário.
Para de sincronização de dados, verifique se Planejado – sincronizar dados antes de promover está selecionado.
Selecione Promover, o processo começa. Depois de concluído, as funções são invertidas: a réplica se torna a primária e a primária assume a função da réplica.
Desta vez, altere o <replica-server-name> no comando az postgres flexible-server replica promote para que se refira ao seu servidor primário antigo, que atualmente está atuando como uma réplica, e execute a solicitação novamente.
Substitua <resource-group> e <replica-server-name> pelo grupo de recursos específico e o nome do servidor de réplica atual.
Desta vez, altere o {replicaserverName} na solicitação de API para que se refira ao seu servidor primário antigo, que atualmente está atuando como uma réplica, e execute a solicitação novamente.
Nesse JSON, a promoção está configurada para ocorrer no modo switchover com uma opção de promoção planned. Embora existam duas opções para a promoção — planned ou forced — escolha planned para esse exercício.
Testar aplicativos
Novamente, alterne para um dos aplicativos que consomem. Aguarde a alteração do status primário e da réplica para Updating e tente executar algumas operações. Durante a promoção da réplica, seu aplicativo pode encontrar problemas temporários de conectividade com o ponto de extremidade:
Adicionar réplica de leitura secundária
Crie uma réplica de leitura secundária em uma região separada para modificar o ponto de extremidade virtual do leitor e permitir a criação de um servidor independente a partir da primeira réplica.
No portal do Azure, escolha a instância primária de servidor flexível do Banco de Dados do Azure para PostgreSQL.
Na barra lateral do servidor, em Configurações, selecione Replicação.
Selecione Criar réplica.
Insira o formulário Básico com informações em uma terceira região (ex westus e corp-pg-westus-001)
Selecione Revisar + Criar para confirmar a criação da réplica ou Avançar: Rede para adicionar, excluir ou modificar qualquer regra de firewall.
Verifique as configurações de firewall. Observe como as configurações primárias são copiadas automaticamente.
Deixe os padrões restantes e, em seguida, selecione o botão Revisar + Criar na parte inferior da página ou prossiga para os formulários a seguir para configurar a segurança ou adicionar marcas.
Examine as informações na janela de confirmação final. Quando estiver pronto, selecione Criar. Uma nova implantação é criada.
Durante a implantação, você verá o primário no Updating estado.
Escolha um nome distinto como <replica-name>, para diferenciá-lo do servidor primário e de quaisquer outras réplicas.
Substitua <resource-group>, <source-server-name> e <location> por seus valores específicos.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Escolha um nome distinto como {replicaserverName}, para diferenciá-lo do servidor primário e de quaisquer outras réplicas.
No portal do Azure, escolha a instância primária de servidor flexível do Banco de Dados do Azure para PostgreSQL.
Na barra lateral do servidor, em Configurações, selecione Replicação.
Selecione as reticências e selecione Editar.
Na caixa de diálogo, selecione a nova réplica secundária.
Selecione Salvar. O ponto de extremidade do leitor agora está apontado para a réplica secundária e a operação de promoção agora está vinculada a esta réplica.
Agora você pode modificar seu ponto de extremidade de leitura para apontar para a réplica secundária recém-criada usando um comando az postgres flexible-server virtual-endpoint update. Lembre-se de substituir <replica-name> pelo nome da réplica de leitura recém-criada.
Substitua <resource-group>, <server-name>, <virtual-endpoint-name> e <replica-name> pelos valores específicos.
Agora você pode modificar seu ponto de extremidade de leitura para apontar para a réplica secundária recém-criada usando uma solicitação PATCH. Lembre-se de substituir {replicaserverName} pelo nome da réplica de leitura recém-criada.
No portal do Azure, escolha o servidor primário do servidor flexível do Banco de Dados do Azure para PostgreSQL.
Na barra lateral do servidor, no menu do servidor, em Configurações, selecione Replicação.
Em Servidores, selecione o ícone Promover para a réplica que você deseja promover para um servidor independente.
Na caixa de diálogo, verifique se a ação é Promover para o servidor independente e remover da replicação. Isso não afetará o servidor primário.
Para de sincronização de dados, verifique se Planejado – sincronizar dados antes de promover está selecionado.
Selecione Promover, o processo começa. Depois de concluído, o servidor não é mais uma réplica do primário.
Quando você promove uma réplica no Servidor Flexível do PostgreSQL do Azure, o comportamento padrão é promovê-la a um servidor independente. A promoção é obtida usando o comando az postgres flexible-server replica promote sem especificar a opção --promote-mode, pois o modo standalone é presumido por padrão.
Neste comando, substitua <resource-group> e <replica-server-name> pelo nome do grupo de recursos específico e o nome do primeiro servidor de réplica que você criou, que não faz mais parte do ponto de extremidade virtual.
Você pode promover uma réplica a servidor autônomo usando uma solicitação PATCH. Envie uma solicitação PATCH para a URL da API REST do Gerenciamento do Azure especificada com o primeiro corpo JSON, em que PromoteMode está definido como standalone e PromoteOption como planned. O segundo formato de corpo JSON, configurando ReplicationRole como None, foi preterido, mas ainda é mencionado aqui por motivos de compatibilidade com versões anteriores.
No portal do Azure, selecione o servidor primário.
Na barra lateral do servidor, em Configurações, selecione Replicação.
Na parte superior da página, localize a seção Virtual endpoints. Navegue até os três pontos (opções de menu) ao lado do nome do ponto de extremidade, expanda-os e selecione Delete.
Uma caixa de diálogo de confirmação de exclusão é exibida. Ela avisa: "Esta ação exclui o ponto de extremidade virtual virtualendpointName. Todos os clientes conectados usando esses domínios poderão perder o acesso." Aceite as implicações e confirme clicando em Excluir.
Para remover um ponto de extremidade virtual de um servidor flexível do PostgreSQL do Azure, você pode usar o comando az postgres flexible-server virtual-endpoint delete. Essa ação exclui permanentemente o ponto de extremidade virtual especificado.
Nesse comando, substitua <resource-group>, <server-name> e <virtual-endpoint-name> pelo grupo de recursos específico, o nome do servidor e o nome do ponto de extremidade virtual que deseja excluir.
Para excluir um ponto de extremidade virtual usando a API REST do Azure, você emitiria uma solicitação HTTP DELETE. A URL da solicitação será estruturada da seguinte maneira:
Você pode excluir uma réplica de leitura semelhante a como excluir uma instância autônoma de servidor flexível do Banco de Dados do Azure para PostgreSQL.
No portal do Azure, abra a página Visão geral para a réplica de leitura. Selecione Excluir.
Você também pode excluir a réplica de leitura usando a janela Replicação seguindo estas etapas:
No portal do Azure, selecione o servidor principal da instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
No menu do servidor, em Configurações, selecione Replicação.
Selecione a réplica de leitura a ser excluída e, em seguida, selecione as reticências. Selecione Excluir.
Reconheça a operação de Exclusão.
Para excluir um servidor primário ou de réplica, use o comando az postgres flexible-server delete. Se o servidor tiver réplicas de leitura, você deverá excluir as réplicas de leitura primeiro antes de excluir o servidor primário.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Substitua <resource-group> e <server-name> pelo nome do grupo de recursos e o nome do servidor de réplica que deseja excluir.
Para excluir um servidor primário ou de réplica, use a API de exclusão de servidores. Se o servidor tiver réplicas de leitura, as réplicas de leitura deverão ser excluídas primeiro antes de excluir o servidor primário.
Você só pode excluir o servidor primário depois de excluir todas as réplicas de leitura. Para excluir réplicas, siga as instruções na seção Excluir uma réplica e prossiga com as etapas fornecidas.
Para excluir um servidor do portal do Azure, siga estas etapas:
No portal do Azure, selecione o servidor principal da instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
Abra a página Visão geral do servidor e selecione Excluir.
Insira o nome do servidor primário a ser excluído. Selecione Excluir para confirmar a exclusão do servidor primário.
Para excluir um servidor primário ou de réplica, use o comando az postgres flexible-server delete. Se o servidor tiver réplicas de leitura, as réplicas de leitura deverão ser excluídas primeiro antes de excluir o servidor primário.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
Substitua <resource-group> e <server-name> pelo nome do grupo de recursos e o nome do servidor primário que deseja excluir.
Para excluir um servidor primário ou de réplica, use a API de exclusão de servidores. Se o servidor tiver réplicas de leitura, as réplicas de leitura deverão ser excluídas primeiro antes de excluir o servidor primário.
Duas métricas estão disponíveis para monitorar réplicas de leitura.
Retardo Máximo de Replicação Física
Disponível somente no primário.
A métrica Defasagem Máxima de Replicação Física mostra o atraso de bytes entre o servidor primário e a réplica mais atrasada.
No portal do Azure, selecione o servidor primário.
Selecione Métricas. Na janela Métricas, selecione Retardo Máximo de Replicação Física.
Para sua Agregação, selecione Máx.
Métrica de Retardo de Réplica de Leitura
A métrica Retardo de Réplica de Leitura mostra o tempo decorrido desde a última transação reproduzida em uma réplica. Se nenhuma transação ocorrer no primário, a métrica refletirá esse atraso de tempo. Por exemplo, se nenhuma transação ocorrer no servidor primário e a última transação tiver sido reproduzida há 5 segundos, o Retardo de Réplica de Leitura mostrará um atraso de 5 segundos.
No portal do Azure, selecione réplica de leitura.
Selecione Métricas. Na janela Métricas, selecione Retardo de Réplica de Leitura.