Entrar ou criar conta

Laboratório: Replicação Assíncrona de PostgreSQL com Backup Automatizado via pgBackRest

Você terá um cluster PostgreSQL com replicação assíncrona e backup automatizado via pgBackRest, usando duas máquinas virtuais Linux. Tempo estimado: 120 minutos.

Operação de bancos de dados em produção com PostgreSQL
Ligado ao treinamento Operação de bancos de dados em produção com PostgreSQL

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.

ULC-LAB-DADO-0001 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
13
Validações
4
Versões da documentação consultada
PostgreSQL 15.x · pgBackRest a versão estável atual
Objetivo

Este laboratório ensina a implementar replicação assíncrona entre dois servidores PostgreSQL, com configuração de backup automatizado usando pgBackRest. Você vai entender na prática como garantir alta disponibilidade e recuperação de dados em ambientes reais, baseando-se apenas em software livre e documentação oficial.

Topologia

Duas VMs Linux em rede privada: uma como servidor principal (Primary, 192.168.56.10), outra como réplica (Replica, 192.168.56.11). pgBackRest instalado no Primary para backups locais. Replica conecta-se ao Primary via streaming replication.


+-------------------+         +-------------------+
|   Primary (PG)    |<------->|   Replica (PG)    |
| 192.168.56.10     |         | 192.168.56.11     |
| pgBackRest local  |         |                   |
+-------------------+         +-------------------+

Equipamentos e software

ItemRequisito, licença ou versão
VM Linux (Primary)1 vCPU, 2 GB RAM, 10 GB disco, Ubuntu 22.04 ou CentOS 8
VM Linux (Replica)1 vCPU, 2 GB RAM, 10 GB disco, Ubuntu 22.04 ou CentOS 8
PostgreSQLPostgreSQL License · 15.x
pgBackRestMIT · a versão estável atual

Roteiro

  1. Preparar as VMs

    Garanta que ambas as VMs estejam na mesma rede privada e possam se pingar mutuamente.

    ping 192.168.56.11
    ping 192.168.56.10

    O que você deve ver: Respostas de ping entre as máquinas.

  2. Instalar PostgreSQL nas duas VMs

    Use o repositório oficial para garantir versões recentes e suporte a recursos de replicação.

    sudo apt update && sudo apt install postgresql-15 postgresql-client-15 -y

    O que você deve ver: PostgreSQL instalado sem erros.

  3. Configurar o Primary para replicação

    Ajuste o postgresql.conf para permitir conexões de réplica e definir parâmetros de WAL.

    sudo -u postgres nano /etc/postgresql/15/main/postgresql.conf

    O que você deve ver: Parâmetros como wal_level=replica, max_wal_senders=5, archive_mode=on, archive_command configurados.

  4. Permitir acesso da Replica no Primary

    Edite o pg_hba.conf para permitir autenticação da Replica via endereço IP.

    sudo -u postgres nano /etc/postgresql/15/main/pg_hba.conf

    O que você deve ver: Linha adicionada: host replication replicator 192.168.56.11/32 md5

  5. Criar usuário de replicação

    Crie o usuário 'replicator' com permissão de replicação.

    sudo -u postgres psql -c "CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'senhaforte';"

    O que você deve ver: CREATE ROLE

  6. Reiniciar o PostgreSQL no Primary

    Aplique as alterações de configuração.

    sudo systemctl restart postgresql

    O que você deve ver: Serviço reiniciado sem erros.

  7. Instalar pgBackRest no Primary

    pgBackRest faz backups consistentes e é recomendado pela comunidade.

    sudo apt install pgbackrest -y

    O que você deve ver: pgBackRest instalado.

  8. Configurar pgBackRest para backup local

    Edite o arquivo de configuração para definir o repositório de backup.

    sudo nano /etc/pgbackrest/pgbackrest.conf

    O que você deve ver: Arquivo com seção [demo] e diretório de backup definido.

  9. Realizar backup inicial com pgBackRest

    Garante ponto consistente para a réplica.

    sudo -u postgres pgbackrest --stanza=demo --log-level-console=info backup

    O que você deve ver: Backup concluído sem erros.

  10. Parar PostgreSQL na Replica

    Necessário para restaurar o backup inicial.

    sudo systemctl stop postgresql

    O que você deve ver: PostgreSQL parado.

  11. Restaurar backup na Replica

    Copia o backup do Primary para a Replica e restaura usando pgBackRest.

    sudo -u postgres pgbackrest --stanza=demo --delta restore

    O que você deve ver: Restaurado sem erros.

  12. Configurar recovery.conf na Replica

    Define que a Replica deve seguir o Primary via streaming replication.

    sudo nano /var/lib/postgresql/15/main/postgresql.auto.conf

    O que você deve ver: primary_conninfo com user=replicator, password e host do Primary.

  13. Iniciar PostgreSQL na Replica

    Replica deve iniciar em modo standby.

    sudo systemctl start postgresql

    O que você deve ver: Serviço iniciado sem erros.

Como saber que funcionou

TesteComandoCritério
Verificar status da replicação no Primarysudo -u postgres psql -c "SELECT client_addr, state FROM pg_stat_replication;"Replica aparece com state=streaming.
Criar tabela no Primary e verificar na Replicasudo -u postgres psql -c "CREATE TABLE test_replica(id int);"Tabela aparece na Replica após alguns segundos.
Rodar backup incremental com pgBackRestsudo -u postgres pgbackrest --stanza=demo --type=incr backupBackup incremental concluído sem erro.
Verificar logs de restauração na Replicasudo tail -20 /var/log/postgresql/postgresql-15-main.logMensagens de recuperação e conexão com Primary.

Troubleshooting

SintomaCausa provávelCorreção
Replica não aparece em pg_stat_replicationConfiguração de pg_hba.conf ou primary_conninfo incorretaRevise IP, usuário e senha em ambos os arquivos.
Erro de autenticação na ReplicaSenha do usuário replicator incorretaAltere a senha e atualize em primary_conninfo.
Backup pgBackRest falha com permissãoPermissões do diretório de backupAjuste permissões para usuário postgres.
Replica não inicia após restoreprimary_conninfo ausente ou erradoEdite o arquivo de configuração e reinicie o serviço.
Streaming replication desconectaFirewall bloqueando porta 5432Libere a porta TCP 5432 entre as VMs.

Segurança e hardening

  • Use senhas fortes para o usuário de replicação
  • Restrinja o acesso ao diretório de backup ao usuário postgres
  • Permita acesso de replicação apenas pelo IP da Replica
  • Habilite autenticação md5 no pg_hba.conf
  • Considere criptografia de disco para o diretório de backup

Checklist final

Referências

  1. PostgreSQL 15 Documentation - Streaming Replication · PostgreSQL Global Development Group (postgresql.org)
  2. pgBackRest User Guide · pgBackRest (pgbackrest.org)
  3. PostgreSQL 15 Documentation - pg_hba.conf · PostgreSQL Global Development Group (postgresql.org)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
3 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.