8.5 维护 pgbouncer 除了我们在本章已经说明的,pgbouncer有一个很好的能够执行基本管理和监控任务的交互式管理界面. 它是如何工作的呢?pgbouncer提供给您一个虚假的称为pgbouncer的数据库.它不能被用于查询,因为它只提供简单的语法来处理基本的管理任务. [如果您正在使用pgbouncer,请不要使用普通的数据库名为pgbouncer—它将会导致混乱,它将不会产生好处.] 8.5.1 配置管理接口 为了配置这个接口,我们必须改写我们的配置文件.在我们的例子中,我们将…
8.4 提升性能 从一开始考虑pgbouncer的时候,性能就是一个关键的因素.为了确保高性能,有些问题必须认真对待.首先,确保参与您设置的所有节点相互之间的距离较近.这对于降低网络往返时间有很多的帮助,从而提升性能.减少调用fork()的开销和为了性能的提升而付出网络时间是没有必要的.正如在大多数情况下,降低网络时间和延迟绝对是一笔巨大的开销. 基本上,pgbouncer可以放到一台专用的pgbouncer服务器上,直接放在一个数据库节点,或者放在web服务器上.一般来说,建议不要把数据库基础…
8.3 配置您的第一个pgbouncer设置 一旦我们已经完成了pbouncer的编译与安装,我们可以容易地启动它.要做到这一点,我们已经在一个本地实例(p0和p1) 建立了两个数据库.在本例中,执行设置的想法是使用pgbouncer作为代理. 8.3.1 写一个简单的配置文件并启动pgbouncer 为了使pgbouncer工作,我们可以写一个简单的配置文件,它可以被添加到pgboucner: [databases] p0 = host=localhost dbname=p0 p1 = hos…
8.2 安装pgbouncer 在我们深入细节之前,我们将看看如何安装pgbouncer.正如PostgreSQL一样,您可以采取两种途径.您可以安装二进制包或者直接从源代码编译.在我们的例子中,我们将向您展示如何采用源代码进行安装. 您想要做的第一件事是从官方网站下载pgbouncer:http://pgfoundry.org/projects/pgbouncer. 一旦以下载了.tar归档文件,您可以放心地使用如下命令进行解压: tar xvfz pgbouncer-1.5.4.tar.gz…
当您在使用大规模的设施工作,可能有时候,您必须处理许多并发打开的连接.没有人会使用十台服务器来为两个并发用户提供服务--在许多情况下,这根本没有意义.大量的设施通常会处理成百上千的并发连接.引入连接池,例如pgbouncer,会有助于挤出您的系统的更多的性能. 通常创建成千上万个连接可以说是一笔相当的开销,因为每次一个连接到PostgreSQL的连接被创建需要调用fork().如果一个连接仅使用较短的时间,这可是昂贵的事.这是需要使用pgbouncer的时候.基本上,pgbouncer不是一个复…
在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgbouncer有许多相似地方,它已经被设计为比pgbouncer多好多的特性.虽然做一件事pgbouncer更轻盈和优化过的.pgpool提供了更多的特点和承诺了附加的功能. 根据您的需求,您可以自由决定对于您的特殊设置来说哪个工具较好. 9.1 安装pgpool 正如我们已经看到的PostgreSQ…
9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用PostgreSQL流和Linux HA 使用pgpool解决高可用性的最简单的方法是和Linux HA一起使用PostgreSQL的板载工具.在这种情况下,在我们的世界中,最好的方法是不使用语句级别的复制运行pgpool和使用PostgreSQL的流复制来同步数据. pgpool可以被配置来做负载均衡,…
9.6 运行pgpool和流复制 pgpool也可以和除了语句级别的复制之外的流复制一起使用.一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池. 实际上,这样做是非常有好处的,因为您没有必要担心函数的副作用或潜在的其他问题.PostgreSQL的事务日志总是正确的,并且它被认为是终极法则. 在流复制没引入到PostgreSQL内核之前,pgpool的语句级的复制是一个复制数据的很好的功能. 除此之外,这对只有一个master来说也是非常有益的.原因很简单…
9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf 改写这个配置文件比从头写这个文件要容易的多.在下面的列表中,您将看到一个实例配置,您可以把它用于两个节点的简单配置: listen_addresses = 'localhost' port = 9999 socket_…
9.3 理解pgpool的架构 一旦我们安装了pgpool,是时候来讨论软件架构了.从一个用户的角度看,pgpool就像一个 正常的数据库服务器,您可以想连接任何其他服务器一样连接到它: pgpool将根据您的需要调度请求. 一旦您理解了总体架构,因为从使用者的角度看,我们可以挖掘更详细的信息: 当pgpool启动了,我们就启动了pgpool的父进程.这个进程将分配并创建所谓的子进程.这些进程将负责为请求提供服务给终端用户并处理与我们的数据库节点的交互.这一策略将急剧减少到PostgreSQL的…