次の手順を使用して、Postgresql9.1ホットスタンバイを作成しようとしています。
マスターの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
私は何かを逃しましたか?
これは、カーネルでIPv6が有効になっていないが、IPv6アドレスがどこかにアドバタイズされている場合に発生します。
/etc/hosts
のlocalhost
は、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サービスを再起動します。