我正在尝试使用以下步骤创建 Postgresql 9.1 热备用:
- 配置了2台虚拟Linux机器。Master的ip:10.10.10.1,Standby的ip:10.10.10.2。Ping测试通过。
- 在两者上恢复相同的数据库备份。
编辑了 master 上的 pg_hba。添加了以下行:
host replication postgres 10.10.10.2/32 md5
编辑了Master的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
我是不是遗漏了什么?
答案1
当内核中未启用 IPv6 但 IPv6 地址在某处公布时,就会发生这种情况。
有时同时指定localhost
( IPv4) 和(IPv6)。在这种情况下,您可以删除 IPv6 别名以避免此类错误。/etc/hosts
127.0.0.1
::1
统计信息收集器(PostgreSQL 启动的单独进程)使用硬编码名称localhost
,因此此问题会导致其无法启动并出现上述错误消息。但是,这不会阻止 PostgreSQL 本身启动。
如果*
碰巧包含有问题的 IPv6 地址,您可以通过选择性地解决问题listen_addresses
(无论如何这都是很好的做法):
listen_addresses=127.0.0.1,10.10.10.1 # 如果需要,添加其他接口
答案2
要禁用 IPv6 错误,您必须执行以下步骤。
将以下代码粘贴到此文件(/etc/sysctl.conf)中
net.ipv6.conf.all.disable_ipv6 = 1
在 postgresql.conf 文件中将监听地址更改为 0.0.0.0
listen_address ='0.0.0.0'
就这样,重新启动postgreSQL服务。