首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql复制槽错误postgresql

Postgresql复制槽错误postgresql
EN

Stack Overflow用户
提问于 2020-04-12 14:35:48
回答 1查看 4.1K关注 0票数 2

我用Posgtresql 10。

我希望将两个表从数据库"db“复制到相同的两个表,在数据库”目的“中具有相同的列。

将wal_level值更改为postgresql.conf和max_replication_slots中的逻辑值为10

无防火墙

我在数据库"db“中创建了该出版物。

代码语言:javascript
复制
ALTER ROLE my_user WITH REPLICATION LOGIN PASSWORD 'my_password';
CREATE PUBLICATION my_publication;
ALTER PUBLICATION my_publication ADD TABLE table1;
ALTER PUBLICATION my_publication ADD TABLE table2;

我在数据库中创建了一个带有时隙的子系统,因为我想在同一台服务器上复制:

代码语言:javascript
复制
SELECT pg_create_logical_replication_slot('test_slot_v1', 'pgoutput');
CREATE SUBSCRIPTION my_subscription CONNECTION 'host=localhost port=5432 password=my_password user=my_user dbname=db' PUBLICATION my_publication WITH (slot_name=test_slot_v1, create_slot=false);
alter subscription my_subscription refresh publication ;

第一次复制工作。然后,当我更改一个varchar条目(而不是FK)的值时,该值不会被复制,并且postgres日志中有以下错误:

2020-04-12 16: 16: 57.886 CEST 720474日志:订阅"my_subscription“的逻辑复制应用进程已启动2020-04-12 16: 16: 57.888 CEST 720475错误:该数据库中没有创建复制槽"test_slot_v1”16: 16: 57.889 CEST 720474错误:无法从WAL流接收数据:该数据库中没有创建复制槽"test_slot_v1“04-12 16: 16: 57.890 CEST 712133日志:工作流程:订阅245251的逻辑复制工作器(PID 720474)退出,退出代码1

我确信我在包含订阅的数据库“目的”中创建了一个槽。

有什么想法吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 15:04:14

我将回答我的问题: Postgresql希望在创建发布的数据库"db“中创建时隙,而不是在创建订阅的数据库”目的地“中创建槽。

我所做的:

代码语言:javascript
复制
psql
\c destination
drop subscription my_subscription;
\q
psql
\c db
SELECT pg_create_logical_replication_slot('test_slot_v1', 'pgoutput');
\q
psql
\c destination
CREATE SUBSCRIPTION my_subscription CONNECTION 'host=localhost port=5432 password=my_password user=my_user dbname=db' PUBLICATION my_publication WITH (slot_name=test_slot_v1, create_slot=false);

似乎不需要此命令:更改订阅my_subscription刷新发布;

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61173094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档