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

Avatar for Fábio Telles Rodriguez

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