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