Резервное копирование базы Postgres — не удается выполнить команды SQL в отправителе WAL для физической репликации

#linux #postgresql #pgpool

Вопрос:

Всем доброе утро, у меня есть настройка HA, состоящая из 2 серверов Postgres с pgpool поверх них. Настройка работает нормально. Я пытаюсь реплицировать данные этого кластера на третий сервер Postgres(за пределами текущего кластера), используя для этого команду pg_basebackup. Когда я предоставил pg_basebackup основной IP-адрес Postgres, он работал нормально, и данные были реплицированы на третий сервер.

Теперь я пытаюсь выполнить то же самое действие, но на этот раз вместо предоставления IP-адреса для главной Postgres я предоставляю IP-адрес pgpool команде pg_basebackup и получил следующие ошибки.

В журналах главного сервера Postgres

 LOG:  could not receive data from client: Connection reset by peer
ERROR:  cannot execute SQL commands in WAL sender for physical replication
 

На сервере Postgres, с которого выполняется pg_basebackup

 pg_basebackup: could not send replication command "SHOW data_directory_mode": FATAL:  Backend throw an error message
DETAIL:  Exiting current session because of an error from backend
HINT:  BACKEND Error: "cannot execute SQL commands in WAL sender for physical replication"
server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
 

Примечание: Pgpool настроен таким образом, что все запросы на чтение/запись направляются только на главный сервер postgres, и я использую потоковую репликацию с pg_basebackup.