Entrar ou criar conta

Laboratório em bancada

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.

PostgreSQL do zero à produção
Ligado ao treinamento PostgreSQL do zero à produção
Duração estimada
120 min
Passos
13
Validações
4
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
  2. pgBackRest User Guide
  3. PostgreSQL 15 Documentation - pg_hba.conf