Gerenciando Backups com
Barman
William Ivanski
2ndQuadrant
PGBR 2017
Sumário
Parte 1: Quem sou eu?
Parte 2: PostgreSQL Backups
Parte 3: Business Continuity
Parte 4: Como o Barman funciona
Parte 5: Como usar o Barman
2ndQuadrant / PGBR 2017 2
Parte 1: Quem sou eu?
2ndQuadrant / PGBR 2017 3
William Ivanski
Cien sta da computação pela UFPR
Há mais de 10 anos com programação e BD
Professor voluntário de programação e bancos de
dados para iniciantes
Microso  MVP
Criador da biblioteca Spartacus
Desenvolvedor da ferramenta OmniDB
PostgreSQL engineer - 2ndQuadrant
2ndQuadrant / PGBR 2017 4
... "Barman"?
2ndQuadrant / PGBR 2017 5
2ndQuadrant / PGBR 2017 6
www.pgbarman.org
2ndQuadrant / PGBR 2017 7
2ndQuadrant / PGBR 2017 8
... "Backup"?
2ndQuadrant / PGBR 2017 9
Parte 2: PostgreSQL Backups
Logical Backups
Physical Backups
2ndQuadrant / PGBR 2017 10
P.I.T.R.
Point
In
Time
Recovery
2ndQuadrant / PGBR 2017 11
2ndQuadrant / PGBR 2017 12
PostgreSQL Backups
WAL files
Contêm uma lista de transações que
acontecem num banco de dados no decorrer do
tempo
PITR
Primeiro o PostgreSQL restaura o data
directory (também chamado de base backup)
Em seguida, restaura o conteúdo dos WAL files
até o ponto desejado
2ndQuadrant / PGBR 2017 13
Mas... pra quê os backups
servem?
2ndQuadrant / PGBR 2017 14
Parte 3: Business Con nuity
Con nuidade de Negócio
2ndQuadrant / PGBR 2017 15
Business Con nuity
A vidade realizada por uma organização para
garantir que funções crí cas para o negócio
estejam disponíveis para clientes, fornecedores,
reguladores e outras entidades que precisam ter
acesso a essas funções.
Business Con nuity:
High Availability (Alta Disponibilidade)
Disaster Recovery (Recuperação de Desastres)
2ndQuadrant / PGBR 2017 16
Desastre
Falhas de sistema
Falhas de hardware
Erros não intencionais
Desastres naturais
2ndQuadrant / PGBR 2017 17
Business Con nuity
RPO (Recovery Point Objec ve)
Período máximo em que pode haver perda de
dados devido a um desastre
Basicamente é o quanto de dados podem ser
perdidos (medido em tempo)
RTO (Recovery Time Objec ve)
Período máximo em que o serviço pode car
indisponível na ocorrência de um desastre
2ndQuadrant / PGBR 2017 18
Business Con nuity
Basicamente, queremos:
RPO = 0, ou seja, zero data-loss
RTO = 0, ou seja, zero downtime (utopia)
Com Barman, conseguimos RPO = 0 e RTO muito
próximo de zero
A seguir entenderemos melhor sobre Barman
2ndQuadrant / PGBR 2017 19
Parte 4: Como o Barman
funciona
2ndQuadrant / PGBR 2017 20
Como o Barman funciona
O ideal é que o barman esteja em um servidor
dedicado
2ndQuadrant / PGBR 2017 21
Como o Barman funciona
Backups de múltiplos servidores PostgreSQL
2ndQuadrant / PGBR 2017 22
Como o Barman funciona
Conexão LIBPQ (streaming)
Introduzida somente a partir do Barman 2.0
Utiliza a conexão do PostgreSQL
Streaming Replication Protocol
Cópia é feita via pg_basebackup / pg_receivexlog
Mais fácil de con gurar
2ndQuadrant / PGBR 2017 23
Como o Barman funciona
Conexão SSH (rsync)
Modo tradicional de conexão
Cópia é feita via rsync / archive_command
Permite:
Backups incrementais / paralelos
Network compression / deduplication
Mais difícil de con gurar
2ndQuadrant / PGBR 2017 24
Como o Barman funciona
2ndQuadrant / PGBR 2017 25
Como o Barman funciona
2ndQuadrant / PGBR 2017 26
Como o Barman funciona
2ndQuadrant / PGBR 2017 27
Como o Barman funciona
Backups base são uma cópia do data dir
WAL files são mantidos até o próximo backup
base, o que possibilita PITR
2ndQuadrant / PGBR 2017 28
Como o Barman funciona
2ndQuadrant / PGBR 2017 29
Como o Barman funciona
Backups base podem ser incrementais entre si
2ndQuadrant / PGBR 2017 30
Como o Barman funciona
Polí ca de Retenção: retention_policy
REDUNDANCY X
Ex: REDUNDANCY 4
RECOVERY WINDOW OF X <period>
period = DAY / WEEK / MONTH
Ex: RECOVERY WINDOW OF 4 WEEKS
2ndQuadrant / PGBR 2017 31
Como o Barman funciona
Barman pode ser integrado com monitoramento
2ndQuadrant / PGBR 2017 32
Como o Barman funciona
Algumas outras funcionalidades
Limitar largura de banda
Backup a partir de um standby
Compressão de WAL les
Synchronous WAL streaming (RPO = 0)
Hook scripts
Parallel jobs
2ndQuadrant / PGBR 2017 33
Parte 5: Como usar o Barman
2ndQuadrant / PGBR 2017 34
Como usar o Barman
Master - 192.168.0.100 - PostgreSQL 9.6
Backup - 192.168.0.200 - Barman 2.1
2ndQuadrant / PGBR 2017 35
Master Server
PostgreSQL 9.6 já está instalado
Passo 1: Criar usuários para o Barman
create user barman
with password 'pbarman' superuser;
create user streaming_barman
with password 'psbarman' replication;
2ndQuadrant / PGBR 2017 36
Master Server
Passo 2: Alterar postgresql.conf
listen_addresses = '*'
wal_level = logical
max_wal_senders = 2
max_replication_slots = 2
Passo 3: Alterar pg_hba.conf
host all barman 192.168.0.200/32 md5
host replication streaming_barman 192.168.0.200/32 md5
2ndQuadrant / PGBR 2017 37
Master Server
Passo 4: Reiniciar PostgreSQL
sudo systemctl restart postgresql
2ndQuadrant / PGBR 2017 38
Backup Server
Passo 1: Instalar Barman
sudo apt install barman
Passo 2: Criar ~/.pgpass para usuário barman
sudo -iu barman
cat > ~/.pgpass <<EOF
192.168.0.100:5432:postgres:barman:pbarman
192.168.0.100:5432:replication:streaming_barman:psbarman
EOF
chmod 600 ~/.pgpass
2ndQuadrant / PGBR 2017 39
Backup Server
Passo 3: Criar arquivo de con guração para
Servidor Master: /etc/barman.d/master.conf
[master]
description = "My Master Server"
conninfo = host=192.168.0.100 user=barman
dbname=postgres
streaming_conninfo = host=192.168.0.100
user=streaming_barman
backup_method = postgres
streaming_archiver = on
slot_name = barman
path_prefix = "/usr/lib/postgresql/9.6/bin/"
recovery_options = 'get-wal'
2ndQuadrant / PGBR 2017 40
Backup Server
-- Passo 4: Criar replication slot para Barman
barman receive-wal --create-slot master
-- Passo 5: Se necessário, gerar arquivos WAL
psql -h master -d postgres -c "select pg_switch_xlog()"
-- Passo 6: Receber alguns arquivos WAL
barman switch-xlog --force --archive master
2ndQuadrant / PGBR 2017 41
Comandos do Barman
$ barman list-server
master - My Master Server
$ barman check master
$ barman status master
$ barman show-server master
$ barman diagnose
2ndQuadrant / PGBR 2017 42
Comandos do Barman
$ barman backup master
$ barman list-backup master
master 20170830T085901 - Wed Aug 30 08:59:01 2017
- Size: 5.8 GiB - WAL Size: 16.0 MiB
barman show-backup master 20170830T085901
barman list-files master 20170830T085901
barman delete master 20170830T085901
2ndQuadrant / PGBR 2017 43
Restauração com Barman
No servidor onde for restaurar precisa instalar:
sudo apt install barman-cli
Restaurar último backup completo:
barman recover master latest --remote-ssh-command
"ssh postgres@newmaster" /var/lib/postgresql/9.6/main
2ndQuadrant / PGBR 2017 44
Restauração com Barman
PITR!!
barman recover master 20170830T085901
--target-time "2017-08-31 15:39:40 UTC"
--remote-ssh-command "ssh postgres@newmaster"
/var/lib/postgresql/9.6/main
Outras opções:
--target-xid TARGET_XID
--target-name TARGET_NAME
pg_create_restore_point
2ndQuadrant / PGBR 2017 45
Perguntas?
Muito obrigado!!
william.ivanski@2ndquadrant.com

Barman PGBR2017