Postgresql12.6逻辑复制报错columns are missing处理

编程入门 行业动态 更新时间:2024-10-12 10:30:04

Postgresql12.6逻辑复制<a href=https://www.elefans.com/category/jswz/34/1771188.html style=报错columns are missing处理"/>

Postgresql12.6逻辑复制报错columns are missing处理

环境为华为云RDS,多个库逻辑订阅到一个库的不通schema,当时建好逻辑复制一直是正常的,当时突然开发说,订阅端的数据和发布端不一致。上去查看后,发现,逻辑复制已经停止,复制槽状态为false。
找了华为技术支持,发现日志报错为以下内容:

2021-06-07 15:00:31.676 +08::@:[11692]:LOG: logical replication apply worker for subscription "sub_kkcx" has started
2021-06-07 15:00:31.690 +08::@:[11692]:ERROR: logical replication target relation "kkcx.tbl_test" is missing some replicated columns

查看了两端的表结构,都是一致的。
查看逻辑复制异常的表如下:

 select pr.srrelid::regclass,pr.srsubstate,pr.srsublsn,ps.subname,pc.relowner::regrolefrom pg_subscription_rel pr,pg_class pc,pg_subscription ps where pr.srsubid=ps.oid and pr.srrelid=pc.oid and srsubstate='d' order by 4;srrelid          | srsubstate | srsublsn | subname  | relowner 
--------------------------+------------+----------+----------+----------kkcx.tbl_test            | d          |          | sub_kkcx | melotallkkcx.family_info_extra   | d          |          | sub_kkcx | melotallkkcx.channel_user        | d          |          | sub_kkcx | melotallkkcx.family_member       | d          |          | sub_kkcx | melotallkkcx.resource            | d          |          | sub_kkcx | melotallkkcx.cx_family_info      | d          |          | sub_kkcx | melotallkkcx.actor_bank_account  | d          |          | sub_kkcx | melotallkkcx.family_bank_account | d          |          | sub_kkcx | melotallkkcx.family_user         | d          |          | sub_kkcx | melotall

期间,把表移出复制,再加进去,然后订阅端刷新,一样无效。
最后在订阅端重建了subscription,才得以解决。

操作如下:

#删除订阅
drop subscription sub_kkcx ;
#新建订阅
CREATE SUBSCRIPTION sub_kkcx CONNECTION 'dbname=kkcx host=xxxx port=5432 user=root password=xxxxxxx' PUBLICATION pub_kkcx;
#truncate状态为d的表
truncate kkcx.tbl_test;
#刷新订阅
alter subscription sub_kkcx REFRESH PUBLICATION;

总结:
就是在发布端增加或者删除字段的时候,订阅端还没有删除,然后订阅端删除和发布端一致的时候,发布端的又和订阅端的不一致了,导致订阅端一致停留在之前的那个点,导致报错,就算两端字段再次一致了,还是无法继续复制。
所以建议在增加或者减少字段的时候,要查看两边的数据是否一致性,如果一致再进行增删操作,否则极易引起以上问题。

参考:
.html#a6151216

更多推荐

Postgresql12.6逻辑复制报错columns are missing处理

本文发布于:2024-02-11 15:00:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1681584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:报错   逻辑   columns   missing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!