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.030 ]

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


Criando usuário de replicação



Ainda no servidor master, agora iremos criar o usuário de replicação.

Execute as seguintes linhas:

su - postgres

(seleciona o usuário postgres)

psql

(entra no terminal do postgres)

> create user replicador replication

Onde:
  • replicador = nome do usuário
  • replication = flag que informa que esse usuário será usado para replicação

Para verificar a existência desse usuário execute "\du+" dentro de terminal do postgresql, verifique que o usuário que acabamos de criar contém uma flag chamada "replication".

Configurando servidor slave

Agora no servidor slave faça o seguinte...

Primeiro iremos parar o servidor do postgresql com o seguinte comando:

# /etc/init.d/postgresql stop
ou
# service postgresql stop

Vamos remover o banco de dados atual do postgresql:

# rm -Rf /var/lib/postgresql/9.5/main/*

Agora vamos usar o usuário postgres:

# su - postgres

E ali vamos usar uma ferramenta chamada pg_basebackup, que pode ser usado para apontar um diretório onde a gente deseja que caia o nosso backup, para isso usaremos este comando:

pg_basebackup -D /var/lib/postgresql/9.5/main/ -h IP_DO_MASTER -u USUARIO_REPLICADOR

* com o comando acima fizemos o backup do banco de dados do server master.

Agora iremos criar um arquivo chamado "recovery.conf":

vim /var/lib/postgresql/9.5/main/recovery.conf

Coloque o seguinte conteúdo dentro desse arquivo.

standby_mode=on
primary_conninfo='host=172.17.0.2 user=replicador application_name=debian2'
trigger_file='/tmp/pgtrigger'

Na primeira linha estamos informando que o postgresql esta em modo standby, enquanto que na segunda linha estamos informando parâmetros referentes ao servidor como host, usuário usado na replicação, e o aplication_name.

Na última linha temos um arquivo que não deve existir no servidor que esta sendo configurado pois este arquivo quando criado informa ao postgresql que ele deverá sair do modo replicação.

E por fim é só iniciarmos o postgresql:

# /etc/init.d/postgresql start
ou
# service postgresql start

Para testar é só criar um banco de dados novo no servidor master e ver ele aparecer dentro de poucos segundos no servidor slave.

Sua replicação está pronta!!!

Página anterior    

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

Como migrar banco de dados MySQL para PostgreSQL

PostgreSQL - Instalação inicial no Debian Wheezy 64 bits

Pool de Conexões Transparentes no Postgres usando o pgpool

Autenticação no PostgreSQL - com exemplos

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