我试图让pgbouncer在我的独立postgresql服务器上运行,但是当我尝试使用pgbouncer端口连接到数据库时,我收到超时错误。
Postgresql:9.1.8
pgBouncer:1.4.2
操作系统:Ubuntu 12.04.2 LTS(GNU / Linux 3.8.4-x86_64-linode31 x86_64)这是我的conf文件:
[databases]
postgres = host=127.0.0.1 port=5432 dbname=postgres
mydb = host=127.0.0.1 port=5432 dbname=mydb
[pgbouncer]
logfile = /home/username/pg_log/pgbouncer.log
pidfile = /tmp/pgbouncer.pid
listen_addr = xxx.xxx.xxx.xxx
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
stats_users = stats, root
user = postgres
pool_mode = session
server_reset_query = DISCARD ALL
max_client_conn = 1000
default_pool_size = 20
log_connections = 1
log_disconnections = 1
log_pooler_errors = 1
我试图像这样测试连接:
psql -p 6432 -U postgres mydb
这是我的日志文件:
28396 LOG listening on xxx.xxx.xxx.xxx:6432
28396 LOG listening on unix:/var/run/postgresql/.s.PGSQL.6432
28396 LOG process up: pgbouncer 1.4.2, libevent 2.0.16-stable (epoll), adns: evdns2
28864 LOG C-0x23f7890: mydb/postgres@unix:6432 login attempt: db=mydb user=postgres
28864 LOG C-0x23f7890: mydb/postgres@unix:6432 closing because: client unexpected eof (age=0)
28864 LOG C-0x23f7890: mydb/postgres@unix:6432 login attempt: db=mydb user=postgres
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 new connection to server
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 closing because: connect failed (age=0)
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 new connection to server
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 closing because: connect failed (age=0)
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 new connection to server
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 closing because: connect failed (age=0)
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 new connection to server
28864 LOG S-0x2415240: mydb/postgres@127.0.0.1:5432 closing because: connect failed (age=0)
28864 LOG Stats: 0 req/s, in 0 b/s, out 0 b/s,query 0 us
28864 LOG C-0x23f7890: mydb/postgres@unix:6432 closing because: client_login_timeout (server down) (age=60)
28864 WARNING C-0x23f7890: mydb/postgres@unix:6432 Pooler Error: client_login_timeout (server down)
28864 LOG Stats: 0 req/s, in 0 b/s, out 0 b/s,query 0 us
28864 LOG Stats: 0 req/s, in 0 b/s, out 0 b/s,query 0 us
我需要更改其他内容以使pgbouncer正常工作吗?
答案 0 :(得分:1)
看起来您正在尝试使用Unix套接字进行连接。根据您的Postgres安装,套接字可能是在/ tmp而不是/ var / run / postgres中创建的。我遇到了同样的问题,它一直是discussed here。
尝试将pgbouncer.ini配置更改为:
unix_socket_dir = /tmp
您还可以尝试通过添加-h连接到localhost,如下所示:
psql -p 6432 -h localhost -U postgres mydb
希望这有帮助!
答案 1 :(得分:1)
更改
listen_addresses = 'private_ip'
到
listen_addresses = '*'
在postgresql.conf文件中。
答案 2 :(得分:0)
对我来说,问题似乎是当我在配置文件的 [databases] 部分定义数据库时;我无法使用“host=127.0.0.1”或“host=localhost”,但我必须使用实际的ip,“host=192.168.0.1”。这可能是由于 postgresql pg_hba.conf 文件配置错误造成的,但我找不到使其与本地 ip 一起工作的方法。