31.3. 冲突
逻辑复制的行为与普通的DML操作类似,因为即使订阅者节点本地更改了数据, 数据也将被更新。如果传入数据违反任何限制,复制将停止。 这被称为冲突。当复制UPDATE
或者DELETE
操作时,丢失的数据不会产生冲突,这样的操作将被忽略。
冲突会产生错误,并会停止复制;它必须由用户手动解决。 有关冲突的详细信息可以在订阅者的服务器日志中找到。
解决方案可以通过更改订阅者上的数据来完成,以免它与传入的更改冲突, 或者跳过与现有数据冲突的事务。事务可以通过调用 pg_replication_origin_advance()
函数使用node_name
对应订阅名称和位置来跳过。 源的当前位置可以在 pg_replication_origin_status
系统视图中看到。
本文转自PostgreSQL中文社区,原文链接:31.3. 冲突