逻辑复制禁止复制源端COPY导入的数据

📅 发布时间:2026/7/9 1:42:02 👁️ 浏览次数:
逻辑复制禁止复制源端COPY导入的数据
文章目录环境症状问题原因解决方案环境系统平台N/A版本9.0,6.0,5.6.5,4.5.9,4.3.4.9,4.7.8症状数据库进行逻辑复制部署时订阅端同步发布端数据失败日志报错为表字段为违反唯一约束copy报错。2024-06-12 16:52:37.564 CST [24128] ERROR: duplicate key value violates unique constraint a_pkey 2024-06-12 16:52:37.564 CST [24128] DETAIL: Key (id)(1) already exists. 2024-06-12 16:52:37.564 CST [24128] CONTEXT: COPY tb_tas, line 1问题原因默认情况下创建逻辑复制会copy订阅端基量数据订阅端存在与发布端相同唯一约束的数据的情况会导致数据冲突。解决方案如果不需要订阅端的数据全部基量数据都从发布端同步获取的话需要执行如下步骤清空目标端表数据。清空完毕后会自动重新进行同步直至两边同步一致。truncatetb_tas;注意务必确认好执行环境避免误删数据。下面是执行完毕后自动恢复同步的日志。2024-06-12 16:57:00.696 CST [24392] LOG: logical replication table synchronization worker for subscription sub, table tb_tas has finished如果需要订阅端的数据不打算从发布端同步基量数据。需要先将该表从发布集中剔除然后重新添加进去并跳过基量数据复制。具体步骤如下#发布端剔除表alterpublication pubdroptabletb_tas;#订阅端执行刷新altersubscription sub refresh publication;#发布端重新添加该表alterpublication pubaddtabletb_tas;#订阅端执行刷新并忽略copy_dataaltersubscription sub refresh publicationWITH(COPY_DATAfalse);