【发布时间】:2021-08-14 19:53:32
【问题描述】:
我是第一次尝试配置 pgbouncer。
我的 postgres 数据库作为容器运行(端口为 5011)
我的操作系统是 debian 10。
我使用 apt-install 来安装 pgbouncer:
sudo apt-get install pgbouncer
然后可以看到 pgbouncer 状态正常:
# sudo systemctl status pgbouncer
● pgbouncer.service - LSB: start pgbouncer
Loaded: loaded (/etc/init.d/pgbouncer; generated)
Active: active (running) since Wed 2021-05-26 16:15:49 IDT; 11min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 2 (limit: 4915)
Memory: 2.4M
CGroup: /system.slice/pgbouncer.service
└─4392 /usr/sbin/pgbouncer -d /etc/pgbouncer/pgbouncer.ini
我的数据库名称是 mydb,postgres 容器在 5011 端口上运行,所以我这样配置 /etc/pgbouncer/pgbouncer.ini:
[databases]
octopus-bouncer = host=10.1.1.1 port=5011 user=dbauser dbname=mydb
;; Configuration section
[pgbouncer]
auth_file = userlist.txt
; IP address or * which means all IPs
listen_addr = *
listen_port = 6432
; any, trust, plain, crypt, md5, cert, hba, pam
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
; total number of clients that can connect
max_client_conn = 100
; default pool size. 20 is good number when transaction pooling
; is in use, in session pooling it needs to be the number of
; max clients you want to handle at any moment
default_pool_size = 20
我终于把我的用户放到/etc/pgbouncer/userlist.txt:
"dbauser" "mypassword"
然后我重新启动了 pgbouncer - 但失败了:
# sudo systemctl restart pgbouncer
Job for pgbouncer.service failed because the control process exited with error code.
See "systemctl status pgbouncer.service" and "journalctl -xe" for details.
状态只显示这个:
# sudo systemctl status pgbouncer
● pgbouncer.service - LSB: start pgbouncer
Loaded: loaded (/etc/init.d/pgbouncer; generated)
Active: failed (Result: exit-code) since Wed 2021-05-26 17:04:00 IDT; 2min 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 28111 ExecStart=/etc/init.d/pgbouncer start (code=exited, status=1/FAILURE)
May 26 17:04:00 Octopus systemd[1]: Starting LSB: start pgbouncer...
May 26 17:04:00 Octopus pgbouncer[28111]: Starting PgBouncer: pgbouncer failed!
May 26 17:04:00 Octopus systemd[1]: pgbouncer.service: Control process exited, code=exited, status=1/FAILURE
May 26 17:04:00 Octopus systemd[1]: pgbouncer.service: Failed with result 'exit-code'.
May 26 17:04:00 Octopus systemd[1]: Failed to start LSB: start pgbouncer.
我错过了什么吗? 如何调试问题?
【问题讨论】:
-
我设法通过从 postgres 用户而不是 root 启动它来启动 pgbouncer,并使用以下命令:/usr/sbin/pgbouncer -d -R -v /etc/pgbouncer/pgbouncer.ini . pgbouncer 日志显示 pgbouncer 已启动并运行:2021-05-27 16:38:50.475 19862 LOG process up: pgbouncer 1.9.0, libevent 2.1.8-stable (epoll), adns: c-ares 1.14.0, tls :OpenSSL 1.1.1d 2019 年 9 月 10 日。但是,当尝试使用 psql 从容器登录到 psql 到 pgbouncer 端口 6432 时出现错误:psql:错误:没有这样的数据库:mydb
标签: pgbouncer