Quero resolver os erros que ocorrem quando eu crio implantações azul/verde no Amazon Relational Database Service (Amazon RDS) para PostgreSQL e na edição do Amazon Aurora compatível com PostgreSQL.
Resolução
Analise as limitações para implantações azul/verde e identifique seu erro
Analise as limitações para implantações azul/verde no Amazon RDS e edições do Aurora compatíveis com o PostgreSQL.
Para encontrar a mensagem de erro específica da sua implantação, conclua as seguintes etapas:
- Abra o console do Amazon RDS.
- No painel de navegação, clique em Bancos de dados.
- Selecione sua implantação azul/verde.
- Clique na guia Logs e eventos.
- Analise os logs em busca de mensagens de erro.
Resolva o erro de configuração da replicação lógica
Se você criar uma implantação azul/verde, mas não ativar a replicação lógica, receberá a seguinte mensagem de erro:
"Blue/Green Deployments require a DB instance with logical replication enabled. Before you create a Blue/Green Deployment for a DB instance, associate the DB instance with a custom DB instance parameter group that enables logical replication."
Para ativar a replicação lógica, conclua as seguintes etapas:
- Crie um grupo de parâmetros personalizado ou modifique um grupo existente.
- Defina o parâmetro rds.logical_replication como 1.
- Aplique o grupo de parâmetros personalizados à sua instância de banco de dados.
Observação: não é possível modificar os valores do grupo de parâmetros padrão.
Resolva parâmetros de replicação incompatíveis
Se você criar uma implantação azul/verde com slots de replicação insuficientes para a contagem do seu banco de dados, receberá a seguinte mensagem de erro:
"Creation of blue/green deployment failed due to incompatible parameter(s): max_replication_slots, and max_logical_replication_workers."
Para solucionar esse problema, conclua as etapas a seguir:
-
Execute a consulta a seguir para ver uma lista de seus bancos de dados:
SELECT datname FROM pg_database;
-
Modifique os seguintes parâmetros em seu grupo de parâmetros personalizados:
Defina max_replication_slots como um valor maior do que a contagem total do seu banco de dados.
Defina max_wal_senders e max_logical_replication_workers como um valor igual aos seus slots de replicação lógica ativos.
Defina max_worker_processes como um valor igual à soma de max_logical_replication_workers, autovacuum_max_workers e max_parallel_workers.
-
Crie uma nova implantação azul/verde.
Resolva o erro de slots de replicação externos
Se você criar uma implantação azul/verde quando existirem slots de replicação externos, você receberá a seguinte mensagem de erro:
"Replica creation is canceled due to external replication."
Para solucionar esse problema, conclua as etapas a seguir:
-
Execute o comando a seguir para verificar os slots de replicação existentes:
SELECT * FROM pg_replication_slots WHERE slot_type NOT LIKE 'physical';
-
Execute o comando a seguir para descartar o slot identificado:
SELECT pg_drop_replication_slot(slot_name);
Observação: substitua slot_name pelo nome do slot de replicação.
Resolva as alterações de DDL que ocorrem após a implantação
Se você alterar a Linguagem de definição de dados (Data Definition Language, DDL) ou modificar objetos grandes depois de criar uma implantação azul/verde, receberá a seguinte mensagem de erro:
"DDL changes aren't supported for blue/green deployments. These changes aren't replicated from the blue environment to the green environment, and switchover will be blocked. Your green databases now have a status of REPLICATION_DEGRADED. Delete and recreate your blue/green deployment and avoid future DDL changes."
Para resolver esse problema, exclua sua implantação azul/verde. Em seguida, crie uma nova implantação azul/verde.
Após a implantação, não altere a DDL e os objetos grandes no ambiente azul.
Resolva erros de chave primária da tabela
Se você atualizar ou excluir registros em tabelas que não têm chaves primárias, receberá a seguinte mensagem de erro:
"Logical replication target relation 'public.image_audit' has neither REPLICA IDENTITY index nor PRIMARY KEY and published relation does not have REPLICA IDENTITY FULL"
Para resolver esse problema, adicione chaves primárias às tabelas que exigem atualizações ou exclusões. Em seguida, execute o seguinte comando para definir REPLICA IDENTITY FULL:
ALTER TABLE table_name REPLICA IDENTITY FULL;
Observação: substitua table_name pelo nome da sua tabela.
Resolva conflitos de extensão PG_CRON
Se você usar a extensão pg_cron em sua implantação, poderá receber a seguinte mensagem de erro:
"role 'rdsrepladmin' cannot SET ROLE to 'rds_superuser'"
Os conflitos de replicação podem ocorrer porque os processamentos em segundo plano da extensão pg_cron são executados como superusuário e ignoram as configurações de somente leitura.
Para resolver esse problema, desative a extensão pg_cron em todos os bancos de dados verdes depois de criar a implantação azul/verde. Mantenha a extensão desativada durante toda a implantação.