Introdução

A replicação no PostgreSQL é essencial para garantir alta disponibilidade, balanceamento de carga e recuperação de desastres em ambientes críticos. Uma das soluções mais robustas e amplamente utilizadas para esse fim é o Repmgr (Replication Manager). Neste artigo, vamos mostrar como configurar a replicação PostgreSQL com repmgr, passo a passo, além de cobrir boas práticas e comandos úteis.

Se você busca escalabilidade, resiliência e performance em sua infraestrutura de banco de dados PostgreSQL, este guia é para você.


O que é o Repmgr?

O Repmgr é uma ferramenta de linha de comando e uma biblioteca que facilita a gestão de replicação streaming do PostgreSQL. Ele automatiza tarefas como:

  • Configuração de replicação master-slave
  • Failover automático
  • Promover nós de standby para master
  • Monitoramento de replicação
  • Gerenciamento de clusters de PostgreSQL

Pré-requisitos

Antes de iniciar a configuração do Repmgr, certifique-se de:

  • Ter pelo menos dois servidores Linux (ex: Ubuntu ou CentOS)
  • Ter o PostgreSQL instalado (versão 12 ou superior recomendada)
  • Acesso root ou sudo aos servidores
  • Conectividade entre os nós via SSH
  • DNS ou arquivos hosts configurados com IPs e nomes dos servidores

Instalação do Repmgr

1. Adicionando o repositório

Para Ubuntu:

bash
sudo apt update
sudo apt install -y postgresql-common
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install -y repmgr

Para CentOS:

bash
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y repmgr

Configuração da Replicação Postgres com Repmgr

2. Criar o usuário de replicação

No nó primário (master):

sql
CREATE USER repmgr WITH REPLICATION PASSWORD 'senha_segura' LOGIN;

3. Configurar postgresql.conf

Ajuste os seguintes parâmetros:

confCopiarEditarlisten_addresses = '*'
wal_level = replica
max_wal_senders = 10
hot_standby = on

Reinicie o PostgreSQL:

bash
sudo systemctl restart postgresql

4. Configurar pg_hba.conf

Adicione permissões para os nós standby:

host    replication     repmgr         192.168.0.0/24          md5

Configuração do Repmgr

5. Arquivo repmgr.conf

No nó master, crie o arquivo /etc/repmgr/14/repmgr.conf (ajuste a versão conforme necessário):


node_id=1
node_name=node1
conninfo='host=192.168.0.1 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/var/lib/postgresql/14/main'
log_level=INFO
log_file='/var/log/repmgr/repmgr.log'

Faça o mesmo no standby, mudando node_id e node_name.

6. Registrar o nó master

bash
sudo -u postgres repmgr primary register

Adicionar Nó Standby

7. Clonar o master

No standby:

bash
sudo -u postgres repmgr standby clone --force --dry-run --verbose
sudo -u postgres repmgr standby clone --force

8. Registrar o standby

bash
sudo -u postgres repmgr standby register

Verificando o Cluster

Use o comando:

bash
repmgr cluster show

Você verá algo como:

sqlCopiarEditar ID | Name  | Role    | Status    | Upstream | Location | Priority | Timeline | Connection string
----+-------+---------+-----------+----------+----------+----------+----------+---------------------
 1  | node1 | primary | * running |          | default  | 100      | 1        | host=192.168.0.1 ...
 2  | node2 | standby |   running | node1    | default  | 100      | 1        | host=192.168.0.2 ...

Failover da Replicação PostgreSQL com Repmgr

9. Failover automático

Você pode usar o repmgrd (daemon) para failover automático:

bash
sudo systemctl enable repmgrd
sudo systemctl start repmgrd

Para failover manual:

bash
sudo -u postgres repmgr standby promote

Boas Práticas

  • Use senhas fortes e autenticação segura
  • Monitore os logs em /var/log/repmgr/repmgr.log
  • Combine o repmgr com ferramentas como PgBouncer ou HAProxy
  • Faça testes de failover da solução de replicação postgresql com repmgr regularmente

Conclusão

A replicação PostgreSQL com Repmgr oferece uma solução poderosa e flexível para ambientes que exigem alta disponibilidade e tolerância a falhas. Com esse guia, você pode configurar um cluster funcional e confiável em poucos passos.

Se você gostou deste conteúdo, compartilhe e siga nosso blog para mais artigos sobre PostgreSQL, banco de dados.


Palavras-chave SEO: replicação PostgreSQL, repmgr, failover PostgreSQL, alta disponibilidade PostgreSQL, configurar repmgr, streaming replication PostgreSQL, PostgreSQL cluster, PostgreSQL master-slave