Guia de tecnologias

Instalar e configurar repmgr para PostgreSQL (master e standby)

5 min read PostgreSQL Atualizado 26 Sep 2025
Repmgr no PostgreSQL: instalação e configuração
Repmgr no PostgreSQL: instalação e configuração

Importante: repmgr deve ser compilado com os headers do PostgreSQL (postgresql-devel). Teste cada etapa em um ambiente controlado antes de aplicar em produção.

O que é repmgr

repmgr é uma ferramenta de gerenciamento de replicação para PostgreSQL que ajuda na criação, monitoramento e promoção de nós de standby. Definição rápida: repmgr automatiza tarefas operacionais comuns em arquiteturas master/standby.

Variantes de busca (intenção principal + termos relacionados)

  • Instalar repmgr no PostgreSQL
  • Configurar repmgr master standby
  • Clonar banco PostgreSQL com repmgr
  • repmgr compile instalar

Requisitos prévios

  • Acesso root ou sudo nos servidores master e slave.
  • Usuário postgres disponível.
  • PostgreSQL e seus headers (postgresql-devel) instalados.
  • Conectividade de rede entre master e slave.

Passo 5. Instalar o código-fonte do repmgr manualmente em ambos os servidores (master e slave)

Baixe repmgr de http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz para /tmp.

Antes de compilar repmgr com o PostgreSQL, instale os pacotes necessários:

zypper install make gcc postgresql-devel libxslt-devel pam-devel libopenssl-devel krb5-devel

Saída do terminal mostrando instalação de pacotes via zypper

Agora compile e instale o repmgr:

make USE_PGXS=1
make USE_PGXS=1 install

Terminal com processo de compilação e instalação do repmgr

Verifique se repmgr foi instalado corretamente:

repmgr --version
repmgrd --version

Execute essas verificações tanto no master quanto no slave. No próximo passo vamos clonar o banco master para o slave; confirme a instalação antes de prosseguir.

Passo 6. Clonar o banco master para o slave (apenas no SLAVE)

No servidor slave, troque para o usuário postgres e execute o comando de clone:

su - postgres
repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster

Você verá mensagens de log no terminal do slave durante o processo de clone.

Log do processo de clone do standby exibido no terminal

Depois do clone, inicie o PostgreSQL no slave:

/etc/init.d/postgresql start

Nota: em sistemas modernos o serviço pode ser gerenciado com systemctl (por exemplo, systemctl start postgresql). Use o método adequado ao seu SO.

Passo 7. Configurar o arquivo repmgr.conf em master e slave

Crie o diretório do repmgr e um arquivo repmgr.conf no master com o conteúdo a seguir:

cluster=test
node=1
conninfo='host=pgmaster user=postgres dbname=pgbench'

No slave, crie o repmgr.conf com:

cluster=test
node=2
conninfo='host=pgslave user=postgres dbname=pgbench'

Coloque repmgr.conf em /var/lib/pgsql/repmgr/ ou no caminho que você estiver usando e ajuste permissões para que o usuário postgres consiga ler.

Passo 8. Registrar master e slave e iniciar o processo de monitoramento

No servidor master, registre o nó master:

repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register

No servidor slave, registre o nó standby:

repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose standby register

Verifique o status de replicação:

psql pgbench -c 'select * from repmgr_test.repl_status'

O slave normalmente ficará ~1 segundo atrás do master, dependendo da carga e da latência.

Teste rápido de replicação

No banco master:

psql pgbench -c "create table test ( test varchar(30));"
psql pgbench -c "insert into test values ( 'test123');"

No slave, verifique se os dados chegaram:

psql -h pgslave pgbench -c "select * from test"

Resultado da consulta no standby mostrando a linha replicada

Bingo — se você vir os dados no slave, a replicação está funcionando.

Trabalho recomendado para o futuro (melhorias)

  1. Crie um usuário dedicado para repmgr em vez de usar o usuário postgres.
  2. Existe um bug conhecido no repmgr; há um commit/fix que pode interessar: https://github.com/greg2ndQuadrant/repmgr/commit/7427988628f754e57069453d65a71f79117c3a3d
  3. Leia a documentação do repmgr para procedimentos de promoção do standby quando o master falhar.
  4. Há várias maneiras de verificar se a replicação está ativa; consulte a documentação do PostgreSQL no site oficial.
  5. Se precisar, contate o autor original em [email protected].
  6. Leia sempre o README incluído no pacote repmgr.

Checklists rápidas

Checklist do DBA (antes de replicar):

  • Backups completos feitos e verificados
  • Mesma versão do PostgreSQL nos nós
  • Configurações de wal_level, max_wal_senders, wal_keep_segments ajustadas
  • Conectividade de rede testada (portas e firewall)

Checklist do Sysadmin (infra):

  • Permissões e dono do diretório de dados corretos
  • Usuário de serviço (postgres) presente
  • Configuração do serviço (systemd / init.d) pronta
  • Rotina de monitoramento em produção configurada

Mini-metodologia (passos essenciais)

  1. Preparar ambiente e instalar dependências.
  2. Compilar e instalar repmgr nos nós.
  3. Clonar o master no standby (standby clone).
  4. Configurar repmgr.conf e registrar nós.
  5. Validar replicação e criar procedimentos de promoção.

Fluxo de decisão para failover (Mermaid)

flowchart TD
  A[Detecta falha no master] --> B{replica está atualizada?}
  B -- Sim --> C[Promover standby para master]
  B -- Não --> D[Executar aplicação de WAL e verificar consistência]
  D --> E{Consistente?}
  E -- Sim --> C
  E -- Não --> F[Investigar/logs e restaurar de backup]
  C --> G[Atualizar reconfiguração dos clientes]

Cenários em que isso pode falhar (contra-exemplos)

  • Diferenças de versão do PostgreSQL entre master e standby.
  • Permissões incorretas nos diretórios de dados.
  • Parâmetros de WAL insuficientes (ex.: wal_level = minimal).
  • Firewalls bloqueando replicação.

Solução de problemas rápida

  • Verifique logs do PostgreSQL (pg_log) em ambos os nós.
  • Teste conexão manual com psql usando os parâmetros de conninfo.
  • Confirme a versão do repmgr com repmgr –version.
  • Se o clone falhar, remova dados parciais no standby e repita o processo de clone.

Critérios de aceitação (o que confirmar antes de considerar concluído)

  • repmgrd está em execução nos nós com status saudável.
  • repmgr -f … cluster show retorna ambos os nós registrados.
  • Dados criados no master aparecem no standby em segundos.
  • Procedimento de promoção testado e documentado.

Referências

2ndQuadrant repmgr: http://projects.2ndquadrant.com/repmgr PostgreSQL Wiki (Hot Standby): http://wiki.postgresql.org/wiki/Hot_Standby PostgreSQL Wiki (Binary Replication Tutorial): http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial

Resumo

  • Compile e instale repmgr com USE_PGXS=1 após instalar os pacotes de desenvolvimento do PostgreSQL.
  • Clone o master para o standby usando repmgr standby clone.
  • Configure repmgr.conf nos dois nós e registre master e standby.
  • Teste replicação criando dados no master e consultando no standby.

Extras: role-based checklists incluídas; fluxograma de decisão para failover; dicas de troubleshooting.

Nota: adapte caminhos e nomes de hosts (pgmaster, pgslave) ao seu ambiente.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE