2

我已经使用 PostgreSQL 10 构建了一个主 -> 从设置,以将某些特定表中的数据同步到从机,这是公共系统。现在在整个过程中,我遇到了一些奇怪的行为:有些表根本不同步。

查看 PostgreSQL 日志,我遇到以下错误消息:

2018-06-07 15:28:30.163 CEST [4134] LOG:  worker process: logical replication worker for subscription 18249 sync 17956 (PID 6706) exited with exit code 1

2018-06-07 15:28:30.183 CEST [6707] ERROR:  duplicate key value violates unique constraint "producttext_pk"

2018-06-07 15:28:30.183 CEST [6707] DETAIL:  Key (id)=(100) already exists.

2018-06-07 15:28:30.183 CEST [6707] CONTEXT:  COPY producttext, line 1

为了进一步分析,我在从机上删除了这个表的主键,在这种情况下,错误不再发生,但是现在我在表中得到了重复的条目。

防止重复条目的唯一方法是将主键放在适当的位置,但是同步将无法正常工作,因为它一直在恰好四个表上循环,永远不会移动到其余的表。

我已经检查了角色和所有者,并且设置正确。如前所述,如果没有主键,一切都会同步,不会引发错误,但会创建重复条目。

在这一点上我可能错过了什么吗?非常感谢。

4

1 回答 1

0

您错过了您无法将行插入到备用数据库上的表中,这些行可能与从主数据库复制的 fows 冲突。

如果您需要在主数据库和备用数据库上都插入,则需要确保主键不冲突,例如,仅在一个上插入偶数 ID,在另一个上插入奇数 ID。

于 2018-06-07T16:20:24.820 回答