9.7 处理故障转移和高可用 可以使用pgpool来解决的一些明显的问题是高可用性和故障转移.一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法. 9.7.1 使用PostgreSQL流和Linux HA 使用pgpool解决高可用性的最简单的方法是和Linux HA一起使用PostgreSQL的板载工具.在这种情况下,在我们的世界中,最好的方法是不使用语句级别的复制运行pgpool和使用PostgreSQL的流复制来同步数据. pgpool可以被配置来做负载均衡,…
9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpool.conf.sample /usr/local/etc/pgpool.conf 改写这个配置文件比从头写这个文件要容易的多.在下面的列表中,您将看到一个实例配置,您可以把它用于两个节点的简单配置: listen_addresses = 'localhost' port = 9999 socket_…
9.6 运行pgpool和流复制 pgpool也可以和除了语句级别的复制之外的流复制一起使用.一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池. 实际上,这样做是非常有好处的,因为您没有必要担心函数的副作用或潜在的其他问题.PostgreSQL的事务日志总是正确的,并且它被认为是终极法则. 在流复制没引入到PostgreSQL内核之前,pgpool的语句级的复制是一个复制数据的很好的功能. 除此之外,这对只有一个master来说也是非常有益的.原因很简单…
9.3 理解pgpool的架构 一旦我们安装了pgpool,是时候来讨论软件架构了.从一个用户的角度看,pgpool就像一个 正常的数据库服务器,您可以想连接任何其他服务器一样连接到它: pgpool将根据您的需要调度请求. 一旦您理解了总体架构,因为从使用者的角度看,我们可以挖掘更详细的信息: 当pgpool启动了,我们就启动了pgpool的父进程.这个进程将分配并创建所谓的子进程.这些进程将负责为请求提供服务给终端用户并处理与我们的数据库节点的交互.这一策略将急剧减少到PostgreSQL的…
在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgbouncer有许多相似地方,它已经被设计为比pgbouncer多好多的特性.虽然做一件事pgbouncer更轻盈和优化过的.pgpool提供了更多的特点和承诺了附加的功能. 根据您的需求,您可以自由决定对于您的特殊设置来说哪个工具较好. 9.1 安装pgpool 正如我们已经看到的PostgreSQ…
9.2 理解pgpool的功能 pgpool提供了如下功能: •连接池 •语句级别的复制 •负载均衡 •限制连接 •内存缓存 •并行查询 [当决定使用那些功能的时候,记住并非所有的功能可以在同一时间使用是很重要的.下面的网站什么功能可以一起使用,什么功能不能一起使用:http://www.pgpool.net/docs/latest/pgpool-en.html#config] pgpool的一个核心功能是做连接在的能力.这个思想和我们在前面章节中所描述的一个软件大致相同.我们想减少每次一个网页…
9.5 检查复制 如果所有的节点都处于开机并运行的状态.我们就可以在集群上运行我们的第一个操作了.在我们的例子中,我们将简单地连接到pgpool并创建一个新的数据库.createdb 是一个命令行工具提供CREATE DATABASE命令的抽象服务,它可以被pgpool很好地复制.在我们的例子中,我们简单地创建一个叫做xy 的数据库来看看复制是否工作: $ createdb xy -p 9999 要查看那个命令是否已经如期被复制.我们建议连接到两个数据库并看看新的数据库是否被显示出来.在我们的例…
PostgreSQL Replication系列翻译自PostgreSQL Replication一书 在本章中,将会介绍不同的复制概念,您会了解哪些类型的复制对哪一种实用场景是最合适的. 在本章的最后,您将能够判断某个概念在各种情况下是否是可行的. 我们在本章将介绍以下主题: • CAP理论 •复制的物理限制 •为什么延迟有影响 •同步和异步复制 •拆分和复制 在我们使用PostgreSQL实际工作之前,我们将引导您完成一些非常基本的与复制相关想法和事实. 1.1 CAP理论和物理限制 您可能…
2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范围,但我们会为您提供希望足够深的见解. 2.5.1 理解XLOG记录 对XLOG所做的更改是基于记录的.这意味着什么?让我们假设您在给一个表添加一行数据: test=# INSERT INTO t_test VALUES (1, 'hans'); INSERT 0 1 在这个例子中,我们正在插入一个…
2.4 调整检查点和XLOG 目前为止,这一章已经提供深入洞察PostgreSQL如何写入数据,一般来说,XLOG是用来干什么的.考虑到这方面的知识,我们现在可以继续并学习我们能做些什么来使我们的数据库在复制和单台服务器运行的两种情况更加有效的工作. 2.4.1 理解检查点 在本章中,我们已经看到在数据可能到其它地方之前,它已经被写入到了XLOG.问题是,如果XLOG从未被删除,显然,在没有填满磁盘的同一时间,我们不会永远写到XLOG中. 要解决这个问题,XLOG必须在某一时刻被删除.这个过程就…