9.7 处理故障转移和高可用

可以使用pgpool来解决的一些明显的问题是高可用性和故障转移。一般来讲,有使用pgpool或者不使用pgpool可以用来处理这些问题的各种方法。

9.7.1 使用PostgreSQL流和Linux HA

使用pgpool解决高可用性的最简单的方法是和Linux HA一起使用PostgreSQL的板载工具。在这种情况下,在我们的世界中,最好的方法是不使用语句级别的复制运行pgpool和使用PostgreSQL的流复制来同步数据。

pgpool可以被配置来做负载均衡,并自动发送写请求到第一个节点,发送读请求到第二个节点。

在故障转移时会发生什么情况呢?让我们假设master会崩溃。在这种情况下,Linux HA 会触发故障转移,并移动master的IP地址到slave。然后,slave可以被Linux HA提升为新的master(如果这是需要的话)。然后,pgpool将只会面对一个故障的数据库连接并重新开始并重新连接。

当然,我们也可以使用londiste或一些其它技术,例如Slony复制数据。然而,对于典型的案例,流复制就够了。

[ 在您的pgpool设置中,如果您想使用一个较新版本的PostgreSQL更新所有的节点,Slony 和 skytools 是完美的工具。您可以建立Slony或londiste 副本,然后只是暂停简单的操作(保持同步)并切换您的IP地址到运行新版本的主机。]

时间经验表明,使用PostgreSQL板载和操作系统级别的工具是一个简单,重要,可靠的处理故障转移的好方法。

9.7.2 pgpool的高可用和故障转移的机制

除了流复制和Linux HA,您也可以使用pgpool 提供的机制来处理故障转移。本节将使用pgpool提供的这些方法。

您必须要做的第一件事情是把故障转移命令添加到您的池配置中。下面是一个例子:

failover_command = '/usr/local/bin/pgpool_failover_streaming.sh %d %H

每当pgpool检查到一个节点故障,它将执行我们在池配置中的脚本,并根据我们的规定作出反应。理论上讲,这个故障转移脚本将写一个触发文件—这个触发问题然后可以在slave系统上被看到,并把它转化为master。

在slave上的recovery.conf 文件可能看起来是这样的:

standby_mode = 'on'

primary_conninfo = 'host=master_host user=postgres'

trigger_file = '/tmp/trigger_file0'

该trigger_file 每隔5秒被检查一次。一旦发生了故障转移,pgpool会把第二个服务器作为新的master。

在故障转移之后合乎逻辑的下一步是将一个新的服务器一引入到系统中。

最简单,最可靠的方法是:

• 设置流复制

• 等待服务器重新同步

• 简单地中断写入

• 使用 pcp_attach_node 添加新的节点

• 恢复写入

总体而言,这将只需要几秒钟的服务终端。

[ 理论上,在pgool的世界里,服务中断不是必须的,确保不存在一丝引起不一致的的方法,关闭写入操作几秒钟可能是值得的。在绝大多数情况下,这会是可以忍受的。]

9.8 总结

pgpool是一个已经被广泛使用于复制和故障转移的工具。它提供了许多的功能,包括负载均衡,连接池,和复制。pgpool在语句级别复制数据,并和PostgreSQL板载的工具例如,流复制 整合在一起。

在下一章中,我们将深入Slony并学习逻辑复制。我们将讨论软件体系架构并看看在一个大的服务器集群中如何使用Slony来复制数据。

PostgreSQL Replication之第九章 与pgpool一起工作(7)的更多相关文章

  1. PostgreSQL Replication之第九章 与pgpool一起工作(4)

    9.4 设置复制和负载均衡 要配置pgpool,我们可以简单地使用一个包含一种典型的配置信息的已经存在的样本文件,将它拷贝到我们的配置目录并修改之: $ cp /usr/local/etc/pgpoo ...

  2. PostgreSQL Replication之第九章 与pgpool一起工作(6)

    9.6 运行pgpool和流复制 pgpool也可以和除了语句级别的复制之外的流复制一起使用.一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池. 实际上,这样 ...

  3. PostgreSQL Replication之第九章 与pgpool一起工作(3)

    9.3 理解pgpool的架构 一旦我们安装了pgpool,是时候来讨论软件架构了.从一个用户的角度看,pgpool就像一个 正常的数据库服务器,您可以想连接任何其他服务器一样连接到它: pgpool ...

  4. PostgreSQL Replication之第九章 与pgpool一起工作(1)

    在前面的章节中,我们已经能够深入地理解了pgbouncer,同时也学会了如何使用它来尽可能地优化复制设置.在本章我们将了解一个经常被称作与pgbouncer相对应的工具.尽管pgpool的思想与pgb ...

  5. PostgreSQL Replication之第九章 与pgpool一起工作(2)

    9.2 理解pgpool的功能 pgpool提供了如下功能: •连接池 •语句级别的复制 •负载均衡 •限制连接 •内存缓存 •并行查询 [当决定使用那些功能的时候,记住并非所有的功能可以在同一时间使 ...

  6. PostgreSQL Replication之第九章 与pgpool一起工作(5)

    9.5 检查复制 如果所有的节点都处于开机并运行的状态.我们就可以在集群上运行我们的第一个操作了.在我们的例子中,我们将简单地连接到pgpool并创建一个新的数据库.createdb 是一个命令行工具 ...

  7. PostgreSQL Replication之第一章 理解复制概念(1)

    PostgreSQL Replication系列翻译自PostgreSQL Replication一书 在本章中,将会介绍不同的复制概念,您会了解哪些类型的复制对哪一种实用场景是最合适的. 在本章的最 ...

  8. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)

    2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范 ...

  9. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(4)

    2.4 调整检查点和XLOG 目前为止,这一章已经提供深入洞察PostgreSQL如何写入数据,一般来说,XLOG是用来干什么的.考虑到这方面的知识,我们现在可以继续并学习我们能做些什么来使我们的数据 ...

随机推荐

  1. java-访问权限

    使用以下修饰符来控制对属性和方法的访问: 1.public--公共的,其他任何类均可访问 2.private--私有的,只能在当前类内部被访问,其他都不能访问 3.protected--受保护的,相同 ...

  2. [转]百度MP3音乐API接口及应用

    当你在百度去搜索一首歌时,你会发现有种更简单的方法,嘿嘿,告诉你个秘密,百度有个不公开的API http://box.zhangmen.baidu.com/x?op=12&count=1&am ...

  3. oj 1031 random permutation

    Problem A: Random Permutations Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 91  Solved: 54 Descri ...

  4. 切记CMYK图片格式在IE中将无法显示

    目前为止微软的Internet Explorer 浏览器IE6,IE7,IE8都不支持CMYK颜色模式图像 ,除IE外其他浏览器均能支持!所以大家要注意了 要选择RGB颜色模式,就可以了.

  5. 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

    最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...

  6. sort,ksort,asort的区别

    sort--对数组的val进行排序 ksort--对数组的key值进行排序 asort--对数组进行排序,键与值的对应关系不变 1.sort对数组排序 格式如下:bool sort(array &am ...

  7. CSS3新添加的属性

    1.圆角设置 border-radius:15px 50px 30px 5px; /*四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下 角. 三个值: 第一个值为左上角, ...

  8. [LeetCode]题解(python):118-Excel Sheet Column Title

    题目来源 https://leetcode.com/problems/excel-sheet-column-title/ Given a positive integer, return its co ...

  9. Linq世界走一走

    什么是Linq?它是用来做什么的?怎么用? Linq的优点是不管数据源是什么,都可以统一查询.换言之,它是一种包含一套标准查询操作符的查询语言,可以对多个数据源进行查询 ⑴Linq俗称语言集成查询(L ...

  10. VMware中CentOS设置静态IP

    因为之前搭建的MongoDB分片没有采用副本集,最近现网压力较大,所以准备研究一下,于是在自己电脑的虚拟机中搭建环境,但是发现之前VMware设置的是DHCP,所以每次重新resume后虚拟机中IP都 ...