PostgreSQL 逻辑复制 - 忽略预先存在的数据

PostgreSQL logical replication - ignore pre-existing data

想象一下放弃订阅并从头开始重新创建它。是否可以在第一次同步时忽略现有数据?

无法使用 (copy_data=false) 创建订阅,因为我 确实想要复制数据 ,我只是不想 已经复制现有条数据。


示例:master 上有一个users table 和相应的发布。 table 有 100 万行,每分钟添加一个新行。然后我们取消订阅一天。

如果我们使用 (copy_data=true) 重新创建订阅,由于与现有数据冲突,复制将不会开始。如果我们指定 (copy_data=false),将丢失 1440 个新行。我们如何正确同步发布者和订阅者?

你不能那样做,因为 PostgreSQL 无法判断数据是何时添加的。

您必须手动核对表格(或 INSERT ... ON CONFLICT DO NOTHING)。