PgBouncer:一个轻量级的用于PostgreSQL的连接池软件

PgBouncer

PgBouncer 是一个轻量级的用于 PostgreSQL 的连接池软件。

主页: https://www.pgbouncer.org/

源码和 bug 追踪: https://github.com/pgbouncer/pgbouncer

构建

PgBouncer 在编译时依赖以下几个组件:

安装好依赖后,执行以下命令构建:

$ ./configure --prefix=/usr/local
$ make
$ make install

如果你是从 Git 构建,或者在 Windows 上构建,请参考下面的单独构建说明。

DNS 查询支持

PgBouncer 在连接时进行主机名查询,而不仅仅在配置加载时进行一次。这需要使用异步 DNS 实现。下表显示了支持的后端及其探测顺序:

后端 并行查询 EDNS0 (1) /etc/hosts SOA 查询 (2) 备注
c-ares IPv6+CNAME 在 <=1.10 中有问题
evdns, libevent 2.x 不检查 /etc/hosts 更新
getaddrinfo_a, glibc 2.9+ 是 (3) 非 glibc 系统不适用
getaddrinfo, libc 是 (3) 需要 pthreads
  1. EDNS0 要求一个主机名后面有超过 8 个地址。
  2. SOA 查询用于在区域序列更改时重新检查主机名。
  3. 要启用 EDNS0,请在 /etc/resolv.conf 中加入 options edns0

c-ares 是最全面的实现,推荐在大多数情况下使用和二进制打包(如果有足够新的版本)。Libevent 的内置 evdns 也适用于许多情况,但受到列出的限制。其他后端在这一点上都是遗留选项,并且不再接受太多测试。

默认情况下,如果能找到 c-ares,则使用它。可以使用 configure --with-cares 强制使用它,或使用 --without-cares 禁用它。如果不使用 c-ares(未找到或禁用),则使用 Libevent。指定 --disable-evdns 禁用使用 Libevent 的 evdns,并回退到基于 libc 的实现。

PAM 认证

要启用 PAM 认证,./configure 提供了一个 --with-pam 标志(默认值为 no)。当编译时启用 PAM 支持后,将可用一个新的全局认证类型 pam 来通过 PAM 验证用户。

systemd 集成

要启用 systemd 集成,请使用 configure 选项 --with-systemd。这样可以使用 Type=notify 服务单元以及套接字激活。请参考 etc/pgbouncer.serviceetc/pgbouncer.socket 中的示例。

从 Git 构建

从 Git 构建 PgBouncer 需要在运行 configure 之前获取 libusual 子模块并生成头文件和配置文件:

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

需要额外的软件包:autoconf、automake、libtool、pandoc

测试

有关如何运行测试的详细信息,请参阅测试目录中的 README.md 文件。

构建 Windows 版本

Windows 上唯一支持的构建环境是 MinGW。不支持 Cygwin 和 Visual $ANYTHING。

在 MinGW 上构建的步骤如下:

$ ./configure ...
$ make

如果从 Unix 进行交叉编译:

$ ./configure --host=i586-mingw32msvc ...

在 Windows 上运行

从命令行运行与平常一样,只是 -d(后台运行)、-R(重启)和 -u(切换用户)选项不起作用。

要将 PgBouncer 作为 Windows 服务运行,需要配置 service_name 参数以设置服务的名称。然后执行以下命令:

$ pgbouncer -regservice config.ini

要卸载服务:

$ pgbouncer -unregservice config.ini

要使用 Windows 事件日志,在配置文件中设置 syslog = 1。但在此之前,需要注册 pgbevent.dll

$ regsvr32 pgbevent.dll

要取消注册,执行:

$ regsvr32 /u pgbevent.dll
版权声明:本文《PgBouncer:一个轻量级的用于PostgreSQL的连接池软件》为「linux名库」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。联系方式osschina@qq.com
 
Leave a Reply 0

Your email address will not be published. Required fields are marked *


加好友请备注:linuxlibs
您可以在微信公众号联系我们
您可以通过邮件联系我们
我们将24小时内回复。
取消