Конфигурация бармена, pg_receivexlog не удалось
Могу ли я знать, когда я настраиваю Barman на сервере высокой доступности, нужно ли устанавливать Postgres на сервер barman?
Когда я делаю проверку бармена, мой вывод выглядит так:
PostgreSQL: OK
is_superuser: OK
PostgreSQL streaming: OK
wal_level: OK
replication slot: FAILED (slot 'barman' not initialised: is 'receive-wal' running?)
directories: OK
retention policy settings: OK
backup maximum age: FAILED (interval provided: 1 day, latest backup age: No available backups)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
pg_basebackup: OK
pg_basebackup compatible: OK
pg_basebackup supports tablespaces mapping: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
pg_receivexlog: FAILED
pg_receivexlog compatible: FAILED (PostgreSQL version: 9.4.17, pg_receivexlog version: None)
receive-wal running: FAILED (See the Barman log file for more details)
archiver errors: OK
Как я могу установить pg_receivexlog на сервер бармена?
Спасибо
Ева
3 ответа
Зависит от вашего распределения. Например, в дистрибутивах на основе Debian этоpg_receivexlog
часть клиента для конкретной версии postgresql-client-9.6
, postgresql-client-10
(``postgresql-client-commoncontains
pg_wrapper`, который пытается найти соответствующий двоичный файл). В вашем случае вам следует установить:
apt-get install postgresql-client-9.4
Бинарные файлы клиента должны быть установлены в выделенном каталоге, например:
/usr/lib/postgresql/9.4/bin
Тогда беги
barman cron
С последующим barman check
:
barman check psql-server
Если локальная версия старше сервера, на котором вы пытаетесь создать резервную копию, бармен $PATH
может потребоваться обновление:
pg_receivexlog compatible: FAILED (PostgreSQL version: 12.0, pg_receivexlog version: 11.5-3.pgdg90+1))
вы можете легко проверить, где бармен ищет двоичный файл:
$ barman show-server psql-server | grep pg_receivewal
pg_receivexlog_path: /usr/bin/pg_receivewal
У бармена есть параметр path_prefix
который может переопределить глобальную конфигурацию для каждого сервера:
path_prefix = /usr/lib/postgresql/10/bin
Возможны две проблемы
Различные версии PostgreSQL установлены на одном и том же сервере, например, pg12 и pg13, и поэтому его папка bin уже доступна. В этом нужно удалить то, что на самом деле вам не нужно.
Другая проблема может заключаться в том, что вы неправильно настроили параметр
path_prefix
на вашем "pg" сервере/etc/barman.d/pg.conf
.
Мудрая версия должна быть другой, иначе вы увидите "
pg_receivexlog compatible
"выпуск. пример:
path_prefix = "/usr/pgsql-nth/bin"
path_prefix = "/usr/pgsql-12/bin"
Я думаю, что в вашем случае произошла вторая проблема.
Отредактируйте postgresql.conf и настройте сервер базы данных PostgreSQL с этими параметрами
#postgresql.conf
max_wal_senders = 2
max_replication_slots = 2
wal_level = 'replica' or 'hot_standby'
Затем выполните в командной строке следующую команду:
createuser -P --replication streaming_barman
Это создает бармена потокового пользователя. Затем перейдите в pg_hba.conf и настройте IP-соединение пользователя и сервера бармена, как показано ниже
#pg_hba.conf
host replication streaming_barman X.X.X.X/32 trust
На сервере бармен запустите
barman cron