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…

    View full-size slide

  2. Socorro
    Chamem um DBA!

    View full-size slide

  3. AGENDA
    Do backup ao standby
    Instalação do PostgreSQL
    Carga de dados
    Backup frio
    Archives
    Backup quente
    Standby

    View full-size slide

  4. Talk is cheap
    Show me the code!

    View full-size slide

  5. Instalação

    View full-size slide

  6. Instalação

    View full-size slide

  7. 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

    View full-size slide

  8. 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

    View full-size slide

  9. 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)

    View full-size slide

  10. 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

    View full-size slide

  11. 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

    View full-size slide

  12. 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'

    View full-size slide

  13. 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

    View full-size slide

  14. 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

    View full-size slide

  15. 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

    View full-size slide

  16. 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

    View full-size slide

  17. Promover o standby a master
    ● pg_ctlcluster 14 main promote (No Debian)
    ● pg_ctl promote (Demais situações)

    View full-size slide

  18. 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

    View full-size slide

  19. CURTIU?
    SEGUE A GENTE!

    View full-size slide