“无法创建 IPv6 套接字”postgresql 待机错误

“无法创建 IPv6 套接字”postgresql 待机错误

我正在尝试使用以下步骤创建 Postgresql 9.1 热备用:

  1. 配置了2台虚拟Linux机器。Master的ip:10.10.10.1,Standby的ip:10.10.10.2。Ping测试通过。
  2. 在两者上恢复相同的数据库备份。
  3. 编辑了 master 上的 pg_hba。添加了以下行:

    host   replication   postgres   10.10.10.2/32   md5
    
  4. 编辑了Master的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

我是不是遗漏了什么?

答案1

当内核中未启用 IPv6 但 IPv6 地址在某处公布时,就会发生这种情况。

有时同时指定localhost( IPv4) 和(IPv6)。在这种情况下,您可以删除 IPv6 别名以避免此类错误。/etc/hosts127.0.0.1::1

统计信息收集器(PostgreSQL 启动的单独进程)使用硬编码名称localhost,因此此问题会导致其无法启动并出现上述错误消息。但是,这不会阻止 PostgreSQL 本身启动。

如果*碰巧包含有问题的 IPv6 地址,您可以通过选择性地解决问题listen_addresses(无论如何这都是很好的做法):

listen_addresses=127.0.0.1,10.10.10.1 # 如果需要,添加其他接口

答案2

要禁用 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服务。

相关内容