0

我对 postgres 很陌生,而且是新手,我被卡在了一个点上,需要一些帮助,如果你觉得它很傻,请原谅。

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

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

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

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

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

有没有办法让主从在同一时间线?

4

3 回答 3

1

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

“pg_basebackup -P -R -X 流 -c 快速 -h 10.10.40.105 -U postgres -D 待机/”

于 2018-04-17T09:29:49.500 回答
0

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

我不确定“当我切换回原来的主服务器时”的确切含义,但看起来你在 PostgreSQL 流复制中做了最错误的事情- 引入了第二个主服务器。

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

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

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

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

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

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

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

我建议您阅读本教程- 它会有所帮助。

于 2016-05-30T16:04:01.060 回答
0

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

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

您也可以在这里精益自动故障转移。

于 2016-05-18T09:59:31.613 回答