Configurando o failover
- Os procedimentos descritos neste tópico devem ser executados pelo seu DBA do PostgreSQL.
- Requer o Data Movement gateway 2024.11.14 ou posterior
Este tópico explica como configurar o PostgreSQL e o Data Movement gateway para oferecer suporte a um cenário de failover. O procedimento que você precisa executar depende da sua configuração específica de failover do PostgreSQL.
Se o ID do objeto de banco de dados para o banco de dados primário e secundário permanecer o mesmo após um failover (o que geralmente acontece), você só precisará atualizar o arquivo de hosts na máquina do Data Movement gateway com o endereço IP do servidor de banco de dados secundário. No entanto, se o ID do objeto de banco de dados do banco de dados secundário não for o mesmo do banco de dados primário após um failover, será necessária uma configuração adicional. Geralmente não é possível saber com antecedência se o ID do objeto será alterado, mas se você souber, execute o procedimento Configurando o failover quando o ID do objeto do banco de dados primário e secundário for diferente descrito abaixo. Se você não souber se o ID do objeto será alterado, recomendamos executar o procedimento mais simples descrito em Configurando o failover quando o ID do objeto do banco de dados primário e secundário for igual, pois o ID do objeto geralmente permanecerá o mesmo após um failover.
Se você tiver executado a configuração mais simples e o Data Movement gateway não conseguir se recuperar durante o failover, será necessário executar o procedimento Configurando o failover quando o ID do objeto do banco de dados primário e secundário for diferente.
Configurando o failover quando o ID do objeto do banco de dados primário e secundário for igual
Quando ocorrer um failover, a tarefa de dados encontrará um erro recuperável e tentará se reconectar ao endereço IP do servidor de banco de dados primário. No entanto, normalmente não terá êxito, pois o servidor de banco de dados secundário terá (quase sempre) um endereço IP diferente.
Se a troca de endereços IP não for feita por um serviço de failover de DNS, você precisará especificar o novo endereço IP no arquivo de hosts da máquina do Data Movement gateway. O caminho para o arquivo de hosts é /etc/hosts. Depois que o arquivo de hosts for atualizado, a tarefa de dados será retomada automaticamente.
Configurando o failover quando o ID do objeto do banco de dados primário e secundário for diferente
Na operação padrão, a tarefa de dados cria um slot automaticamente ao mover dados de uma fonte do PostgreSQL. Os nomes dos slots contêm o ID do objeto do banco de dados em seu nome. Em casos raros, o ID do objeto dos bancos de dados primário e secundário será diferente. Nesse caso, a tarefa de dados falhará durante um failover, pois não conseguirá encontrar o slot que criou para o banco de dados primário no banco de dados secundário. Nesse caso, ocorrerá o seguinte erro:
[SOURCE_CAPTURE ]E: Can't resume task after replication slot was dropped. [1020101] (postgres_endpoint_capture.c:445)
Se você encontrar esse erro, faça o seguinte:
-
Na seção Propriedades internas das configurações do conector, adicione a propriedade interna slotName e defina o valor do nome do slot.
O slotName especificado já deve existir no servidor PostgreSQL primário. Você pode criar um novo slot ou usar um slot existente.
Para criar um novo slot e recuperar seu LSN, execute a seguinte consulta:
SELECT lsn FROM pg_create_logical_replication_slot ('user_provided_slot_name', 'test_decoding');
Para obter uma lista de slots disponíveis e seus LSNs, execute a seguinte consulta:
SELECT slot_name, restart_lsn FROM pg_replication_slots WHERE slot_type = 'logical';
-
Digite o LSN para o slotName especificado no campo Posição de alteração de origem do diálogo Opções avançadas de execução e, em seguida, prepare e inicie a tarefa de dados.
Se ocorrer um failover, o servidor secundário assumirá o controle quase imediatamente e se tornará o servidor primário. O failover deve ser tratado pela extensão pg_failover_slots.
-
Quando ocorrer um failover, a tarefa de dados encontrará um erro recuperável e tentará se reconectar ao endereço IP do servidor de banco de dados primário. No entanto, normalmente não será bem-sucedido, pois o servidor de banco de dados secundário terá (quase sempre) um endereço IP diferente. Se a troca de endereços IP não for feita por um serviço de failover de DNS, você precisará especificar o novo endereço IP no arquivo de hosts da máquina do Data Movement gateway. O caminho para o arquivo de hosts é /etc/hosts. Depois que o arquivo de hosts for atualizado, a tarefa de dados será retomada automaticamente.