【问题标题】:Primary and standby server at different timelines in postgrespostgres中不同时间线的主服务器和备用服务器
【发布时间】:2016-05-11 06:41:45
【问题描述】:

我对 postgres 很陌生,而且我是新手,我遇到了一个问题,需要一些帮助,如果你觉得这很愚蠢,请原谅。

我正在做一个 pgpool HA 并且在 postgres 级别我在 postgresql-9.5 的 3 个节点之间进行流复制 - 1 个主节点和 2 个从节点 我试图配置自动故障转移,但是当我切换回原来的主服务器并重新启动 postgres 服务时,我收到以下错误:

  • 从属设备 1 - 主设备的最高时间线 1 落后于恢复时间线 11
  • 从属设备 2 - 主设备的最高时间线 1 落后于恢复时间线 10
  • 主要的从属 3 最高时间线 1 落后于恢复时间线 3

我尝试删除从属服务器中的 pg_xlog 文件并将所有文件从主服务器pg_xlog 复制到从属服务器,然后进行 rsync。 我也做了一个pg_rewind 但它说:

目标服务器需要使用数据校验和或wal_log_hints = on

(我已经在 postgresql.conf 中设置了wal_log_hints = on) 我尝试过pg_basebackup,但由于从属服务器中的数据库服务器仍在启动,因此无法连接到服务器

有没有什么办法可以让master和slave在同一时间线?

【问题讨论】:

    标签: postgresql replication pgpool


    【解决方案1】:

    在我的例子中,发生这种情况是因为(通过实验),我更新了备用数据库表,当我模拟主备流复制时,我再次遇到了同样的错误。 所以我再次清理了整个备用数据库目录并使用 cmd 迁移主数据库,如

    “pg_basebackup -P -R -X stream -c fast -h 10.10.40.105 -U postgres -D standby/”

    【讨论】:

      【解决方案2】:

      我认为您的 pgpool 配置有问题。您一直在使用什么工具来管理复制和主从控制?是post master还是repmgr?

      我正在尝试使用来自http://jensd.be/591/linux/setup-a-redundant-postgresql-database-with-repmgr-and-pgpool 的教程配置具有 3 个数据节点的 pgpool,并且做得正确。

      您还可以在此处进行自动故障转移。

      【讨论】:

        【解决方案3】:

        (这个问题显然是this one的重复问题,所以我也会重复答案。)

        我不确定您所说的“当我切换回原来的主服务器时”究竟是什么意思,但看起来您在 PostgreSQL 流复制中做的最错误的事情 - 介绍第二个主人。

        关于 PostgreSQL 复制,你应该知道的最重要的一点是,一旦执行了故障转移,你不能简单地“切换回原来的 master”——现在集群中有一个新的 master,两个 master 的存在会造成损坏。

        从奴隶晋升为主人后,您重新加入旧主人的唯一方法是:

        1. 销毁它(删除数据目录);
        2. 作为奴隶加入它。

        如果您希望它再次成为主人,您将继续以下操作:

        1. 让它作为从机运行一段时间,以便同步数据;
        2. 杀死临时主节点并故障转移到旧主节点;
        3. 作为从属重新加入临时主控。

        您不能简单地切换主服务器!只能通过故障转移(提升从属)来创建主控

        您还应该知道,无论何时执行故障转移(无论何时更改主服务器),都需要重新配置所有从服务器(升级的从服务器除外)以针对新的主服务器。

        我建议你阅读this tutorial - 它会有所帮助。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-14
        相关资源
        最近更新 更多