开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

polardb16.0的逻辑订阅是不是有BUG ? 出现id主键冲突报错

polardb16.0的逻辑订阅是不是有BUG ? 出现id主键冲突报错

展开
收起
三分钟热度的鱼 2024-01-17 17:21:56 57 0
1 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    确实存在一种情况,当使用逻辑订阅时可能会出现主键冲突的问题。这主要发生在通过Hint下推导致物理分片分配ID后,Sequence无法感知到而分配了冲突的ID。在这种情况下,PostgreSQL不会像MySQL一样在每次插入数据时重新确认自增主键的取值,而是会使用缓存来提高效率。这就可能导致某些情况下插入数据(例如SQL语句中指定了ID)不会更新这个自增主键下一个取值的缓存,进而在下次插入时触发错误。

    处理这种问题的主要有两种方法:一种是手动修改订阅库上的数据,使发布端传过来的SQL可以在订阅端上执行;另一种是通过调用pg_replication_origin_advance()函数来跳过当前的事务。这两种方法都可以有效地解决主键冲突的问题。

    2024-01-18 14:16:14
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关电子书

更多
PolarDB+AnalyticDB助力交通物流行业系统升级 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载