程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

PostgreSQL轻量级连接池 PgBouncer

balukai 2025-05-21 12:05:53 文章精选 5 ℃

PostgreSQL轻量级连接池 PgBouncer

1.PgBouncer 简介

pgbouncer是一个针对PostgreSQL数据库的轻量级连接池,任何目标应用都可以把 pgbouncer 当作一个 PostgreSQL/Greenplum 服务器来连接,然后pgbouncer 会处理与服务器连接,或者是重用已存在的连接。pgbouncer 的目标是降低因为新建到 PostgreSQL/Greenplum 的连接而导致的性能损失。

pgbouncer目前支持三种连接池模型。分别是session, transaction和statment三个级别:

  • session. 会话级链接。只有与当客户端的会话结束时,pgbouncer才会收回已分配的链接
  • transaction 事务级连接。当事务完成后,pgbouncer会回收已分配的链接。也就是说客户端只是在事务中才能独占此链接,非事务的对数据库的请求是没有独享的链接的。
  • statement 语句级链接。任何对数据库的请求完成后,pgbouncer都会回收链接。此种模式下,客户端不能使用事务,否则会造成数据的不一致。

2.安装

在 Debian 系统上安装直接使用 apt-get 就可以安装,命令如下:

apt-get install pgbouncer

安装完成后,可以通过 dpkg 命令列出安装的文件及位置:

dpkg -L pgbouncer
/.
/etc
/etc/default
/etc/default/pgbouncer
/etc/init.d
/etc/init.d/pgbouncer
/etc/pgbouncer
/etc/pgbouncer/pgbouncer.ini
/etc/pgbouncer/userlist.txt
/usr
/usr/sbin
/usr/sbin/pgbouncer
/usr/share
/usr/share/doc
/usr/share/doc/pgbouncer
/usr/share/doc/pgbouncer/NEWS.Debian.gz
/usr/share/doc/pgbouncer/NEWS.rst.gz
/usr/share/doc/pgbouncer/README.Debian
/usr/share/doc/pgbouncer/README.rst.gz
/usr/share/doc/pgbouncer/changelog.Debian.gz
/usr/share/doc/pgbouncer/copyright
/usr/share/doc/pgbouncer/examples
/usr/share/doc/pgbouncer/examples/pgbouncer.ini.gz
/usr/share/doc/pgbouncer/examples/userlist.txt
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/pgbouncer.1.gz
/usr/share/man/man5
/usr/share/man/man5/pgbouncer.5.gz
/usr/share/pgbouncer
/usr/share/pgbouncer/mkauth.py

在上面的文件中

可执行程序

/usr/sbin/pgbouncer

配置文件

/etc/pgbouncer/pgbouncer.ini

用户文件

/etc/pgbouncer/userlist.txt

服务启动

/etc/init.d/pgbouncer

3.配置

在配置文件
/etc/pgbouncer/pgbouncer.ini 中

3.1 数据库连接

[databases]
PgBouncer数据库名 = host=主机地址  port=端口号  user=数据库用户  password=*** dbname=数据库名

例如:

bcdindb = host=172.17.40.80  port=5432  user=postgres  password=*** dbname=dindb

3.2 pgbouncer

[pgbouncer]
logfile = /u01/logs/pgbouncer.log
pidfile = /u01/logs/pgbouncer.pid
listen_addr = *
listen_port = 7432
auth_type = plain
auth_file = /etc/pgbouncer/userlist.txt
admin_users = admin,pgb
pool_mode = session
ignore_startup_parameters = extra_float_digits
server_check_query = select 1
max_client_conn = 10000
default_pool_size = 20

3.3用户信息

用户信息需要配置
/etc/pgbouncer/userlist.txt 文件,文件内容:

"admin" "123456"
"pgb" "123456"

4.启动 PgBounce

执行如下命令启动:

su postgres -c "/usr/sbin/pgbouncer -d /etc/pgbouncer/pgbouncer.ini"

5.尝试连接

连接的用户:admin,pgb任意一个

密码:见userlist.txt

连接的数据库:PgBouncer数据库名

最近发表
标签列表