博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安装配置PgBouncer for PostgreSQL
阅读量:6515 次
发布时间:2019-06-24

本文共 3800 字,大约阅读时间需要 12 分钟。

PgBouncer连接池来自于PostgreSQL社区,它可以为多个数据库管理连接池,并且这些数据库可以位于不同的PostgreSQL后端。PgBouncer会为每一种数据库用户与数据库的组合建立一个池。一个被池化的连接只能被来自于同一个用户和数据库的另一个连接请求重用。

客户端应用不需要做软件修改,但是要连接到连接池的主机和端口而不是PostgreSQL的主机和端口。PgBouncer会创建新的数据库连接或者重用一个已有的连接。当客户端断开连接时,该连接会被返回给连接池以备重用。

1、安装pgbounce

PgBounce的安装有两种方式,源代码安装和安装rpm二进制软件包。这里使用rpm软件安装,如下:

[root@hdp06 ~]# yum -y install pgbouncer [root@hdp06 ~]# rpm -ql pgbouncer/etc/logrotate.d/pgbouncer/etc/pgbouncer/etc/pgbouncer/mkauth.py/etc/pgbouncer/mkauth.pyc/etc/pgbouncer/mkauth.pyo/etc/pgbouncer/pgbouncer.ini/etc/sysconfig/pgbouncer/usr/bin/pgbouncer/usr/lib/systemd/system/pgbouncer.service/usr/lib/tmpfiles.d/pgbouncer.conf/usr/share/doc/pgbouncer/usr/share/doc/pgbouncer/NEWS.rst/usr/share/doc/pgbouncer/README.rst/usr/share/doc/pgbouncer/pgbouncer.ini/usr/share/doc/pgbouncer/userlist.txt/usr/share/licenses/pgbouncer-1.9.0/usr/share/licenses/pgbouncer-1.9.0/COPYRIGHT/usr/share/man/man1/pgbouncer.1.gz/usr/share/man/man5/pgbouncer.5.gz/var/run/pgbouncer

2、配置pgbounce

编辑配置文件,修改以下内容:

[databases]kkdb= host=192.168.120.149 port=5432 user=kkuser password=redhatpostgres= host=192.168.120.149 port=5432 user=postgres password=redhat[pgbouncer]logfile = /var/log/pgbouncer/pgbouncer.logpidfile = /var/run/pgbouncer/pgbouncer.pidlisten_addr = *listen_port = 6432auth_type = md5auth_file = /etc/pgbouncer/userlist.txtadmin_users = postgres,kkuserpool_mode = sessionserver_reset_query = DISCARD ALLignore_startup_parameters = extra_float_digitsmax_client_conn = 1000default_pool_size = 200

上面的认证模式md5,所以指定认证文件的路径,并加入以下内容:

[root@hdp06 pgbouncer]# vi userlist.txt "postgres" "md5fe4b5cfa57349c59d9b18d6920de5f59""kkuser" "md5ad9501a851743f17648b943395f791e0"

其中的md5值,可以在数据库中通过md5将密码进行编码,如下:

postgres=# SELECT 'md5'||md5('redhat'||'postgres');

安装配置PgBouncer for PostgreSQL

如果安装的是rpm二进制软件包,则使用下面的方法:

[root@hdp06 ~]# cd /etc/pgbouncer[root@hdp06 pgbouncer]# ./mkauth.py userlist.txt "host=192.168.120.149 port=5432 dbname=kkdb user=kkuser password=redhat"[root@hdp06 pgbouncer]# chown pgbouncer:pgbouncer userlist.txt--或者直接查询数据库postgres=# select usename, passwd from pg_shadow order by 1;

安装配置PgBouncer for PostgreSQL

3、启动pgbouncer

如果通过源代码安装,只能使用非root用户启动。

[root@hdp06 pgbouncer]# systemctl enable pgbouncer[root@hdp06 pgbouncer]# systemctl start pgbouncer[root@hdp06 pgbouncer]# systemctl status pgbouncer● pgbouncer.service - A lightweight connection pooler for PostgreSQL   Loaded: loaded (/usr/lib/systemd/system/pgbouncer.service; enabled; vendor preset: disabled)   Active: active (running) since Thu 2018-12-13 17:13:07 CST; 5s ago  Process: 21134 ExecStart=/usr/bin/pgbouncer -d -q ${BOUNCERCONF} (code=exited, status=0/SUCCESS) Main PID: 21136 (pgbouncer)   CGroup: /system.slice/pgbouncer.service           └─21136 /usr/bin/pgbouncer -d -q /etc/pgbouncer/pgbouncer.iniDec 13 17:13:07 hdp06 systemd[1]: Starting A lightweight connection pooler for PostgreSQL...Dec 13 17:13:07 hdp06 systemd[1]: PID file /var/run/pgbouncer/pgbouncer.pid not readable (yet?) after start.Dec 13 17:13:07 hdp06 systemd[1]: Started A lightweight connection pooler for PostgreSQL.[root@hdp06 pgbouncer]# netstat -antpl|grep 6432tcp        0      0 0.0.0.0:6432            0.0.0.0:*               LISTEN      21136/pgbouncer     tcp6       0      0 :::6432                 :::*                    LISTEN      21136/pgbouncer

4、测试pgbouncer

[postgres@pg07 ~]$ psql -Upostgres -dpostgres -p6432 -h192.168.120.104Password for user postgres: psql (10.6)Type "help" for help.postgres=# \l

安装配置PgBouncer for PostgreSQL

5、管理PgBouncer

PgBouncer有一个管理控制台,可以登录到pgbouncer虚拟数据库来访问它。该控制台接受类SQL命令,这些命令允许用户监控、重新配置和管理PgBouncer。

[postgres@pg07 ~]$ psql -Upostgres -dpgbouncer -p6432 -h192.168.120.104Password for user postgres: psql (10.6, server 1.9.0/bouncer)Type "help" for help.pgbouncer=# show clients;pgbouncer=# show servers;

安装配置PgBouncer for PostgreSQL

如果变更了pgbouncer配置文件,不用重启,直接reload下就ok。

pgbouncer=# reload;

更多pgbouncer管理,请参考官方文档。

转载地址:http://evafo.baihongyu.com/

你可能感兴趣的文章
Redis--发布订阅模式
查看>>
mysql 计算两坐标间的距离
查看>>
oracle审计详解
查看>>
Android事件流程详解
查看>>
转在Linux下安装rar fou linux
查看>>
PHP设计模式之策略模式
查看>>
03httpd-2.2基础配置
查看>>
Exchange 2013 五个接收连接器功能与解释
查看>>
微信小程序开发过程中的通常遇到的问题一
查看>>
Mac tips - 打开【键盘重复按键】功能
查看>>
服务器运维经验汇总
查看>>
RMI(远程方法调用)介绍
查看>>
Linux系统的环境变量 PATH
查看>>
java actor模型和消息传递实现分析
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
HttpClient总是无限卡死
查看>>
图解 5 种 Join 连接及实战案例!(inner/ left/ right/ full/ cro
查看>>
过滤三剑客之grep专题
查看>>
redhat6.5手动配置网络
查看>>
find高级用法
查看>>