当前位置: 首页 > 知识库问答 >
问题:

复制插槽错误

王佐
2023-03-14

我使用POSGTRESQL10。

我想将数据库“DB”中的2个表复制到数据库“Destination”中具有相同列的两个表中。

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;
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”2020-04-12 16:16:57.889 CEST[720474]错误:无法从WAL流中接收数据:错误:未在此数据库中创建复制插槽“test_slot_v1”2020-04-12 16:16:57.890 CEST[712133]日志:工作进程:订阅的逻辑复制工作程序245251(PID 720474)用退出代码退出1

我确信我在保存订阅的数据库“destination”中创建了插槽。

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

共有1个答案

邵君植
2023-03-14

我将回答我的问题:Postgresql希望在我创建发布的数据库“DB”中创建插槽,而不是在我创建订阅的数据库“Destination”中创建插槽。

我所做的:psql\c目的地删除订阅my_subscription;\q psql\c db选择pg_create_logical_replication_slot('test_slot_v1','pgoutput');\q psql\c目标创建订阅my_subscription连接'host=localhost port=5432 password=my_password user=my_user dbname=db'发布my_publication WITH(Slot_name=test_slot_v1,create_slot=false);

似乎不需要这个命令:alter subscription my_subscription refresh Publishy;

 类似资料:
  • 在视图模板中可以通过 slot 声明一个插槽的位置,其位置的内容可以由外层组件定义。 var Panel = san.defineComponent({ template: '<div>' + ' <div on-click="toggle">title</div>' + ' <p style="{{fold | yesToBe(\'display:no

  • 本文向大家介绍vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】,包括了vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了vue 使用插槽分发内容操作。分享给大家供大家参考,具体如下: 单个插槽 除非子组件模板包含至少一个 <slot> 插口,否则父组件的内容将会被丢弃。当子组件模板只有一个没有属性的插槽时,父

  • 我已经在 azure DevOps 中创建了一个管道和发布,但在我执行槽的交换之前,我需要将文件从“生产”槽复制到我的“暂存”槽。这是因为我们的客户将文件上传到Web应用程序本身(至少现在是这样)。 我一直在做一些研究,我认为这在azure DevOps中的任务是不可能的。我认为它可以使用动力壳。 以前有人这样做过吗?

  • 我在AWS ECS上运行apache-airflow 1.8.1,我有一个AWS ElastiCache集群(redis 3.2.4),运行2个碎片/2个节点,启用多AZ(集群redis引擎)。我已经验证了气流可以毫无问题地访问集群的主机/端口。 这是日志:

  • vue: "3.3.4" pug: "3.0.2" 只有具名插槽报错,默认的正常 ToolBar 报错: 网上能找到的方法都试了,没用。如下: 还有一个不知道怎么用:

  • 问题内容: 我试图在Redis上一次插入多个键/值(有些值是集合,有些是散列),但出现此错误:。 我不是从某些需要将多个键/值写入Redis集群的Go代码中执行此操作。我看到代码中的其他地方以这种方式完成了多个键值,但我不明白为什么我的那个不起作用。没有此错误的哈希要求是什么? 谢谢 问题答案: 在集群拓扑中,键空间分为哈希槽。不同的节点将持有哈希槽的子集。 仅当涉及的所有键都在属于同一节点的哈希