Postgres - репликация BDR - проблема с первичным ключом auto_increment - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть кластер Postgres BDR, который имеет 2 узла (репликация с несколькими мастерами).Я создал таблицу с автоинкрементным первичным ключом следующим образом:

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

Я добавил некоторые значения в эту таблицу из узла 1:

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

и теперь, когда я пытаюсьдобавить еще одно значение в эту таблицу из узла 2, я получаю эту ошибку:

ERROR:  duplicate key value violates unique constraint "t1_pkey"
DETAIL:  Key (id)=(1) already exists.

1 Ответ

0 голосов
/ 12 февраля 2019

Ваша проблема в том, что обе базы данных имеют свои собственные последовательности, которые являются локальными для базы данных и не реплицируются.Это вызывает конфликты репликации.

Вы можете сделать следующее:

  • Использовать проприетарную BDR глобальную последовательность .
  • Использовать последовательностьс START 1 INCREMENT2 в одной базе данных и START 2 INCREMENT 2 в другой, так что значение последовательности не может конфликтовать.
  • Используйте UUID, которые являются глобально уникальными.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...