Я пытаюсь настроить Barman ( pgbarman ) для работы вместе с базой данных PostgreSQL на одном и том же хосте, я не хочу устанавливать barman на отдельный хост, но могу ' не найти никакой документации о таком подходе. Все ресурсы в Интернете посвящены настройке бармена на отдельном сервере, а затем настройке SSH-соединения для архивирования и резервного копирования WAL, нужно ли мне настраивать ssh-соединение также, когда я нахожусь на одном хосте, когда 'ДА' , тогда как настроить Barman и базу данных?!
для достижения того, что я хочу (частично), я сделал следующее:
$ cat /etc/barman.d/ 10-main.conf [10 пг] description = "Главный сервер PostgreSQL" conninfo = host = 127.0.0.1 user = barman dbname = postgres port = 5432 backup_method = postgres архиватор = включен
Мне пришлось добавить команду chown, потому что она не распознает файлы (WAL), если они принадлежат другому пользователю (кроме barman)
wal_level = реплика archive_mode = on archive_command = 'test! -f / var / lib / barman / 10pg / incoming /% f && cp% p / var / lib / barman / 10pg / incoming /% f && sudo chown barman / var / lib / barman / 10pg / incoming /% f '
локальный одноранговый узел
postgres ALL = (ALL) NOPASSWD: ALL
Как видите, описанный выше метод не выглядит нормальным.
Следующая настройка позволит Барману выполнять резервное копирование базы данных с помощью pg_basebackup и получать журналы WAL с помощью pg_receivewal, где Barman установлен на той же ОС, что и база данных PostgreSQL (без SSH / RSYNC) :
1-й. подготовить файл глобальной / общей конфигурации (бармен).
2-й. подготовьте файл конфигурации сервера (бармен):
$ cat /etc/barman.d/{servername}.conf
[streaming] # the name of the server configuration file, which would be later refer to as {barman-server-config-name}
# Human readable description
description = "Main PostgreSQL 10 Database (Streaming-Only)"
# #########################################################
# PostgreSQL connection string (mandatory)
# #########################################################
conninfo = host=localhost user=barman dbname=postgres
# #########################################################
# PostgreSQL streaming connection string
# #########################################################
# To be used by pg_basebackup for backup and pg_receivexlog for WAL streaming
streaming_conninfo = host=localhost user=barman
# #########################################################
# Backup settings (via pg_basebackup)
# #########################################################
backup_method = postgres
# #########################################################
# WAL streaming settings (via pg_receivexlog)
# #########################################################
streaming_archiver = on
slot_name = barman
#streaming_archiver_name = barman_receive_wal
#streaming_archiver_batch_size = 50
# PATH setting for this server
#path_prefix = "/usr/pgsql-12/bin"
backup_method = postgres
incoming_wals_directory = /var/lib/barman/streaming/incoming
3-й. подготовьте файл ~ / .pgpass:
$ cat ~/.pgpass
#hostname:port:database:username:password
localhost:5432:replication:barman:barman
localhost:5432:postgres:barman:barman
$ chmod 0600 ~/.pgpass
4-й. подготовить базу данных PostgreSQL:
создать пользователя базы данных:
$ psql –c “create user barman superuser replication password 'barman';”
Отредактировать файл конфигурации PostgreSQL /etc/postgresql/{major-realease}/{cluster-name}/postgresql.conf:
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /var/lib/barman/{barman-server-config-name}/incoming/%f && cp %p /var/lib/barman/ {barman-server-config-name} /incoming/%f'
archive_timeout = 3600
max_wal_senders = 2
max_replication_slots = 10
Создать слот и запустить Процесс получения-сообщения для Бармена:
Запустить процесс получения-сообщения. Процесс использует протокол потоковой передачи для получения файлов WAL с сервера PostgreSQL.
$ barman cron
$ barman receive-wal –create-slot {barman-server-config-name}
$ barman receive-wal {barman-server-config-name}
Проверка статуса сервера и статуса репликации:
$ barman check {barman-server-config-name}
$ barman status {barman-server-config-name}
$ barman replication-status {barman-server-config-name}