PgBouncer可以在数据库和前端应用间建立连接,由PgBouncer去处理和后端数据库的连接关系。 对客户端的连接进行限制,预防过多或者恶意的连接请求。 主要工作还是每一个数据节点对数据的存取,pgbouncer只是提供给客户端数据节点的分配和链接以及限制客户端连接的数量。整体上实现了对数据的负载均衡。能够缓存和PostgreSQL的连接,当有连接请求进来的时候,直接分配空闲进程,而不需要PostgreSQL fork出新进程来建立连接,以节省创建新进程,创建连接的资源消耗。 能够有效提高连接的利用率,避免过多的无效连接,导致数据库消耗资源过大,CPU占用过高。
1.安装配置过程
–解压pgbouncer包
su - pg10 cd resource/ tar -zxf pgbouncer-1.14.0.tar.gz
–创建pgbouncer目录
mkdir ~/pgbouncer
–装libevent-devel
su - root yum install -y libevent-devel (或者su - root rpm -ivh libevent-devel-2.0.21-4.el7.x86_64.rpm)
–编译安装pgbouncer
su - pg10 cd resource/pgbouncer-1.14.0/ ./configure --prefix=/home/pg10/pgbouncer
–编译
make -j4
–编译安装
make install -j4
–切换到安装目录
cd ~/pgbouncer/
–编辑pgbouncer.ini文件
egrep -v '^\;| ^$' /home/pg10/pgbouncer/share/doc/pgbouncer/pgbouncer.ini > pgbouncer.ini
vi pgbouncer.ini
[databases] appdb = host=主机ip dbname=appdb port=5666 [pgbouncer] logfile = /home/pg10/pgbouncer/pgbouncer.log pidfile = /home/pg10/pgbouncer/pgbouncer.pid listen_addr = * listen_port = 5766 auth_type = trust auth_file = /home/pg10/pgbouncer/userlist.txt
cd /home/pg10/pgbouncer/ cp share/doc/pgbouncer/userlist.txt . vi userlist.txt
–清空,并添加
"appuser" "1qaz@WSX"
–启动pgbouncer
su - pg10
cd
vi .bashrc
将PATH变成
export PATH=${PGHOME}/bin:/home/pg10/pgbouncer/bin:${PATH}
–使环境变量生效
. .bashrc pgbouncer --help pgbouncer -d -v /home/pg10/pgbouncer/pgbouncer.ini
vi $PGDATA/pg_hba.conf
加一行
host appdb appuser 192.168.2.0/24 trust
2.验证
pg_ctl reload psql -U appuser -d appdb -p 5766
连接失败的话------
su - root ps -ef | grep pgbouncer kill -9 21429 pgbouncer -d -v /home/pg10/pgbouncer/pgbouncer.ini
–测试连接成功
psql -U appuser -d appdb -p 5766 连接成功
