Slide 1

Slide 1 text

Do backup ao standby Como salvar o dia, o seu emprego e até a empresa…

Slide 2

Slide 2 text

Socorro Chamem um DBA!

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Talk is cheap Show me the code!

Slide 5

Slide 5 text

Instalação

Slide 6

Slide 6 text

Instalação

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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'

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

CURTIU? SEGUE A GENTE!