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


    9.6 运行pgpool和流复制

    pgpool也可以和除了语句级别的复制之外的流复制一起使用。一个完美的方案是使用PostgreSQL的板载复制和仅仅使用pgpool的负载均衡与连接池。

    实际上,这样做是非常有好处的,因为您没有必要担心函数的副作用或潜在的其他问题。PostgreSQL的事务日志总是正确的,并且它被认为是终极法则。

    在流复制没引入到PostgreSQL内核之前,pgpool的语句级的复制是一个复制数据的很好的功能。

    除此之外,这对只有一个master来说也是非常有益的。原因很简单。如果您只有一个master,面临不一致是很困难的。此外,pgpool将创建完整的副本,以便无论如何都要使数据被复制。如果数据必须最终在两个服务器上,这绝对没有完成--在这种情况下,写到两个节点将不会使事情有任何较好的扩展。

    在没有复制的情况下,您如何运行pgpool?这个过程基本上是相当的简单:

    • 设置 PostgreSQL 流复制 (同步或异步)。

    • 把连接池配置中的replication_mode设置为 off。

    • 设置 master_slave 为 on.

    • 设置 master_slave_sub_mode 为 stream.

    • 按本章的描述启动 pgpool 。

    在基本的设置中,pgpool将假设节点号为0的节点为master。所以,您必须确保您的两个节点在配置中按正确的顺序被列出。

    对于一个基本的设置,这些配置的小的改变是相当完美的。

    9.6.1 为master/slave模式优化pgpool配置

    pgpool为您的需要提供了一系列的参数来调整配置。我们必须要考虑的最重要的事情之一是PostgreSQL支持同步和异步复制。为什么这是相关的呢?好,让我们假设一个简单的场景。有人想注册一个网站:

    • 一个写请求出现。pgpool将调度您到0号节点,因为我们面临一个写操作。

    • 用户点击“保存”按钮。

    • 用户将到达下一个页面;一个读请求将被发出

    ° 如果我们最终在0号节点上,我们就没有问题—数据预期将在那里。

    ° 如果我们最终在1号节点上,我们可能看不到数据在这个节点上,如果我们正在使用异步复制。如果在本例中,您在使用同步复制,理论上也会有一个小窗口。

    这会导致客户端奇怪的行为。一个典型的奇怪案例行为将是:一个用户创建一个个人资料。在这种情况下,写一行数据。在下一刻,用户想要访问他或她的个人资料,并检查数据。如果他或她碰巧从副本中读,数据可能还没有在那里。如果您是在写一个网络应用程序,您必须把这件事保存在您的脑海里。

    为了展开这个问题,您有两个选择:

    • 同步复制,它是很昂贵的

    • 在连接池配置中设置 delay_threshold

    delay_threshold定义了slave能够接收读请求所允许的最大延迟时间。该设置在XLOG内部采用变化的字节来定义。因此,如果您把设置为1024,slave只允许滞后master1KB 的XLOG。否则,它将不会接收到请求。

    当然,除非这被设置为0,slave返回太老的数据,使它完全不可能是是很难的,但是一个合理的设置可以使它非常不可能。在许多实际的应用中,这可能是足够的。

    pgpool如何知道slave滞后多久?答案是,这很容易配置:

    • sr_check_period: 这个变量定义了,系统应该多久检查一次哪些XLOG位置,以弄清楚是否是延迟太高或太低。

    • sr_check_user: 通过流连接到primary来检查当前XLOG的位置的用户名。

    • sr_check_password: 此用户的密码。

    [如果您真的想确保负载均衡会为您提供最新的数据,使用同步复制是必要的,尽管它是昂贵。]

  • 相关阅读:
    03_ if 练习 _ little2big
    uva 11275 3D Triangles
    uva 12296 Pieces and Discs
    uvalive 3218 Find the Border
    uvalive 2797 Monster Trap
    uvalive 4992 Jungle Outpost
    uva 2218 Triathlon
    uvalive 3890 Most Distant Point from the Sea
    uvalive 4728 Squares
    uva 10256 The Great Divide
  • 原文地址:https://www.cnblogs.com/songyuejie/p/4749617.html
Copyright © 2020-2023  润新知