Por padrão, o protocolo de replicação em streaming do PostgreSQL não sincroniza slots de replicação lógica do nó primário para o nó standby. Se ocorrer um failover, o slot será perdido e todas as assinaturas lógicas serão interrompidas. O PolarDB for PostgreSQL resolve esse problema ao sincronizar os slots de replicação lógica com o nó standby, permitindo que as assinaturas continuem funcionando sem interrupções após o failover.
Não há suporte para failover de slot de replicação física. Para obter mais informações sobre o funcionamento dos slots de replicação, consulte Replication slots na documentação do PostgreSQL.
Pré-requisitos
Antes de começar, verifique se:
Seu cluster PolarDB for PostgreSQL executa o PostgreSQL 11 com versão de revisão 1.1.27 ou posterior
Para verificar a versão de revisão, execute:
SHOW polar_version;
Se a versão de revisão for anterior à 1.1.27, atualize a versão de revisão antes de prosseguir.
Ative ou desative o failover de slot de replicação lógica
Controle o failover de slot de replicação lógica definindo o parâmetro polar_failover_slot_mode. Configure o parâmetro no console.
Escolha um modo
|
Modo |
Comportamento |
Segurança dos dados |
Quando usar |
|
|
Sincroniza slots de forma assíncrona. Não há perda de dados durante o failover de cluster HA. O cliente de replicação lógica pode receber dados duplicados após o failover. Se o cliente tiver dados mais recentes que o novo primário após o failover, ele poderá ter retido dados perdidos durante o processo. |
Sem perda durante failover HA; possíveis duplicatas |
Adequado para a maioria das cargas de trabalho; dados duplicados são aceitáveis |
|
|
Sincroniza slots de forma síncrona. Garante que o cliente de replicação lógica nunca receba alterações à frente do nó standby. Não há perda de dados durante o failover. |
Sem perda durante failover; consulte o caso extremo abaixo |
Recomendado quando a consistência de dados é crítica |
|
|
Desativa o failover de slot de replicação lógica. |
Não aplicável |
Use quando o failover para replicação lógica não for necessário |
No modo sync, existe um caso extremo: se o nó standby ficar desconectado por um longo período ou estiver em reconstrução, a latência de sincronização entre primário e standby pode aumentar a ponto de o cliente de replicação lógica receber alterações à frente do standby. Se ocorrer um failover nessa janela, dados podem ser perdidos na replicação lógica, e dados gerados no novo primário também podem ser perdidos. Para evitar isso, entre em contato com o suporte para definir polar_priority_replication_force_wait como on. Isso impede que o primário envie alterações ao cliente de replicação lógica até que o standby se reconecte ou termine a reconstrução. Observe que isso reduz a disponibilidade da replicação lógica durante períodos de desconexão.
Caso dados duplicados do modo async afetem sua carga de trabalho, alterne para o modo sync.
Limitações
Não há suporte para failover de slot de replicação física.