Инструкция по восстановлению БД с помощью Barman

1. Посмотрим список серверов:

$ barman list-server
10.18.69.88 - zakupki-001
10.18.69.89 - zakupki-002

2. Мы выбрали восстановление сервера 10.18.69.89, посмотрим список бэкапов для него:

$ barman list-backup 10.18.69.89
10.18.69.89 20160524T230816 - Tue May 24 23:08:23 2016 - Size: 6.0 GiB - WAL Size: 0 B
10.18.69.89 20160524T154826 - Tue May 24 15:48:33 2016 - Size: 6.0 GiB - WAL Size: 7.6 MiB
10.18.69.89 20160524T144811 - Tue May 24 14:48:18 2016 - Size: 6.0 GiB - WAL Size: 8.5 MiB
10.18.69.89 20160524T134839 - Tue May 24 13:48:46 2016 - Size: 6.0 GiB - WAL Size: 7.1 MiB
[skipped]
10.18.69.89 20160523T154010 - Mon May 23 15:40:17 2016 - Size: 6.0 GiB - WAL Size: 8.4 MiB
10.18.69.89 20160523T153545 - Mon May 23 15:39:38 2016 - Size: 6.0 GiB - WAL Size: 7.1 MiB

3. Определившись с датой бэкапа, выбираем его по ID, пусть будет 20160524T144811, посмотрим информацию о нём:

$ barman show-backup 10.18.69.89 20160524T144811
Backup 20160524T144811:
Server Name : 10.18.69.89
Status : DONE
PostgreSQL Version : 90214
PGDATA directory : /var/lib/pgsql/9.2/data

Base backup information:
Disk usage : 6.0 GiB (6.0 GiB with WALs)
Incremental size : 50.1 KiB (-100.00%)
Timeline : 1
Begin WAL : 0000000100000002000000E3
End WAL : 0000000100000002000000E3
WAL number : 1
WAL compression ratio: 75.54%
Begin time : 2016-05-24 14:48:11.749582+03:00
End time : 2016-05-24 14:48:18.293332+03:00
Begin Offset : 32
End Offset : 224
Begin XLOG : 2/E3000020
End XLOG : 2/E30000E0

WAL information:
No of files : 2
Disk usage : 8.5 MiB
WAL rate : 2.99/hour
Compression ratio : 73.48%
Last available : 0000000100000002000000E5

Catalog information:
Retention Policy : VALID
Previous Backup : 20160524T134839
Next Backup : 20160524T154826

4. Восстанавливаем бэкап во временную папку на удаленном сервере (10.18.69.89):

$ barman recover --target-time="2016-05-24 14:48:18" --remote-ssh-command="ssh Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript." 10.18.69.89 20160524T144811 /tmp/20160524T144811/
Starting remote restore for server 10.18.69.89 using backup 20160524T144811
Destination directory: /tmp/20160524T144811/
Doing PITR. Recovery target time: '2016-05-24 14:48:18'
Copying the base backup.
Copying required WAL segments.
Generating recovery.conf
Identify dangerous settings in destination directory.

IMPORTANT
These settings have been modified to prevent data losses

postgresql.conf line 192: archive_command = false

Your PostgreSQL server has been successfully prepared for recovery!

***

После восстановления BARMAN добавляет в postgresql.conf комментарий к параметру archive_command.

Если нужно, чтобы дальнейшние бэкапы создавались с восстановленной базы, данный параметр нужно раскомментировать.  

 

5. Если нам нужно стартануть с восстановленной базы, входим на сервер 10.18.69.89, делаем следующее:

Останавливаем postgres:

[root@host-001 ~]# service postgresql-9.2 stop
Stopping postgresql-9.2 service: [ OK ]

Стартуем:

[root@host-001 /]# su --login postgres --command="/usr/pgsql-9.2/bin/pg_ctl -D /tmp/20160524T144811 start"
server starting

Проверяем статус:

[root@host-001 /]# su --login postgres --command="/usr/pgsql-9.2/bin/pg_ctl -D /tmp/20160524T144811 status"
pg_ctl: server is running (PID: 59165)
/usr/pgsql-9.2/bin/postgres "-D" "/tmp/20160524T144811"