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
连接成功