zoukankan      html  css  js  c++  java
  • 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: 此用户的密码。

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

  • 相关阅读:
    条形码:Code93
    MSSQL 又一个行列转换
    PowerShell查看Sharepoint日志
    SharePoint Meeting Workspace
    Developer Dashboard in SharePoint 2010
    SPUtility.SendEmail
    处理sharepoint 列表中的 person or group类型字段
    SharePoint Issue: Unable to oben the Site (Object null reference Error) Solution
    import a Microsoft SharePoint 2010 site definition
    SPListTemplateType 枚举 (Microsoft.SharePoint) 创建列表时的ListTemplate Type属性
  • 原文地址:https://www.cnblogs.com/songyuejie/p/4749617.html
Copyright © 2011-2022 走看看