我在5432上运行Postgres数据库,在6432上运行pgBouncer。
我的所有脚本都指向6432,但我们有一个指向5432的大型遗留代码库,我们希望用户也能使用pgBouncer。
我们想出的最好的方法是在4432上运行Postgres,在5432和6432上运行pgBouncer。不幸的是,我们只能找到让pbBouncer监听一个端口的方法。
是否可以让pgBouncer监听两个端口?
我们还尝试使用IPTables透明地将6432转发到5432,但不起作用:
sudo iptables -t nat -I PREROUTING -p tcp --dport 6432 -j REDIRECT --to-ports 5432
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 6432 -j REDIRECT --to-ports 5432仍然会出现此错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.6432"?有什么建议(除了“更新遗留代码库”,这是作为最后的手段保留)?
发布于 2020-03-02 00:38:18
您的iptables在我看来还可以,但不要忘了启用ip转发:
sysctl net.ipv4.ip_forward=1发布于 2018-05-21 07:40:01
你不能让pgbouncer监听多个端口。因此,使用OS工具转发端口是正确的方法。我不是iptables方面的专家,所以我不能评论你的尝试。
另一种方法是在一台主机上运行多个pgbouncer实例。
发布于 2021-09-24 16:02:06
这篇文章很老了,但值得一提的是,在我们的商店里,我们通过创建重定向端口的软链接解决了这个问题。所以在你的例子中:
/tmp/.s.PGSQL.6432 --> /tmp/.s.PGSQL.5432https://stackoverflow.com/questions/49542106
复制相似问题