Replicação de dados síncrona com Postgres

Neste artigo mostrarei como fazer uma replicação assíncrona com banco de dados Postgres na versão 9.5 em um Ubuntu 16.10.

[ Hits: 22.027 ]

Por: Vítor Soares Vian em 08/10/2017 | Blog: https://www.linkedin.com/in/vitor-soares-vian/


Introdução sobre replicação de dados



Replicação de dados é uma técnica muita conhecida em banco de dados, trata-se de uma espelhamento de dados e objetos de um banco de dados para outro, mantendo assim um espelho de uma para o outro, com isso temos como benefícios a tolerância à falhas, redundância de dados e se necessário um balanceamento de carga.

Nesse artigo iremos explorar a replicação do tipo Master-Slave onde teremos um servidor principal (master) e os demais que receberão a cópia desse servidor (slaves).

Vamos iniciar a configuração!

Configurando o servidor master

Edite o arquivo postgresql.conf, que na versão 9.5 encontra-se em: /etc/postgres/9.5/main/postgresql.conf

Edite a linha contendo o seguinte texto "listen_addresses", que caso esteja comentada apenas remova o '#' da frente da linha e adicione o caractere "*" no lugar do localhost. Este parâmetro indica a que IP o postgres está escutando, neste caso colocaremos para escutar qualquer IP.

A linha deverá ficar assim:

listen_addresses = '*'

Agora precisamos mudar o parâmetro "wal_level", trocar de minimal para hot_standby, para que sejam adicionadas informações de leitura de consultas no servidor de espera.

wal_level = hot_standby

Trocaremos também a variável "wal_keep_segments", que especifica a quantia de segmentos de arquivo de logs passados.

wal_keep_segments = 10

Trocaremos também a "max_wal_senders" para o número de replicadores que teremos, que no nosso exemplo será apenas 1.

max_wal_senders = 1

Colocaremos o hot_standby para on, edite a seguinte linha, trocando off por on.

hot_standby=on

Agora edite o arquivo pg_hba.conf, que na versão 9.5 encontra-se em: /etc/postgres/9.5/main/pg_hba.conf

No final do arquivo adicione a seguinte linha:

host replication replicador x.x.x.x trust

Onde:
  • replicador = nome de usuário que será criado
  • x.x.x.x = ip slave
  • trust = sem pedir senha

Agora reinicie o postgresql:

# service postgresql restart

    Próxima página

Páginas do artigo
   1. Introdução sobre replicação de dados
   2. Criando usuário de replicação
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

PostgreSQL: SGBDOR

Vacuum - otimizando sua base de dados PostgreSQL

Encoding do Postgres (latin1) e encoding do SO (Debian/Ubuntu)

Instalando PostgreSQL 8.1 com extensão para dados espaciais (PostGis) e interface de gerenciamento (PgAdmin3)

Unificando bases de dados com Schemas

  
Comentários
[1] Comentário enviado por hrcerq em 08/10/2017 - 16:33h

Excelente tutorial. Muito obrigado.

---

Atenciosamente,
Hugo Cerqueira

[2] Comentário enviado por danniel-lara em 09/10/2017 - 16:23h

Muito bom mesmo , e simples de fazer
Parabéns

[3] Comentário enviado por oliveiraelemos em 19/03/2018 - 09:54h

Bom dia,

Como faço para replicar uma base específica e não o servidor todo?

abraços


[4] Comentário enviado por andremferreira em 17/11/2018 - 10:20h

Em resposta a pergunta anterior.
Prezado Oliveira, acredito que seja mais fácil dividir a pasta "/data" em data-1 e data-2 e configurar a replicação onde achar necessário atribuindo na configuração no "postgresql.conf" em portas destintas (data-1: 5432 | data-2: 5433) e para finalizar será necessário criar um novo novo serviço de inicialização para cada pasta data, modificando o arquivo: /etc/rc.d/init.d/postgresql-xx nas linhas (88-90)

PGPORT=PPPP
PGDATA=/var/lib/pgsql/XX/data-Y
PGLOG=/var/lib/pgsql/XX/pgstartup-Y.log

• Y - número da sua pasta data.
• P - porta de conexão
• X - versão postgres

[5] Comentário enviado por C4rl em 29/11/2018 - 06:51h

Muito bom o seu tutorial, é simples, bem explicado e direto ao ponto. Tenho uma dúvida e um pedido de correção, vou começar pelo segundo.

O título está incorreto e deveria ser "Replicação de dados assíncrona com Postgres", pois até onde sei, posso estar engando, não há suporte para replicação síncrona neste SGBD, de qualquer modo o tutorial deixa claro que trata-se de replicação assíncrona.

Quanto a dúvida, qual a diferença entre usar o rsync - que vejo em muitos artigos pela web - do pg_basebackup?

Um abraço


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts