微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从逻辑复制切换到流复制后无法从表中删除

如何解决从逻辑复制切换到流复制后无法从表中删除

在我的 DEV 服务器上我测试了逻辑复制,然后返回到流式传输。

现在wal_level = replica我有两个奴隶:

pid  |state     |application_name    |client_addr|write_lag      |flush_lag      |replay_lag     |sync_priority|sync_state|
-----|----------|--------------------|-----------|---------------|---------------|---------------|-------------|----------|
12811|streaming |db-slave1           |*.*.*.*    |00:00:00.000569|00:00:00.001914|00:00:00.001932|            0|async     |
25978|streaming |db-slave2           |*.*.*.*    |00:00:00.000568|00:00:00.001913|00:00:00.001931|            0|async     |

现在我创建了新表并插入了一条记录。例如:

create table test_delete (
    id int
);

insert into test_delete values (1);

delete from test_delete where id = 1;

该表已创建并复制到两个从站,但删除查询失败并显示错误

sql 错误 [55000]:错误:无法从表“test_delete”中删除,因为它没有副本标识并发布删除 提示:要启用从表中删除,请使用 ALTER TABLE 设置 REPLICA IDENTITY。

因此,在切换逻辑复制和从表中删除的能力之前,我需要帮助来恢复状态

解决方法

经过一番调查,我找到了解决方案。尽管 wal_level 在 postgres.conf 中发生了变化,但所有表仍然出现在 pg_publication_tables 中。 因此,用于检查发布状态:

select * from pg_publication_tables;

和删除记录:

drop publication <publication_name>;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。