我知道这是一个重复的问题,但我没有找到任何解决方案
我想在 Debian 9 中为 PostgreSQL 9.6 设置主从复制。但从服务器无法连接主服务器。
xx.xxx.xxx.205 = master
xx.xxx.xxx.206 = slave
root@master:~# netstat -plntu |grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 6290/postgres
tcp6 0 0 :::5432 :::* LISTEN 6290/postgres
root@slave:~# netstat -plntu |grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 31961/postgres
tcp6 0 0 :::5432 :::* LISTEN 31961/postgres
我明白了错误优先当我尝试将 PostgreSQL 数据从 MASTER 复制到 SLAVE 时。
postgres@slave:~/9.6$ pg_basebackup -h xx.xxx.xxx.205 -D ~postgres/9.6/main/ -X stream -P
pg_basebackup: could not connect to server: could not connect to server: No route to host
Is the server running on host "xx.xxx.xxx.205" and accepting
TCP/IP connections on port 5432?
之后我检查了postgresql上的连接。
有不我的服务器中有firewalld和ufw。
我编辑了pg_hba.conf 和 postgresql.conf在两个服务器上都这样。
host all all xx.xxx.xxx.205/32 md5
host all all xx.xxx.xxx.206/32 md5
PostgreSQL 配置文件
listen_addresses = '*'
我可以从主机连接从机,它工作正常。
root@master:~# psql -h xx.xxx.xxx.206 -p 5432
Password:
但我无法从从机连接到主机。
root@slave:~# psql -h xx.xxx.xxx.205 -p 5432
psql: could not connect to server: No route to host
Is the server running on host "xx.xxx.xxx.205" and accepting
TCP/IP connections on port 5432?
请帮我..
答案1
最后我找到了解决方案,我的 Iptables 规则在 Master 和 Slave 上是不同的。
iptables -L INPUT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -L INPUT