SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhas4nx
 
Lua em transmissões ao vivo
Lua em transmissões ao vivoLua em transmissões ao vivo
Lua em transmissões ao vivoLeandro Moreira
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkePaulo Fernandes
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros InteligentesThiago Finardi
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsNuno Paz
 
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVM
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVMFuncionamento e otimização da Garbage Collection na Oracle Hotspot JVM
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVMAdriano Bonat
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantPedro Fernandes Vieira
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMPLeandro Mendes
 
Visita al entorno 1 er ciclo
Visita al entorno 1 er cicloVisita al entorno 1 er ciclo
Visita al entorno 1 er cicloXXX XXX
 

Mais procurados (13)

Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinha
 
Lua em transmissões ao vivo
Lua em transmissões ao vivoLua em transmissões ao vivo
Lua em transmissões ao vivo
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
Cron Jobs - Linux
Cron Jobs - LinuxCron Jobs - Linux
Cron Jobs - Linux
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVM
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVMFuncionamento e otimização da Garbage Collection na Oracle Hotspot JVM
Funcionamento e otimização da Garbage Collection na Oracle Hotspot JVM
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrant
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMP
 
Visita al entorno 1 er ciclo
Visita al entorno 1 er cicloVisita al entorno 1 er ciclo
Visita al entorno 1 er ciclo
 
Caching
CachingCaching
Caching
 

Barman PGBR2017