Ошибка ожидания postgresql "Не удалось создать сокет IPv6"
Я пытаюсь создать Postgresql 9.1 с горячим резервированием, используя следующие шаги:
- Настроил 2 виртуальных машины linux. IP-адрес мастера: 10.10.10.1, IP-адрес резервного устройства: 10.10.10.2. Пинг тест пройден.
- Восстановил одну и ту же резервную копию БД на обоих.
Отредактировал pg_hba на мастере. Добавлена строка:
host replication postgres 10.10.10.2/32 md5
Отредактировано сообщение Мастера postgresql.conf:
listen_address = '*' wal_level = hot_standby max_wal_senders = 3
Создан recovery.conf в режиме ожидания:
standby_mode = 'on' primary_conninfo = 'host=10.10.10.1'
После добавления recovery.conf мне не удается запустить резервный сервер. В журнале запуска я получаю сообщение об ошибке:
> could not create IPv6 socket
Я что-то пропустил?
2 ответа
Это происходит, когда 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, необходимо выполнить следующие шаги.
вставьте следующий код в этот файл (/etc/sysctl.conf)
net.ipv6.conf.all.disable_ipv6 = 1
В файле postgresql.conf измените адрес прослушивания на 0.0.0.0
listen_address = '0.0.0.0'
Вот и все и перезапустите сервис postgreSQL.