Postgresql:如果插槽存在,则使用 create_slot=false 创建订阅
Postgresql: create subscription with create_slot=false if slot exists
我在 ECS/Fargate 上有多个带有 Postgresql 逻辑副本数据库 运行 的容器。我想问问是否有人知道是否有可能创建这样的订阅(非常伪代码):
IF REPLICATION SLOT my_subscription EXISTS:
CREATE SUBSCRIPTION my_subscription CONNECTION [...]
WITH (create_slot=false);
ELSE:
CREATE SUBSCRIPTION my_subscription CONNECTION [...]
WITH (create_slot=true);
这对启动和/或重新启动数据库容器非常有帮助。
编辑:订阅在 Docker 个容器的 init.sql 中,因此订阅是在每个容器启动时创建的。
您可以使用 DO
语句并捕获错误:
DO
$$BEGIN
CREATE SUBSCRIPTION my_subscription ...;
EXCEPTION WHEN duplicate_object THEN
CREATE SUBSCRIPTION my_subscription ...
WITH (create_slot = false, slot_name = 'log_slot');
END;$$;
我在 ECS/Fargate 上有多个带有 Postgresql 逻辑副本数据库 运行 的容器。我想问问是否有人知道是否有可能创建这样的订阅(非常伪代码):
IF REPLICATION SLOT my_subscription EXISTS:
CREATE SUBSCRIPTION my_subscription CONNECTION [...]
WITH (create_slot=false);
ELSE:
CREATE SUBSCRIPTION my_subscription CONNECTION [...]
WITH (create_slot=true);
这对启动和/或重新启动数据库容器非常有帮助。
编辑:订阅在 Docker 个容器的 init.sql 中,因此订阅是在每个容器启动时创建的。
您可以使用 DO
语句并捕获错误:
DO
$$BEGIN
CREATE SUBSCRIPTION my_subscription ...;
EXCEPTION WHEN duplicate_object THEN
CREATE SUBSCRIPTION my_subscription ...
WITH (create_slot = false, slot_name = 'log_slot');
END;$$;