Назад | Перейти на главную страницу

«Не удалось создать сокет IPv6» ошибка режима ожидания postgresql

Я пытаюсь создать горячий резерв Postgresql 9.1, выполнив следующие действия:

  1. Настроил 2 виртуальные машины linux. Главный IP: 10.10.10.1, Резервный IP: 10.10.10.2. Пинг-тест пройден.
  2. Восстановил одну и ту же резервную копию БД на обоих.
  3. Отредактировал pg_hba на master. Добавлена ​​строка:

    host   replication   postgres   10.10.10.2/32   md5
    
  4. Отредактированный Мастер postgresql.conf:

    listen_address = '*'
    wal_level = hot_standby
    max_wal_senders = 3
    
  5. Создал recovery.conf в режиме ожидания:

    standby_mode = 'on'
    primary_conninfo = 'host=10.10.10.1'
    

После добавления recovery.conf мне не удалось запустить резервный сервер. В журнале запуска появляется ошибка:

> could not create IPv6 socket

Я что-то пропустил?

Это происходит, когда IPv6 не включен в ядре, но адреса IPv6 где-то объявлены.

Иногда localhost в /etc/hosts обозначает оба 127.0.0.1 (IPv4) и ::1 (IPv6). В этом случае вы можете удалить псевдоним IPv6, чтобы избежать такой ошибки.

Сборщик статистики (отдельный процесс, запускаемый PostgreSQL) использует жестко заданное имя localhost, поэтому из-за этой проблемы он не запустится с указанным сообщением об ошибке. Однако это не должно препятствовать запуску самого PostgreSQL.

Если * содержит проблемные адреса IPv6, вы можете решить проблему, выбрав listen_addresses (что в любом случае является хорошей практикой):

listen_addresses = 127.0.0.1,10.10.10.1 # при необходимости добавить другие интерфейсы

Чтобы отключить ошибку IPv6, вам необходимо выполнить следующие действия.

  1. вставьте следующий код в этот файл (/etc/sysctl.conf)

    net.ipv6.conf.all.disable_ipv6 = 1

  2. В файле postgresql.conf измените адрес прослушивания на 0.0.0.0

    listen_address = '0.0.0.0'

Вот и все и перезапустите службу postgreSQL.