向您介绍了 Slony 之后,我们将介绍另外一种流行的复制工作.Skytools 是一个最初有 Skype 开发的软件包,它有多种用途.Skytools 不只是一个单一的程序,而且是一个工具与服务的集合,您可以用它来提高您的复制设置.在本章中,我们将讨论有关Skytools的如下主题: • 建立 通用队列 • 使用 londiste 复制 • 处理 XLOG 与 walmgr.py 11.1 安装 skytools Skytools 是一个开放源码包,可以从 pgfoundry.org自由下载.…
11.5 关于walmgr 的介绍 walmgr 是一个简化基于文件事务日志传输的工具.早在过去的一些日子里(在9.0版本之前),使用walmgr来简化基本备份是很常见的.随着流复制的引入,情况有了一点变化. 设置流复制已经变得如此简单,以至于插件变得不再像以前那样重要了.当然,这是我们的主观观点,这可能不是您在最近的一段时间里观察到的. 为了确保本书的范围不会扩大,我们已经决定不在本章详细介绍walmgr了.欲了解更多信息,我们建议您去查看walmgr源代码的文档目录.它包含了一些易于使用的例…
11.3 管理 pgq-queues Skytools 的一个核心组件是pgq.它提供了一个通用排队接口,它可以让您把消息从一个消息提供者传送到一个任意数目的接收者. 现在的问题是:一般来说,一个队列的要点是什么?队列有一些很不错的特征.首先,它可以保证消息的传递.除此之外,它将确保消息被放入队列的顺序会被保留.在复制的情况下,这是非常重要的,因为我们必须确保小不会相互追赶对方. 队列的思想是能够使任何东西从整个生产数据被发送到任何别的参与系统的主机.这不仅适用于复制,使用与很多—您可以把pgq…
11.4 使用 londiste 复制数据 pgq是一个叫做londiste的复制工具的核心.londiste 的核心是有一个比如比Slony 更加简单,容易使用的机制.如果您在一个大的安装中使用Slony,在集群方面的一个问题很容易引起其他方面的问题—在许多年前,但Slony还是相当新的时候,这尤其是如此. 和Slony相比,londiste的主要优势是,在londiste的情况下,每个“程序”复制就会有一个进程.所以,如果您从A复制到B,这个通道将被一个londiste进程管理.如果您从B复…
11.2 剖析 skytools Skytools 不只是一个单一的脚本,而是一个提供各种不同服务的工具的集合.一旦我们安装了Skytools,更详细地查一下这些组件的细节是有意义的: • londiste: 在逻辑级别上复制各个表和整个数据库的一个易于使用的工具 • walmgr: 一个用来管理事务日志的工具箱 • pgq:灵活调度和分发数据的的通用排队接口 在本章我们将详细地讨论一下 pgq 和 londiste .…
4.4 基于流和基于文件的恢复 生活并不总只是黑色或白色:有时也会有一些灰色色调.对于某些情况下,流复制可能恰到好处.在另一些情况下,基于文件复制和PITR是您所需要的.但是也有许多情况下,您既需要流复制,也需要基于文件的复制.一个例子是:当您较长一段时间中断复制,您可能想再次使用归档来重新同步(resync)slave,而不是再次执行完全的基础备份.这也可能是有用的---保留一个归档一段时间以后调查或重放操作.好消息是PostgreSQL允许您混合基于文件和基于流的复制.您没有必要决定基于流的…
4.2 配置级联复制 正如您在本章已经看到的,设置流复制真的很容易.只需要设置几个参数,做一个基础备份,并享受您的复制设置. 在许多情况下,这种情况更有一点点微妙.在这个例子中我们假设:我们要使用一个master传送数据到几十台服务器.复制的开销其实很小(通常的说法是一个slave的开销是3%左右),但是您做小的事情是足够了,它仍然可能是一个问题.对100个 slave来说这绝对没有任何益处. 另一个用例是一个地方的master和在 另一个地方的多个slave.一遍又一遍地长距离发送大量的数据是…
执行完您的第一个即时恢复(PITR,Point-In-Time-Recovery),我们准备在一个真正的复制设置上工作.在本章,您将学会如何设置异步复制和流.我们的目标是确保您可以实现更高的高可用和更高的数据安全性. 在本章,我们将讨论以下主题: • 配置异步复制 • 理解流 • 合并流和归档 • 管理时间线 在本章的最后,您将很容易地在几分钟内设置流复制. 4.1 设置流复制 在前面章节中,我们已经从简单的16MB XLOG文件做了恢复.从逻辑上讲,重放进程一次只能重放16MB.这在您的复制设…
13.3 聪明地扩展与处理集群 建立集群不是您面临的唯一任务.如果所有的事情都做完了并且系统已经运行了,您可能需要到处调整配置. 13.3.1 添加和移动分区 一旦一个集群启动并运行,您可能会发现您的集群太小,而不能处理您的应用产生的负载.现在的问题是:如何采用最明智的方法做到这一点? 您可以做的最好的事情是创建比需要的多的多的分区.所以,如果您开始考虑使用差不多四个节点,我们直接创建十六个,每台服务器上运行四个分区.在这种情况下,扩展您的集群将会很容易: • 复制所有的生产节点 • 重新配置…
7.6 PostgreSQL和高可用性 数据库是我们日常数字生活的一部分,并期望它们快速工作. 您浏览网上论坛吗?那个帖子在数据库中.您看医生吗?您的医疗记录在数据库中.您在网上购物吗?那个货物,您的数据和以前购买的东西都在数据库中. 希望所有这些数据在几秒钟内出现.这不仅是您的期望.一个小网店可能同时有成百上千的访客,每个访客都希望网站快速展现.较大的网站可以同时处理几万或者几十万的访问. 这意味着该服务背后的数据库必须一直可用.当我们考虑这样的网站服务于全球的用户时,问题的范围变得很明显.总…