如何正确设置逻辑postgresql复制(两种方式)?

How to set up logical postgresql replication correctly (two ways)?

我无法解决这个问题:

如果有 2 个 postgresql 服务器,则使用一些 tables 的逻辑复制(发布,订阅者),如果它在一个方向上工作 - 一切都很好,但恐怖开始在两个方向上。

那些。在 server1 和 server2 上有相同的数据库和相同的任务 table。 根据副本,从server1到server2只传输INSERT和UPDATE,然后在server2上,逻辑处理任务并写入更新状态到任务,相应地飞回server1(只有UPDATE被带回服务器)。

问题是我们得到了一个循环副本(在第一台服务器上设置状态 1 就足够了,然后在服务器 2 上设置状态 2 我们看到在我们的 tables 中任务的状态将从 1 到 2 无限变化,反之亦然,这使得数据变得困难并且乱丢日志。 不幸的是,没有办法改变应用程序逻辑。从想法上来说,只在必要时包含一个return响应(即不是实时的,而是根据一定的时间表,以便状态固定)

正如@JosMac 已经提到的,您需要 Multi-master replication, which is currently not supported in the PostgreSQL core (v11-12 at the date). There are various Multi-master solutions for PostgreSQL, but if you want to stick to the open-source you can try Postgres-XL.