postgres中不同时间轴的主服务器和备用服务器

时间:2016-05-11 06:41:45

标签: postgresql replication pgpool

我对postgres非常陌生并且是新手我遇到了困难并且需要一些帮助,请原谅,如果你发现它很愚蠢。

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

  • 奴隶1主要的最高时间轴1落后于恢复时间轴11
  • 奴隶2 - 主要的最高时间轴1落后于恢复时间轴10
  • 奴隶3 - 主要的最高时间轴1在恢复时间轴3后面

我尝试删除slave中的pg_xlog文件,并将master pg_xlog中的所有文件复制到slave中,然后执行rsync。 我也做了pg_rewind,但它说:

  

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

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

有没有办法让主设备和从设备在同一时间线上?

3 个答案:

答案 0 :(得分:0)

我认为你的pgpool配置有问题。您一直用于复制和主从控制的工具是什么?它是post master还是repmgr?

我尝试使用http://jensd.be/591/linux/setup-a-redundant-postgresql-database-with-repmgr-and-pgpool中的教程配置包含3个数据节点的pgpool,并且已正确完成。

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

答案 1 :(得分:0)

(这些问题显然与this one重复,所以我也会重复这个问题。)

我不确定你到底是什么意思&#34;当我切换回原来的主人&#34;但是看起来你在PostgreSQL流媒体复制中做了最糟糕的事情< / strong> - 介绍第二个主人。

关于PostgreSQL复制,您应该了解的最重要的事情是,一旦执行了故障转移,您就不能简单地切换回原始主服务器&#34; - 现在群集中有一个新的主人,两个主人的存在会造成伤害。

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

  1. 销毁它(删除数据目录);
  2. 加入它作为奴隶。
  3. 如果您希望它再次成为主人,您将继续以下内容:

    1. 让它作为奴隶运行一段时间,以便它可以同步数据;
    2. 杀死临时主人并故障转移到老主人;
    3. 再次作为奴隶重新加入临时主人。
    4. 您不能简单地切换主服务器!只能通过故障转移(提升从属)

      创建主服务器

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

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

答案 2 :(得分:0)

在我的情况下,它发生的原因是(实验性地),我更新了备用数据库表,当我模拟主 - 备用流复制时,我得到了相同的错误。 所以我再一次清理了整个备用数据库目录,并使用像

这样的cmd迁移master数据库

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