首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pglogical复制插入是否需要主键?

使用pglogical复制插入是否需要主键?
EN

Stack Overflow用户
提问于 2018-02-05 23:37:02
回答 1查看 915关注 0票数 2

我尝试使用pglogical设置一个简单的主>从复制。pglogical docs提到需要一个主键来复制更新和删除。由于两者都不需要,因此我在提供程序中设置了一个复制集,如下所示:

代码语言:javascript
复制
SELECT pglogical.create_replication_set(
set_name := 'all_remote_tables', 
replicate_insert := true, 
replicate_update := false,
replicate_delete := false,
replicate_truncate := false);

然后我添加了我的表:

代码语言:javascript
复制
SELECT pglogical.replication_set_add_table(
set_name := 'all_remote_tables',
relation := 'measurements',
synchronize_data := true);

我的订阅者设置如下:

代码语言:javascript
复制
SELECT pglogical.create_subscription(
subscription_name := 'testsubscription1',
provider_dsn := 'host=$host port=$port dbname=$dbname user=$user password=$pw', 
replication_sets := array['all_remote_tables'],
synchronize_structure := true,
synchronize_data := true,
forward_origins := '{}');

使用此设置和如下的表格布局:

代码语言:javascript
复制
CREATE TABLE "measurements"(    
time        TIMESTAMP WITH TIME ZONE NOT NULL,   
value       NUMERIC,
sensor_id   TEXT);

仅复制该结构。

只要我添加一个主键:

代码语言:javascript
复制
CREATE TABLE "measurements"(            
id          SERIAL PRIMARY KEY, 
time        TIMESTAMP WITH TIME ZONE NOT NULL,   
value       NUMERIC,
sensor_id   TEXT);

一切都在按预期进行。

因为我希望存储高频的时间序列(使用timescaledb),并且永远不需要更新/删除单个行,所以在这里我看不到主键的好处。因此,我想知道pglogical是否在没有主键的情况下就不能工作,或者我是否做了一些错误的配置。

预构建的复制集"default_insert_only“在没有任何主键的情况下工作,但我想使用我自己的复制集。

有点离题:对于简单的多主机复制而不是特定表的一个从复制(= aggregation),您会推荐使用pglogical吗?因为postgres 10逻辑复制无论如何都是核心的一部分。

EN

回答 1

Stack Overflow用户

发布于 2018-02-06 18:23:19

为此,您不需要自定义复制集,已有用于此目的的预先存在的default_insert_only集。查看pglogical docs中的"2.4复制集“一章。

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

https://stackoverflow.com/questions/48626089

复制
相关文章

相似问题

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