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

Do Backup ao Standby

Do Backup ao Standby

Como salvar o dia, o emprego e a empresa!

- Instalação do PostgreSQL na nuvem, do zero.
- Criação de um backup com backup frio
- Configuração de archives
- Backup com pg_basebackup
- Criação de um standby com pg_basebackup

Fábio Telles Rodriguez

June 12, 2023
Tweet

More Decks by Fábio Telles Rodriguez

Other Decks in Technology

Transcript

  1. Do backup ao standby Como salvar o dia, o seu

    emprego e até a empresa…
  2. AGENDA Do backup ao standby Instalação do PostgreSQL Carga de

    dados Backup frio Archives Backup quente Standby
  3. Instalação Na linha de comando: 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 - apt update apt install postgresql ncurses-term unzip
  4. Carga de dados wget https://ftp.postgresql.org/pub/projects/pgFoundry/dbsamples/pagila/pagila/pagila-0.10.1.zip wget https://ftp.postgresql.org/pub/projects/pgFoundry/dbsamples/usda/usda-r18-1.0/usda-r18-1.0.tar.gz wget https://ftp.postgresql.org/pub/projects/pgFoundry/dbsamples/iso-3166/iso-3166-1.0/iso-3166-1.0.tar.gz unzip

    pagila-0.10.1.zip tar -xzvf iso-3166-1.0.tar.gz tar -xzvf usda-r18-1.0.tar.gz createdb pagila createdb usda createdb iso createdb teste createdb pgbench psql -f iso-3166/iso-3166.sql iso psql -f pagila-0.10.1/pagila-schema.sql pagila psql -f pagila-0.10.1/pagila-data.sql pagila psql -f usda-r18-1.0/usda.sql usda pgbench -i -s 1000 pgbench
  5. Backup frio • O serviço deve ser desligado durante toda

    a cópia • Cópia de todos arquivos dentro de $PGDATA ◦ $PGDATA = Diretório de instalação do cluster • Cópia de todos tablespaces se existirem • Em distribuiçõers Linux Debian e derivados (Ubuntu, Mint, etc), copiar arquivos de configuração em /etc/postgresql/$version/$cluster_name ◦ $version = major version do PostgreSQL ◦ $cluster_name = nome do cluster (‘main’ por padrão) • Após término da cópia o serviço é ligado normalmente • Restore não depende de archives • Não permite o Point In Time Recovery (PITR)
  6. Backup frio • Baixar o serviço (como root) systemctl stop

    postgresql • Copiar os dados com tar tar czvf backup.tar.gz /var/lib/postgresql/15/main/* • Copiar arquivos de configuração com tar tar czvf pg_conf.tar.gz /etc/postgresql/15/main/* • Subir o serviço (como root) systemctl start postgresql
  7. Backup frio (restore) • Copiar arquivos do backup scp pg01:/var/lib/postgresql/*.tar.gz

    . tar -xzvf /var/lib/postgresql/pgconf.tar.gz tar -xzvf /var/lib/postgresql/backup.tar.gz • Subir serviço do PostgreSQL systemctl start postgresql
  8. Archives wal_level = replica archive_mode = on archive_command = 'cp

    %p /mnt/archives/15/main/%f' restore_command = 'cp /mnt/archives/15/main/%f %p'
  9. Archives • Forçando o arquivamento agora: SELECT pg_swicth_wal(); • Verificando

    o funcionamento: postgres=# \x Expanded display is on. postgres=# SELECT * FROM pg_stat_archiver ; -[ RECORD 1 ]------+------------------------------ archived_count | 0 last_archived_wal | last_archived_time | failed_count | 0 last_failed_wal | last_failed_time | stats_reset | 2022-10-24 14:06:56.530887+00
  10. Backup quente c/ pg_basebackup • Aumentar o parâmetro max_wal_senders para

    comportar o backup (quando necessário) ALTER SYSTEM SET max_wal_senders TO 12; • Criar uma role de replicação CREATE ROLE backup REPLICATION LOGIN; • Permitir conexão remota no pg_hba.conf para esta role a partir do servidor que for realizar o backup host replication backup pg-01/32 scram-sha-256 host replication backup pg-02/32 scram-sha-256
  11. Backup quente c/ pg_basebackup • Criar um cluster (se não

    for utilizar o padrão) pg_createcluster 14 main • Baixar o serviço do PostgreSQL systemctl stop postgresql • Remover arquivos de dados padrão rm -Rf /var/lib/postgresql/14/main/* • Rodar o pg_basebackup pg_basebackup -P -c fast -h pg-01 -U backup -D /var/lib/p… • Subir o serviço systemctl start postgresql
  12. Standby c/ pg_basebackup • Criar um slot de replicação (no

    master) SELECT pg_create_physical_replication_slot ( 'standby_slot'); • Rodar o pg_basebackup pg_basebackup -P -R -c fast -h pg-01 -U backup -S standby_slot -D /var/lib/p… • Criar o arquivo .signal touch $PGDATA/standby.signal
  13. Promover o standby a master • pg_ctlcluster 14 main promote

    (No Debian) • pg_ctl promote (Demais situações)
  14. Outros tópicos sobre backup • Point In Time Recovery •

    Backup lógico com pg_dump / pg_dumpall • Outras ferramentas de backup • Estratégias de backup