在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置。在本章我们将了解一个经常被称作与pgbouncer相对应的工具。尽管pgpool的思想与pgbouncer有许多相似地方,它已经被设计为比pgbouncer多好多的特性。虽然做一件事pgbouncer更轻盈和优化过的。pgpool提供了更多的特点和承诺了附加的功能。
根据您的需求,您可以自由决定对于您的特殊设置来说哪个工具较好。
9.1 安装pgpool
正如我们已经看到的PostgreSQL,pgbouncer和包含在本书中的大多数其他工具,我们可以从源代码安装pgpool或者使用二进制包来安装。我们将再次描述如何从源代码进行编译。
要安装pgpool,我们首先必须下载它:
http://www.pgpool.net/mediawiki/images/pgpool-II-3.2.4.tar.gz
一旦下载完成,我们就可以提取代码:
$ tar xvfz pgpool-II-3.2.4.tar.gz
安装过程就像我们已经看到的。我们要做的第一件事是和一些参数来调用configure。在我们的例子中,主要的参数是—with-pgsql,它告诉构建过程在哪里可以找到我们的PostgreSQL安装。
$ ./configure --with-pgsql=/usr/local/pgsql/
现在我们可以容易地编译和安装软件了:
make
make install
9.1.1 安装pgpool-regclass和insert_lock
您刚才看到的是一个基本的pgpool安装。但是,为了是系统真正的动作,安装额外的模块是非常有帮助的,例如pgpool-regclass和insert_lock。,安装pgpool-regclass对于处理DDL复制来说是非常重要的。对于insert_lock处理分布式写是非常重要的。强烈推荐安装这个模块,因为不这样的话DDLs操作将无法工作。到现在为止,我们还没有看到实际的安装中,这个模块没有任何意义的情况。
首先让我们来安装pgpool-regclass:
cd sql/pgpool-regclass/
make
make install
为了使那个模块工作,我们必须部署pgpool-regclass文件。那个模块必须出现自所有我们将要使用的数据库当中。实现这个操作的最简单的方法是简单地把SQL文件加载到template1当中。每当有新的数据库被创建,template1将被克隆,以便所有新的数据库自动获得这个模块。
这同样适用于insert_lock.sql,它可以在pgpool的源代码的sql目录中找到。最简单的方法是直接把它加载到template1:
psql -f insert_lock.sql template1
一旦代码被安装,我们可以继续看看如何使用pgpool。