PgBouncer 编译与安装

PgBouncer 编译与安装说明

原始页面: https://www.pgbouncer.org/install.html


编译

PgBouncer 的编译依赖以下组件:

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

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

如果从 Git 构建或在 Windows 上构建,请参阅下方的单独构建说明。


DNS 查询支持

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

后端并行EDNS0 (1)/etc/hostsSOA 查询 (2)备注
c-ares<=1.10 版本中 IPv6+CNAME 存在缺陷
evdns, libevent 2.x不检查 /etc/hosts 更新
getaddrinfo_a, glibc 2.9+是 (3)非 glibc 环境不可用
getaddrinfo, libc是 (3)需要 pthreads
  1. 若需要一个主机名对应 8 个以上 IP 地址,则需要 EDNS0 支持。
  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 对用户进行鉴权。


LDAP 认证

要启用 LDAP 认证,./configure 提供了 --with-ldap 标志(默认值为 no)。编译时启用 LDAP 支持后,将新增一个全局认证类型 ldap,可通过 LDAP 对用户进行鉴权。


systemd 集成

要启用 systemd 集成,请使用 configure 选项 --with-systemd。这将允许使用 Type=notify(若使用 systemd 253 或更高版本,则可使用 Type=notify-reload)以及 socket 激活。示例请参见 etc/pgbouncer.serviceetc/pgbouncer.socket


从 Git 构建

从 Git 构建 PgBouncer 需要在运行 configure 之前先生成头文件和配置文件:

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

默认情况下,所有文件将安装在 /usr/local 下。可向 configure 提供一个或多个命令行选项。运行 ./configure --help 可列出所有可用选项及用于自定义配置的环境变量。

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


测试

如需了解如何运行测试,请参阅 测试目录中的 README.md 文件


在 Windows 上构建

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

在 MinGW 上构建,按照常规方式执行:

$ ./configure
$ make

如果从 Unix 交叉编译:

$ ./configure --host=i586-mingw32msvc

LDAP 构建选项目前不支持 Windows。


在 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