Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[PgConfBR2025] Onde e como está o seu BACKUP?

[PgConfBR2025] Onde e como está o seu BACKUP?

Pergunta simples que vemos em todos os lugares e se bem respondida, salva empresas. Vamos explorar como implementar uma estratégia de backup do ZERO?

Se tem uma situação difícil é precisar recuperar um banco de dados com seu backup, mas onde está seu backup? Vemos inúmeras situações onde empresas procuram não mostrar sua fraqueza, pois não investem em uma eficaz estratégia de backup. Preferem arriscar deixarem de existir ao pensar na segurança de seus dados. Nessa palestra, teremos a oportunidade de explorar como podemos, de forma simples, criar uma estratégia de backup do zero e assegurar que seu negócio se torne mais resiliente em meio ao caos do universo. Vamos pensar nos componentes, no como criaremos esse modelo e como testá-lo, pois nada adianta ter um backup se não consegues realizar um restore.

A palestra se estrutura em entendermos a necessidade de se pensar em uma estratégia de backup e sensibilizar quem não o faz.
Seguimos com um planejamento sobre capacidade e componentes.
Como faremos na prática usando a ferramenta pgbackrest.
Finalizando com insights de monitoramento de seus backups.

Avatar for Emanuel Araujo Carneiro

Emanuel Araujo Carneiro

September 16, 2025

Other Decks in Technology

Transcript

  1. … e se perdesse seu banco de produção e sua

    réplica, você recuperaria todo ou parcial seu ambiente?
  2. … você saberia dizer para diretoria ou para os investidores,

    em quanto tempo sua operação voltaria?
  3. … se o datacenter que você hospeda o seu banco

    de dados quebrasse, em quanto tempo sua operação voltaria?
  4. RTO (Recovery Time Objective) Quanto tempo o sistema pode ficar

    indisponível até a restauração total do serviço?
  5. A escolha de uma ferramenta de backup que possa ser

    usada para criar uma réplica a partir do backup se torna uma vantagem
  6. archive_mode = 'on' archive_command = '/bin/true' wal_level = 'logical' max_wal_senders

    = '10' hot_standby = 'on' max_logical_replication_workers = '10' max_replication_slots = '10'
  7. Ambiente Linux apenas transferência de arquivos via conexão ssh Possibilidade

    de processos em paralelo backup full, incr, diff Flexibilidade com repositórios backup a partir de uma réplica compressão
  8. Ambiente Linux apenas Curva de aprendizado pode ser mais alta

    Em ambientes maiores pode sentir overhead Requer monitoramento quanto ao uso de spool async Não possuir um GUI nativa
  9. [global] # Repo repo1-path=/var/lib/pgbackrest repo1-retention-full=2 # Common compress-type=lz4 start-fast=y archive-async=y

    process-max=4 spool-path=/var/spool/pgbackrest log-level-console=info log-level-file=detail log-path=/var/log/pgbackrest # Stanzas [poseidon] pg1-host=10.0.0.3 pg1-path=/var/lib/postgresql/16/main pg1-user=postgres pg1-port=5432
  10. No servidor repositório e servidor PostgreSQL Realizar trocas de chaves

    ssh, crie as chaves individualmente e transfira a chave pública entre os servidores ssh-keygen -t rsa
  11. No servidor PostgreSQL primário alter system set archive_command = 'pgbackrest

    --stanza=poseidon archive-push %p'; select pg_reload_conf();
  12. Instalação do PostgreSQL Instalação do pgbackrest Realizar troca de chaves

    entre os servidores Realizar ajuste de pg_hba.conf Sincronizar arquivos .conf (/etc/postgresql) Dica: usar postgresql.auto.conf Ajustes no sistema operacional (sysctl.conf) Criar slot de replicação no primário
  13. pg_hba.conf host all all [ip primário] trust host all all

    [ip secundário] trust host replication all [ip primário] trust host replication all [ip secundário] trust
  14. Criar réplica no novo servidor pgbackrest --stanza=poseidon --type=standby --delta \

    --recovery-option='primary_conninfo=host=10.0.0.3 user=postgres' \ --recovery-option='recovery_target_timeline=latest' \ --recovery-option='primary_slot_name=poseidon_repl' \ restore
  15. Reduzir RTO Existência de réplica para standby Atuar em procedimentos

    de automatização de failover switchover programado procedimentos escritos e 'scriptáveis'
  16. Reduzir RPO Existência de réplica para standby Existência de repositório

    externo (cloud ou linux server) Backup com PITR pg_switch_wal() Reduzir delay em wal_write_delay
  17. Reduzir RPO Monitoramento efetivo no async spool para evitar estouro

    do limite spool-max-size WALs antigos podem ser descartados ('dropped'). Isso impede PITR até aquele ponto.
  18. Reduzir RPO Novos WALs continuam sendo gerados pelo PostgreSQL, mas

    não há espaço suficiente na fila temporária para armazená-los. então **os WALs mais antigos no spool são descartados** ('dropped')
  19. Reduzir RPO Aumentar spool-max-size Reenviar wals faltantes para o repositório

    com o archive-push Caso não tenha mais os wals, refazer o backup imediatamente
  20. time pgbackrest --stanza=poseidon --log-level-console=info --type=full backup 2025-09-04 03:34:35.192 P00 INFO:

    repo option not specified, defaulting to repo1 time pgbackrest --stanza=poseidon --log-level-console=info --repo=2 --type=full backup
  21. Nesse caso temos agora que rodar os backups serializados? Não,

    eles podem executar simultaneamente poseidon-backup-1.lock poseidon-backup-2.lock
  22. O pgbackest se encarrega de saber que é primário e

    réplica e resolve isso de forma transparente