Конфигурация бармена, 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-commoncontainspg_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

Возможны две проблемы

  1. Различные версии PostgreSQL установлены на одном и том же сервере, например, pg12 и pg13, и поэтому его папка bin уже доступна. В этом нужно удалить то, что на самом деле вам не нужно.

  2. Другая проблема может заключаться в том, что вы неправильно настроили параметр 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
Другие вопросы по тегам