Histórico da Página
Informações | ||
---|---|---|
| ||
Para utilizar a ferramenta Barman, você precisa ter um ambiente em PostgreSQL. Para ambientes de produção, utilize o PostgreSQL em Linux. |
Idealmente, não precisaríamos realizar backups/cópias de segurança. Porém, é notório o risco que se corre caso não haja um backup, especialmente de ambientes de produção; podem ocorrer falhas humanas, falhas de hardware, falhas de sistema, desastres naturais, corrompimento de dados, dentre outros fatores que podem comprometer o ambiente físico ou lógico onde se armazenam dados essenciais para o funcionamento adequado de um ambiente.
No contexto de um banco de dados, é importante que o backup seja realizado com frequência; com isto em mente, a ferramenta Barman (Backup and Recovery Manager) foi desenvolvida para apoiar na recuperação de desastres de servidores PostgreSQL, sendo escrita em Python e de código aberto. Para mais detalhes, consulte a documentação da ferramenta.
O uso do Barman tem como propósito principal diminuir o MTTR (Mean Time To Repair) - Tempo médio para reparo entre falhas - e manter o banco de dados com backup íntegro, mesmo em caso de falha total no servidor principal do banco de dados.
Nesta página são demonstrados os passos com duas máquinas diferentes, uma contendo a instalação padrão do PostgreSQL para seu ambiente e outra contendo a configuração do Barman. Note que nos comandos de exemplo, estas são referidas como vm-postgresql01 e vm-barman, respectivamente.
No servidor PostgreSQL
Altere o arquivo /etc/hosts e inclua o servidor do Barman:
Bloco de código |
---|
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.4.149 vm-barman.xxxx.xxxx.oraclevcn.com vm-barman
10.0.4.178 vm-postgresql01.xxxx.xxxx.oraclevcn.com vm-postgresql01 |
Após isto, é necessária a criação dos usuários barman e streaming_barman.
Bloco de código | ||
---|---|---|
| ||
createuser -s -P barman
createuser -s -P streaming_barman |
No arquivo de configuração do PostgreSQL, altere os seguintes parâmetros:
Bloco de código | ||
---|---|---|
| ||
vim /var/lib/pgsql/12/data/postgresql.conf |
Original | Após alteração |
---|---|
# listen_addresses = 'localhost' | listen_addresses = '*' |
# max_wal_senders = 10 | max_wal_senders = 2 |
# max_replication_slots = 10 | max_replication_slots = 2 |
Também é necessária a alteração no arquivo de controle dos métodos de autenticação (pg_hba.conf).
Bloco de código | ||
---|---|---|
| ||
vim /var/lib/pgsql/12/data/pg_hba.conf |
Original | Após alteração |
---|---|
# IPv4 local connections: | # IPv4 local connections: |
host all all 127.0.0.1/32 ident | host all all 0.0.0.0/0 md5 |
host replication streaming_barman 10.0.4.149/32 trust |
Nota | ||
---|---|---|
| ||
Verifique com a área de segurança de rede qual o melhor formato de configuração para melhor segurança do ambiente, de acordo com a política de cada empresa. |
Após as alterações nos arquivos supracitados, reinicie o serviço do banco de dados.
Bloco de código |
---|
systemctl restart postgresql-12.service |
No servidor Barman
Altere o arquivo /etc/hosts e inclua o servidor vmpostgresql:
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
10.0.0.166 vmbarman.xxxx.xxxx.oraclevcn.com vmbarman |
10.0.0.194 vmpostgresql.xxxx.xxxx.oraclevcn.com vmpostgresql |
Será necessário também instalar o PostgreSQL nesta máquina.
Bloco de código | ||
---|---|---|
| ||
sudo dnf install -y barman |
Crie o arquivo de senhas (/var/lib/barman), e de a permissão necessária:
Bloco de código | ||
---|---|---|
| ||
vim .pgpass
|
Bloco de código |
---|
vm-postgresql01:5432:postgres:barman:Barman@123
vm-postgresql01:5432:postgres:streaming_barman:Barman@123
## Permissão no arquivo
chmod 0600 .pgpass |
Configurar barman.conf:
Bloco de código |
---|
vim /etc/barman.conf
compression = gzip |
Realize a cópia do arquivo: streaming-server.conf-template, para acesso ao servidor do postgresql:
Bloco de código | ||
---|---|---|
| ||
cp streaming-server.conf-template vm-postgresql.conf |
Altere o arquivo que foi copiado:
Bloco de código |
---|
[vm-postgresql]
conninfo = host=vm-postgresql user=barman dbname=postgres
streaming_conninfo = host=vm-postgresql user=streaming_barman
streaming_backup_name = barman_streaming_backup
create_slot = auto
streaming_archiver_name = barman_receive_wal
streaming_archiver_batch_size = 50
path_prefix = "/usr/pgsql-12/bin" |
Para realizar um backup no Servidor Barman, utilize o seguinte comando:
Bloco de código |
---|
barman backup vmpostgresql |
Ao realizar o comando, o resultado será apresentado na tela:
WARNING: No backup strategy set for server 'vmpostgresql' (using default 'exclusive_backup'). WARNING: The default backup strategy will change to 'concurrent_backup' in the future. Explicitly set 'backup_options' to silence this warning. Starting backup using rsync-exclusive method for server vmpostgresql in /var/lib/barman/vmpostgresql/base/20220304T120404 Backup start at LSN: 0/C000028 (00000001000000000000000C, 00000028) Starting backup copy via rsync/SSH for 20220304T120404 Copy done (time: 1 second) Asking PostgreSQL server to finalize the backup. Backup size: 24.5 MiB Backup end at LSN: 0/C000100 (00000001000000000000000C, 00000100) Backup completed (start time: 2022-03-04 12:04:05.098223, elapsed time: 2 seconds) Processing xlog segments from file archival for vmpostgresql 00000001000000000000000B 00000001000000000000000C 00000001000000000000000C.00000028.backup |
Para listar os backups realizados, execute o seguinte comando:
Bloco de código |
---|
barman list-backup vmpostgresql
|
O resultado será similar a isto:
vmpostgresql 20220304T120404 - Fri Mar 4 12:04:06 2022 - Size: 24.5 MiB - WAL Size: 96.5 KiB vmpostgresql 20220303T210358 - Thu Mar 3 21:04:00 2022 - Size: 24.5 MiB - WAL Size: 32.2 KiB vmpostgresql 20220303T210310 - Thu Mar 3 21:03:11 2022 - Size: 24.5 MiB - WAL Size: 32.2 KiB vmpostgresql 20220303T210206 - Thu Mar 3 21:02:07 2022 - Size: 24.5 MiB - WAL Size: 32.2 KiB |
É possível listar os detalhes de um backup específico com o comando a seguir:
Bloco de código | ||
---|---|---|
| ||
barman show-backup vm-postgresql01 20220607T193746
|
Mais detalhes sobre o backup feito:
Backup 20220607T193746: Server Name : vm-postgresql01 System Id : 7106500250670266068 Status : DONE PostgreSQL Version : 120011 PGDATA directory : /var/lib/pgsql/12/data Base backup information: Disk usage : 23.6 MiB (23.6 MiB with WALs) Incremental size : 23.6 MiB (-0.00%) Timeline : 1 Begin WAL : 000000010000000000000009 End WAL : 000000010000000000000009 WAL number : 1 WAL compression ratio: 99.90% Begin time : 2022-06-07 19:37:46.705044+00:00 End time : 2022-06-07 19:37:47.295758+00:00 Copy time : less than one second Estimated throughput : 40.6 MiB/s Begin Offset : 40 End Offset : 0 Begin LSN : 0/9000028 End LSN : 0/A000000 WAL information: No of files : 0 Disk usage : 0 B Last available : 000000010000000000000009 Catalog information: Retention Policy : not enforced Previous Backup : 20220607T193735 Next Backup : - (this is the latest base backup) |