PgBouncer简介及使用方法

2023年 8月 15日 70.9k 0

一、PgBouncer简介

PgBouncer是为PostgreSQL数据库提供的一个轻量级连接池工具。PostgreSQL数据库是基于进程的架构,应用每次连接到PG,PG都会创建一个新的进程来为应用服务,服务完成之后,关闭连接,进程被销毁。频繁地创建、销毁进程开销很大,耗费资源。PgBouncer 连接池把与数据库的连接进行缓存,应用请求到来时,分配一个空闲的连接使用,应用执行完成后,连接不会直接关闭,而是被放入连接池,等待下次被使用,这样降低了资源的消耗,提高了系统性能。

二、PgBouncer支持三种连接池模型

  1. session,会话级连接,在客户端连接的生命周期内,连接池分配一个连接给它,直到客户端断开连接,分配的连接才会回到连接池中。
  2. transaction,事务级连接,当客户端的每个事务结束时,数据库连接被释放到连接池中,再次执行一个事务时,需要再从连接池获取一个连接。
  3. statement,语句级连接,执行完一个SQL语句,数据库连接就会被释放到连接池中,再次执行一个SQL语句,需要再从连接池获取一个连接,这种模式意味着客户端强制autocommit模式。

三、安装PgBouncer

3.1 yum install 安装

yum install -y pgbouncer

3.2 源码编译安装

源码地址:

https://github.com/pgbouncer/pgbouncer

git clone https://github.com/pgbouncer/pgbouncer.git
cd pgbouncer
git submodule init
git submodule update
./autogen.sh
./configure ...
make
make install

四、PgBouncer使用方法

4.1 创建配置文件

useradd pg
mkdir /opt/pgbouncer
chown -R pg:pg /opt/pgbouncer
su - pg
cd /opt/pgbouncer

编辑配置文件:pgbouncer.ini

[databases]
* = host=127.0.0.1 port=5432

[pgbouncer]
listen_port = 6432
listen_addr = *
auth_type = md5
auth_file = userlist.txt
logfile = /opt/pgbouncer/pgbouncer.log
pidfile = /opt/pgbouncer/pgbouncer.pid
admin_users = admin
min_pool_size=10

编辑用户密码配置文件:userlist.txt

"admin" "md5b9d11b3be25f5a1a7dc8ca04cd310b28"

用户密码可以通过连接到PostgreSQL数据库,执行以下SQL获取:
select usename,passwd from pg_shadow;

配置文件所在目录的属主需要与pgbouncer进程的启动用户保持一致。

4.2 启动PgBouncer

pgbouncer -d pgbouncer.ini

pgbouncer必须使用非root用户启动,pgbouncer.ini 配置文件所在目录属主需要与pgbouncer启动用户一致。

4.3 连接PgBouncer

psql -p 6432 -U admin pg

4.4 管理PgBouncer

psql -p 6432 -U admin pgbouncer
指定一个特殊的库名pgbouncer,使用SHOW HELP; 命令即可查看各种管理命令,如下:

$ psql -p 6432 -U admin pgbouncer
Password for user admin:
psql (11.5, server 1.13.0/bouncer)
Type "help" for help.

pgbouncer=# show help;
NOTICE: Console usage
DETAIL:
SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
SHOW DNS_HOSTS|DNS_ZONES
SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
SET key = arg
RELOAD
PAUSE []
RESUME []
DISABLE
ENABLE
RECONNECT []
KILL
SUSPEND
SHUTDOWN

4.5 重载配置文件

如果修改了 pgbouncer.ini 文件,使用reload命令重载配置文件。
pgbouncer=# RELOAD;

五、更多资料

更多的参数介绍,更详细的使用方法,参考官方文档:

https://www.pgbouncer.org/

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论