Postgres-BDR复制-auto_increment主键问题

时间:2019-02-12 09:23:52

标签: postgresql database-replication database-sequence postgres-bdr

我有一个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.

1 个答案:

答案 0 :(得分:0)

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

您可以执行以下操作:

  • 使用BDR专有的全局序列
  • 在一个数据库中使用START 1 INCREMENT2,在另一个数据库中使用START 2 INCREMENT 2的序列,这样序列值就不会冲突。
  • 使用全局唯一的UUID。