PostgreSQL 的轻量级连接池。
主页:https://www.pgbouncer.org/
来源、错误跟踪:https://github.com/pgbouncer/pgbouncer
PgBouncer 的编译依赖于以下几个因素:
安装依赖项后只需运行:
$ ./configure --prefix=/usr/local
$ make
$ make install
如果您是从 Git 构建,或者是针对 Windows 构建,请参阅下面单独的构建说明。
PgBouncer 在连接时进行主机名查找,而不是仅在配置加载时查找一次。这需要异步 DNS 实现。下表显示了支持的后端及其探测顺序:
后端 | 平行线 | EDNS0 (1) | /etc/主机 | SOA 查找 (2) | 笔记 |
---|---|---|---|---|---|
c-战神 | 是的 | 是的 | 是的 | 是的 | <=1.10 中的 IPv6+CNAME 错误 |
evdns、libevent 2.x | 是的 | 不 | 是的 | 不 | 不检查 /etc/hosts 更新 |
getaddrinfo_a,glibc 2.9+ | 是的 | 是 (3) | 是的 | 不 | 对于非 glibc 不适用 |
获取地址信息、libc | 不 | 是 (3) | 是的 | 不 | 需要 pthreads |
options edns0
添加到/etc/resolv.conf
。c-ares 是功能最齐全的实现,建议用于大多数用途和二进制打包(如果有足够新的版本可用)。 Libevent 的内置 evdns 也适用于多种用途,但具有列出的限制。目前其他后端大多是遗留选项,不再接受太多测试。
默认情况下,如果可以找到,则使用 c-ares。可以通过configure --with-cares
强制使用它,或者通过--without-cares
禁用它。如果未使用 c-ares(未找到或禁用),则使用 Libevent。指定--disable-evdns
以禁用 Libevent 的 evdns 的使用并回退到基于 libc 的实现。
要启用 PAM 身份验证, ./configure
有一个标志--with-pam
(默认值为 no)。当使用 PAM 支持进行编译时,可以使用新的全局身份验证类型pam
通过 PAM 验证用户。
要启用 systemd 集成,请使用configure
选项--with-systemd
。这允许使用Type=notify
(或者Type=notify-reload
如果您使用的是 systemd 253 或更高版本)以及套接字激活。有关示例,请参阅etc/pgbouncer.service
和etc/pgbouncer.socket
。
从 Git 构建 PgBouncer 要求您获取 libusual 和 uthash 子模块并生成头文件和配置文件,然后才能运行configure
:
$ git clone https://github.com/pgbouncer/pgbouncer.git
$ cd pgbouncer
$ git submodule init
$ git submodule update
$ ./autogen.sh
$ ./configure
$ make
$ make install
默认情况下,所有文件都将安装在/usr/local
下。您可以提供一个或多个命令行选项来configure
.运行./configure --help
以列出可用选项和自定义配置的环境变量。
需要额外的软件包:autoconf、automake、libtool、pandoc
有关如何运行测试的信息,请参阅测试目录中的README.md
文件。
Windows 上唯一支持的构建环境是 MinGW。不支持 Cygwin 和 Visual $ANYTHING。
要在 MinGW 上构建,请执行常规操作:
$ ./configure
$ make
如果从 Unix 交叉编译:
$ ./configure --host=i586-mingw32msvc
从命令行运行与往常一样,只是-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