PostgreSQL Ошибка репликации базы данных из-за нарушения дублирующего ключа - PullRequest
0 голосов
/ 14 февраля 2020

Я настроил две машины RHEL с конфигурацией резервирования (настройка мастер-мастер) с версиями программного обеспечения ниже.

  • База данных: PostgreSQL 9.5
  • Bucardo: Bucardo 5.4

Репликация базы данных идет гладко до некоторого момента времени, после чего репликация внезапно останавливается. Я мог видеть ниже виды утверждений в журнале bucardo.

*KID (database_sync) Conflicts for public.interface: 4
KID (database_sync) Conflicts have been resolved
KID (database_sync) Warning! Aborting due to exception for public.interface:? Error was DBD::Pg::db pg_putcopyend failed: ERROR:  duplicate key value violates unique constraint "interface_nodeid_ifindex_unique_idx"\nDETAIL:  Key (nodeid, ifindex)=(81, 1) already exists.\nCONTEXT:  COPY interface, line 2 at /usr/share/perl5/vendor_perl/Bucardo.pm line 9879.
KID (database_sync) Kid has died, error is: DBD::Pg::db pg_putcopyend failed: ERROR:  duplicate key value violates unique constraint "interface_nodeid_ifindex_unique_idx"\nDETAIL:  Key (nodeid, ifindex)=(81, 1) already exists.\nCONTEXT:  COPY interface, line 2 at /usr/share/perl5/vendor_perl/Bucardo.pm line 9879. Line: 5041 Main DB state: ? Error: none DB database_node1 state: ? Error: none DB database_node2 state: 23505 Error: 7
DBI::db=HASH(0x2e1a708)->disconnect invalidates 9 active statement handles (either destroy statement handles or call finish on them before disconnecting) at /usr/share/perl5/vendor_perl/Bucardo.pm line 2756.
DBI::db=HASH(0x2e1a828)->disconnect invalidates 9 active statement handles (either destroy statement handles or call finish on them before disconnecting) at /usr/share/perl5/vendor_perl/Bucardo.pm line 2756.
KID (database_sync) Kid 22825 exiting at cleanup_kid. Sync "database_sync" public.interface Reason: DBD::Pg::db pg_putcopyend failed: ERROR:  duplicate key value violates unique constraint "interface_nodeid_ifindex_unique_idx"\nDETAIL:  Key (nodeid, ifindex)=(81, 1) already exists.\nCONTEXT:  COPY interface, line 2 at /usr/share/perl5/vendor_perl/Bucardo.pm line 9879. Line: 5041 Main DB state:

? Ошибка: нет Состояние БД database_node1:? Ошибка: нет Состояние БД database_node2: 23505 Ошибка: 7 Запуск MCP check_sync_health *

Ниже приведены шаги, которые я выполнил для создания синхронизаций.

bucardo add database bucardo add table all --db="$database"_node1    --herd="$database"_herd 
bucardo add sequence all --db="$database"_node1 --herd="$database"_herd 
bucardo add dbgoup "$database"_group 
bucardo add dbgroup "$database"_group    "$database"_node1:source 
bucardo add dbgroup "$database"_group    "$database"_node2:source 
bucardo add sync "$database"_sync    herd="$database_herd"_herd dbs="$database"_group    conflict_strategy=bucardo_latest onetimecopy=2 stayalive=1    kidsalive=1 autokick=1 systemctl enable bucardo.service

Не могли бы вы помочь мне с ваши выводы по проблеме. Могут ли мои последовательности в моей БД отвечать за создание дублирующих записей в базе данных?

...