使用PgBouncer链接池

1.pgbouncer 的介绍

  pgbouncer是一个针对PostgreSQL数据库的轻量级链接池,任何目标应用均可以把 pgbouncer 看成一个 PostgreSQL/Greenplum 服务器来链接,而后pgbouncer 会处理与服务器链接,或者是重用已存在的链接。pgbouncer 的目标是下降由于新建到 PostgreSQL/Greenplum 的链接而致使的性能损失。php

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

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

2.pgbouncer配置

  因为pgbouncer是基于libevent开发的;因此须要先安装libevent的开发包:libevent下载地址github

cd libevent-2.0.21-stable
./configure --prefix=/opt/libevent
make
make install

pgbouncer下载地址sql

cd pgbouncer-1.5.4
./configure --prefix=/opt/pgbouncer --with-libevent=/opt/libevent
make 
make install
chown -R gpadmin:gpadmin /opt/pgbouncer

  配置环境变量:本实验数据库对象是greenplum;数据库

export LD_LIBRARY_PATH=/opt/libevent/lib:$LD_LIBRARY_PATH
export PGB_HOME=/opt/pgbouncer
export PATH=$PGB_HOME/bin:$PATH

  建立一个PgBouncer配置文件pgbouncer.ini服务器

vi /opt/pgbouncer/config/pgbouncer.ini
[databases]
db_lottu = host=localhost port=5432 dbname=lottu user=lottu

[pgbouncer]
listen_port = 6432
listen_addr = *
auth_type = md5
auth_file = /opt/pgbouncer/userlist.txt
logfile = /opt/pgbouncer/pgbouncer.log
pidfile = /opt/pgbouncer/pgbouncer.pid
admin_users = lottu
pool_mode = Transaction
max_client_conn = 100

  建立一个认证文件。该文件的名称必须匹配pgbouncer.ini文件中的 auth_file参数;这里是/opt/pgbouncer/userlist.txtsession

vi /opt/pgbouncer/userlist.txt
"lottu" "××××××"

  配置服务器重置查询;当一个链接被返回给链接池时,它必须被重置为刚建立的链接的状态。在把一个链接返回给链接池以前,PgBouncer经过发出一个查询来实现这种重置。PostgreSQL 8.3及其后的版本有一个用于此种目的的DISCARD ALL命令,它标准PgBouncer发布的默认重置查询。Greenplum数据库不支持DISCARD ALL。须要配置参数server_reset_query性能

server_reset_query = RESET ALL; SET SESSION AUTHORIZATION DEFAULT;

  Greenplum数据库 4.7.0及其后版本包括的PgBouncer修改版中的默认服务器重置查询。尽管它与PgBouncer原生的不一样,它也能确保链接池对于Greenplum数据库用户透明而且客户端应用不须要为了使用链接池而被修改。配置好了; RELOAD命令重载它spa

pgbouncer=# RELOAD;

 3.启动pgbouncer

pgbouncer -d /opt/pgbouncer/config/pgbouncer.ini

  链接pgbouncercode

psql -p 6432 db_lottu lottu
Password for user lottu: 
psql (8.2.15)
Type "help" for help.

4.管理pgbouncer

  pgbouncer有一个管理控制台,能够登陆到pgbouncer虚拟数据库来访问它。该控制台接受类SQL命令,这些命令容许用户监控、从新配置和管理pgbouncer。

  用 psql登陆到pgbouncer虚拟数据库

psql -p 6432 pgbouncer lottu

  要看可用的命令,可运行show help命令

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

  若是用户对pgbouncer.ini文件作了修改,用户能够用 RELOAD命令重载它:

pgbouncer=# RELOAD;
相关文章
相关标签/搜索