Postgres - BDR复制 - auto_increment主键的问题

问题描述 投票:0回答:1

我有一个Postgres BDR集群,有2个节点(多主复制)。我创建了一个带有自动增量主键的表,如下所示:

create table t1 (id serial primary key, name text);

我在node1上添加了一些值:

insert into t1(name) values('foo');

现在当我尝试从node2向该表添加另一个值时,我收到该错误:

ERROR:  duplicate key value violates unique constraint "t1_pkey"
DETAIL:  Key (id)=(1) already exists.
postgresql database-replication database-sequence postgres-bdr
1个回答
0
投票

您的问题是两个数据库都有自己的序列,这些序列是数据库的本地序列而不是复制的。这会导致复制冲突。

您可以执行以下操作:

  • 使用BDR专有的全局序列。
  • 在一个数据库中使用START 1 INCREMENT2的序列,在另一个数据库中使用START 2 INCREMENT 2,这样序列值就不会发生冲突。
  • 使用全局唯一的UUID。
© www.soinside.com 2019 - 2024. All rights reserved.