PgBouncer 使用方法

一、PgBouncer简介

PgBouncer是为PostgreSQL数据库提供的一个轻量级连接池工具。PostgreSQL数据库是基于进程的架构,应用每次连接到PG,PG都会创建一个新的进程来为应用服务,服务完成之后,关闭连接,进程被销毁。频繁地创建、销毁进程开销很大,耗费资源。PgBouncer 连接池把与数据库的连接进行缓存,应用请求到来时,分配一个空闲的连接使用,应用执行完成后,连接不会直接关闭,而是被放入连接池,等待下次被使用,这样降低了资源的消耗,提高了系统性能。

二、PgBouncer支持三种连接池模型

  1. session,会话级连接,在客户端连接的生命周期内,连接池分配一个连接给它,直到客户端断开连接,分配的连接才会回到连接池中。
  2. transaction,事务级连接,当客户端的每个事务结束时,数据库连接被释放到连接池中,再次执行一个事务时,需要再从连接池获取一个连接。
  3. statement,语句级连接,执行完一个SQL语句,数据库连接就会被释放到连接池中,再次执行一个SQL语句,需要再从连接池获取一个连接,这种模式意味着客户端强制autocommit模式。

三、安装PgBouncer

3.1 yum install 安装

yum install -y pgbouncer

3.2 源码编译安装

源码地址:

https://github.com/pgbouncer/pgbouncer

git clone https://github.com/pgbouncer/pgbouncer.git
cd pgbouncer
git submodule init
git submodule update
./autogen.sh
./configure ...
make
make install

四、PgBouncer使用方法

4.1 创建配置文件

useradd pg
mkdir /opt/pgbouncer
chown -R pg:pg /opt/pgbouncer
su – pg
cd /opt/pgbouncer

编辑配置文件:pgbouncer.ini

[databases]
* = host=127.0.0.1 port=5432

 [pgbouncer]
 listen_port = 6432
 listen_addr = *
 auth_type = md5
 auth_file = userlist.txt
 logfile = /opt/pgbouncer/pgbouncer.log
 pidfile = /opt/pgbouncer/pgbouncer.pid
 admin_users = admin
 min_pool_size=10

编辑用户密码配置文件:userlist.txt

"admin" "md5b9d11b3be25f5a1a7dc8ca04cd310b28"

用户密码可以通过连接到PostgreSQL数据库,执行以下SQL获取:
select usename,passwd from pg_shadow;

配置文件所在目录的属主需要与pgbouncer进程的启动用户保持一致。

4.2 启动PgBouncer

pgbouncer -d pgbouncer.ini

pgbouncer必须使用非root用户启动,pgbouncer.ini 配置文件所在目录属主需要与pgbouncer启动用户一致。

4.3 连接PgBouncer

psql -p 6432 -U admin pg

4.4 管理PgBouncer

psql -p 6432 -U admin pgbouncer
指定一个特殊的库名pgbouncer,使用SHOW HELP; 命令即可查看各种管理命令,如下:

$ psql -p 6432 -U admin pgbouncer
Password for user admin:
psql (11.5, server 1.13.0/bouncer)
Type "help" for help.

pgbouncer=# show help;
NOTICE:  Console usage
DETAIL:
        SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
        SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
        SHOW DNS_HOSTS|DNS_ZONES
        SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
        SET key = arg
        RELOAD
        PAUSE [<db>]
        RESUME [<db>]
        DISABLE <db>
        ENABLE <db>
        RECONNECT [<db>]
        KILL <db>
        SUSPEND
        SHUTDOWN

4.5 重载配置文件

如果修改了 pgbouncer.ini 文件,使用reload命令重载配置文件。
pgbouncer=# RELOAD;

五、更多资料

更多的参数介绍,更详细的使用方法,参考官方文档:

https://www.pgbouncer.org/

发表评论