连接池PgBouncer部署与踩坑实践

安装

可以直接使用

  • yum install pgbouncer

安装(rpm管理的是1.14版本)

或者在http://www.pgbouncer.org/downloads/ 下载最新的tat.gz包

解压出来进入目录,通过

  • ./configure --prefix=/home/pgbouncer
  • make & make install

安装(官网最新为1.16版本)

依赖问题自行解决,这里不赘述。

建议通过yum安装,简单快捷,不用处理依赖问题。

通过yum安装成功后,会自动生成pgbouncer账户,为了后面的执行 需要进入 /etc/passwd 修改sbin/nologin 为 /bin/bash

服务部署位置建议:

  1. 如果只有单应用访问,建议PgBouncer部署在应用服务器上,减少应用服务器和pgbouncer之间的开销
  2. 如果有多应用访问,建议PgBouncer部署在数据库侧,减少pgbouncer和数据库之间的开销
  3. 也可以部署成多实例模式,针对读和写进行分别部署pgbouncer,因为pgbouncer本身只是数据库连接池,不具备负载均衡,或高可用,IP漂移等特性,需要结合其他成熟产品进行组合使用

Quick-start

1、创建或编辑/etc/pgbouncer/pgbouncer.ini文件,典型内容如下:

[databases]``themis = host=``127.0``.``0.1` `port=``5432` `dbname=themis``[pgbouncer]``logfile = 
/var/log/pgbouncer/pgbouncer.log``pidfile = /var/run/pgbouncer/pgbouncer.pid``listen_addr = *``listen_port = ``6688``auth_type = 
trust``auth_file = /etc/pgbouncer/userlist.txt``admin_users = admin``stats_users = admin``pool_mode = session``max_client_conn =
 ``100``default_pool_size = ``20``server_reset_query = RESET ALL; SET SESSION AUTHORIZATION DEFAULT

tips:

  • listen_addr:监听地址,表示哪些地址能访问这个pgbouncer服务,*表示所有
  • auth_type:一般选择trust或md5,前者明文存储密码,后者md5加密密码
  • auth_file:需要创建一个用户列表文件,只有在文件中的用户才允许访问连接池
  • admin_users:pgbouncer的管理员账号,需要在userlist.txt中存在
  • pool_mode:默认为会话池模式(Session pooling),还可以选择事务池(Transaction pooling)和语句池(Transaction pooling)
  • max_client_conn:连接池最多允许多少连接
  • default_pool_size:每一对数据库-用户允许多少连接
  • server_reset_query:当一个连接被返回给连接池时,它必须被重置为刚创建的连接的状态。在把一个连接返回给连接池之前,PgBouncer通过发出一个查询来实现这种重置。PG使用DISCARD ALL命令,不过GreenPlum不支持这个命令,使用示例中的命令来达到这个目的

模式比较:

img

2、创建userlist.txt文件,需要与pgbouncer.ini里的auth_file路径相对应

如果auth_type = trust,则内容为

"user_name" "password"

如果auth_type = md5,则内容为

"user_name" "md5 + MD5(<password><username>)"

可以通过查询GP的pg_catalog.pg_shadow视图获得,导出即可

pgbouncer也提供了一个mkauth.py工具,可以直接生成userlist文件,这里不详细描述了。

3、启动

pgbouncer -d /etc/pgbouncer/pgbouncer.ini

4、停止

可以直接kill进程来停止pgbouncer

cat /var/run/pgbouncer/pgbouncer.pid | xargs kill -9

也可以登陆pgbouncer后台数据库,执行shutdown来关闭

5、登陆数据库

通过连接池连接目标数据库

psql -h 192.168.4.11 -p 6688 -U admin xxx

连接pgbouncer数据库

psql -p 6688 -U cyadmin pgbouncer

配置项详解

配置文件分为[databases] 和 [pgbouncer]两部分,现在我们来详细讲解一下里面的配置。

[databases]部分的参数配置,都是以键值对的形式出现的,例如dbname、host、port、user、password,这几个参数都比较好理解。还有几个额外的配置我们接着看一下:<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL连接池是一种用于管理和复用数据库连接的技术,它可以提高应用程序与数据库之间的性能和效率。连接池允许应用程序在需要时从连接池中获取数据库连接,并在使用完毕后将连接返回给连接池,而不是每次都重新创建和关闭连接。 在使用PostgreSQL连接池之前,需要确保已经安装了PostgreSQL数据库,并且已经创建了相应的数据库和用户。 下面是一个使用Spring Boot配置PostgreSQL连接池的示例: 1. 在Spring Boot项目的配置文件(例如application.yml或application.properties)中添加以下配置: ```yaml spring: datasource: url: jdbc:postgresql://pgbouncer-ip:pgbouncer端口/数据库?prepareThreshold=0 driverClassName: org.postgresql.Driver username: postgres(pgbouncer数据库对应的用户名) password: postgres(pgbouncer数据库对应的密码) ``` 2. 确保替换上述配置中的以下参数: - pgbouncer-ip:PGbouncer的IP地址 - pgbouncer端口:PGbouncer的端口号 - 数据库:要连接的数据库名称 - pgbouncer数据库对应的用户名和密码 通过以上配置,Spring Boot将会自动创建一个连接池,并在需要时从连接池中获取连接。你可以在应用程序中使用这些连接来执行数据库操作。 请注意,上述示例中的配置是基于Spring Boot的方式,如果你使用的是其他框架或纯Java代码,你需要根据相应的框架或库的文档进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值