Tipos de Replicação no PostgreSQL

O PostgreSQL é um S.G.B.D. que permite diferentes modelos de replicação de dados.

A replicação via Log Shipping, por exemplo, esteve presente no PostgreSQL desde a versão 8. Já a replicação via streaming e a replicação lógica nativa desde as versões 9 e 10, respectivamente. Estas duas últimas sendo marcos importantes na evolução do PostgreSQL.

Vamos entender um pouco melhor sobre cada um desses tipos de replicação.

Replicação Física

A replicação física copia blocos de dados, byte por byte. Dessa forma, a réplica torna-se uma imagem do cluster primário.

Podemos configurar este tipo de replicação de duas formas.

Log Shipping

Neste modelo, o servidor primário gera arquivos de WAL (Write-Ahead Log – o log de transações do PostgreSQL) de 16 MB. Em seguida, o servidor de réplica busca estes arquivos e os replica. Vale ressaltar que, além disso, esses arquivos são arquivados e ficam disponíveis para replicação somente após atingirem esses 16 MB. Por isso, esse comportamento pode gerar pequenos atrasos na replicação.

Streaming

No modelo de replicação via streaming, o WAL do servidor primário replica as transações para o secundário, byte por byte, pela conexão de rede, tornando a replicação praticamente em tempo real.

Na replicação de dados via streaming, deve-se escolher se a replicação será em modo assíncrono ou síncrono:

Assíncrono:

Por padrão a replicação acontece no modo assíncrono. Deste modo, assim que os dados são escritos no primário, o cliente recebe o retorno da execução.

Síncrono:

Já no modo síncrono, o cliente receberá o retorno somente após o servidor secundário concluir a replicação dos dados. Dessa forma, este modelo garante zero perda de dados, mas, em contrapartida, adiciona latência a cada transação.

É importante destacar que esta replicação copia todo o cluster. Portanto, não podemos excluir objetos específicos desse processo.

Replicação Lógica

A replicação lógica, diferentemente da física, não copia os blocos binários. Ao invés disso, ela trabalha com o WAL, rastreando e reaplicando os comandos das transações.

O modelo utilizado é o de Publisher e Subscriber. Aqui, o Publisher é a origem dos dados. A partir de sua configuração, um processo captura no WAL as alterações realizadas nos objetos selecionados para replicação e espera pela solicitação do Subscriber. O Subscriber, por sua vez, é o destino dos dados. Ele se conecta à origem, busca e aplica as alterações no destino.

Neste tipo de replicação, podemos selecionar tabelas e, até mesmo, definir quais colunas e linhas serão replicadas.

Qual é o melhor tipo de replicação para o meu cenário?

Como a replicação lógica permite uma replicação mais granular, ela se mostra mais interessante em situações em que queremos consultar sempre tabelas específicas a partir de um servidor secundário, preservando a utilização de recursos em um servidor de escrita, por exemplo. Vale ressaltar que, como a replicação acontece transação por transação, um alto número de alterações nas tabelas replicadas impactará o tempo de replicação dessas informações.

A replicação física, por replicar inteiramente o cluster, é interessante para alta disponibilidade, disaster recovery e, até mesmo, para uma réplica de leitura. Além disso, é importante considerar que, neste tipo de replicação, precisamos disponibilizar no servidor de réplica a mesma infraestrutura do servidor primário.

Por fim, espero que este post tenha sido esclarecedor e possa ajudá-lo em uma possível decisão.

Até a próxima!

Por Jonas Natario

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Tipos de Replicação no PostgreSQL

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: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?