Clicky

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: contato@cdbdatasolutions.com.br
Telefone: (54) 3401-1471

Replicação Lógica: Replicando um banco de dados no PostgreSQL 14

  • Por Éverton Trindade e Anderson de Souza
  • 08/11/2022
  • 441 Visualizações

Olá, pessoal!

Hoje daremos continuidade a nossa saga referente a replicação lógica no PostgreSQL. No post anterior referente a esse mesmo assunto, abordamos sobre os possíveis Problemas de Inconsistência e Quebra de Replicação Lógica no PostgreSQL

Para fins de demonstração, nesse post utilizamos a versão 14 do PostgreSQL, um banco de dados denominado “pagila” e duas VMs no Azure baseado na distribuição RedHat, ambos atualizados e com mesmo versionamento de Kernel.

Servidor Primário (master)
Servidor Secundário (réplica)
Status do serviço do PostgreSQL 14 em ambos os servidores de banco (PGSQL-01 e PGSQL-03)

Para facilitar o processo, vamos ignorar a etapa de restore e configuração do banco de dados pagila. Focaremos apenas na configuração da replicação lógica. Na imagem abaixo temos as tabelas do banco a serem replicadas:

Para fins de validação, confirmaremos a existência dos dez primeiros registros da tabela actor:

Para iniciarmos o processo, precisamos estabelecer conexão com o banco pagila no servidor PGSQL-01:

A partir daqui criaremos o publication, o qual denominaremos de pb_replica e servirá como ponte para criarmos um subscription no servidor secundário (réplica). Aqui faremos a replicação de todas as tabelas do banco pagila sem mencionar tabelas ou comandos específicos, embora não recomendemos em ambientes de produção por questões de performance. Isso porque no PostgreSQL você pode definir se a replicação permitirá ou não comandos do tipo INSERT, UPDATE, DELETE etc. Além de especificar quais tabelas serão replicadas.

Abaixo podemos confirmar os dados do publication criado anteriormente no servidor PGSQL-01:

Aqui confirmamos não haver registros na tabela actor no servidor réplica:

Agora estabeleceremos conexão com o banco pagila do servidor PGSQL-03 para então criarmos o subscription que estabelecerá comunicação com o publication.

Para criarmos essa subscription, a qual chamaremos de sb­_replica, faz-se necessário passar cinco parâmetros, são eles:

hostip do servidor primário
port – porta utilizado pelo PostgreSQL no servidor primário
dbname – nome do banco cujas tabelas serão replicadas
user – usuário utilizado para o processo de replicação
password – senha do usuário configurado no processo de replicação

Abaixo temos os dados de sb_replica após o processo de criação da subscription:

Pelo que percebemos a nossa replicação já está funcionando. Para fins de confirmação, validaremos se existem ou não registros na tabela actor:

E com isso temos a replicação de todas as tabelas do banco pagila no servidor PGSQL-03, conforme processo lógico demonstrado abaixo.

Caso as tabelas permaneçam sem registros, o que podemos fazer é atualizar ou forçar a replicação. Caso o problema persista, faz-se necessário rever as configurações ou parametrizações do processo. Mas isso ficará para um outro momento.

Por hoje era isso pessoal, até o próximo post! 😊

Abrir bate-papo
Olá! Somos especialistas em Infraestrutura e Inteligência de Dados.
Como podemos ajudá-lo?