Thank you for reading this post, don't forget to subscribe!
Barman (backup and recovery manager) — внутренняя разработка компании 2ndQuadrant, предоставляющей услуги на базе PostgreSQL. Предназначен для физического бэкапа PostgreSQL (логический не поддерживает), архивирования WAL и быстрого восстановления после сбоев. Поддерживаются удаленный бэкап и восстановление нескольких серверов, функции point-in-time-recovery (PITR), управление WAL. Для копирования и подачи команд на удаленный узел используется SSH, синхронизация и бэкап при помощи rsync позволяет сократить трафик. Также Barman интегрируется со стандартными утилитами bzip2, gzip, tar и подобными. В принципе, можно использовать любую программу сжатия и архивирования, интеграция не займет много времени. Реализованы различные сервисные и диагностические функции, позволяющие контролировать состояние сервисов и регулировать полосу пропускания. Поддерживаются Pre/Post-скрипты.
Barman написан на Python, управление политиками резервного копирования производится при помощи понятного INI-файла barman.conf, который может находиться в /etc или домашнем каталоге пользователя. В поставке идет готовый шаблон с подробными комментариями внутри. Работает только на *nix-системах. Для установки в RHEL, CentOS и Scientific Linux следует подключить EPEL — репозиторий, в котором содержатся дополнительные пакеты
sudo yum update
sudo yum install barman
В PostgreSQL создайте пользователя barman с правом суперпользователя для операций резервного копирования и пользователя streaming_barman с правом репликации для операций потоковой передачи.
Или, подключившись к psql, мы можем создать его следующим образом:
Мы редактируем файл pg_hba.conf, чтобы пользователь мог подключиться к базе данных.
1 2 3 4 5 6 7 |
local all all trust host all all 0.0.0.0/0 trust host all barman 0.0.0.0/0 trust host replication streaming_barman 0.0.0.0/0 trust local all barman trust local replication streaming_barman trust |
Служба PostgreSQL требует перезагрузки, чтобы изменения в файле pg_hba.conf вступили в силу. Подключившись к psql, мы можем сделать это с помощью следующей команды.
SELECT pg_reload_conf();
Мы можем проверить доступ созданного нами бармена с помощью команды ниже.
psql -c 'SELECT version()' -U barman -d postgres
Мы можем проверить доступ пользователя streaming_barman следующим образом.
psql -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1
1 2 |
archive_mode = on wal_level = replica |
Настройка barmen
У Barman есть 2 типа файлов конфигурации:
- barman.conf
- barman.d
/etc/barman/barman.conf -> Это глобальный файл конфигурации. Он содержит общие конфигурации резервного копирования, такие как файл журнала, пользователя резервного копирования, каталог резервного копирования.
Отредактируйте файл barman.conf следующим образом:
cat /etc/barman.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[barman] active = true barman_user = barman barman_home = /var/lib/barman configuration_files_directory = /etc/barman.d log_file = /var/log/barman/barman.log log_level = INFO compression = gzip retention_policy = REDUNDANCY 3 immediate_checkpoint = true last_backup_maximum_age = 4 DAYS minimum_redundancy = 1 |
cat /etc/barman.d/pg.conf
1 2 3 4 5 6 7 8 9 |
[pg] description = "Postgres DB" conninfo = host=192.168.1.171 user=barman dbname=postgres backup_method = postgres archiver = off streaming_conninfo = host=192.168.1.171 user=streaming_barman dbname=postgres streaming_archiver = on slot_name = pg |
/etc/barman.d -> Файлы конфигурации сервера по умолчанию расположены в каталоге /etc/barman.d. В этом каталоге доступны файлы конфигурации шаблона для методов резервного копирования (потоковая передача и rsync).
Вы можете создать файл конфигурации для каждого кластера PostgreSQL, для которого вы хотите создать резервную копию с помощью Barman, используя эти файлы шаблонов.
Прежде всего, скопируйте файл streaming-server.conf-template из файлов шаблонов с именем каталога данных кластера и отредактируйте файл.
Создаем слоты командой barmen:
Проверить настройки потоковой передачи файлов WAL;
su - barman
barman switch-wal --force --archive 12_data
Проверить конфигурацию barmen
Вы можете проверить конфигурацию Barman следующим образом.
barmen - создать резервную копию
Вы можете создать первую резервную копию с помощью следующей команды.
barman backup 12_data --wait
Вы можете проверить общее состояние сервера следующим образом.
barman status 12_data
barmen Восстановление
Восстановить кластер PostgreSQL с помощью Barman
Вы можете восстановить резервную копию в каталог на сервере, доступном пользователю бармена, следующим образом.
barman recover <Server_Name> <Backup_ID> <Recovery_Directory>
barmen точка восстановления времени
Для восстановления на момент времени мы можем указать время с помощью параметра target-time.
barman recover 12_data 20200113T230114 /db/pg_data/12/data --target-time "Mon Jan 13 23:20:29 +03 2020"
======================================================================================================
postgres-2 192.168.1.172