Přeskočit obsah

Autoincrement u MariaDB Master-Master replikace

V případě nasazení replikace MariaDB typu master-master je nutné nastavit na každém serveru různé hodnoty pro auto_increment. Pokud by byly oba servery ponechány ve výchozím nastavení, docházelo by ke kolizím:

Error ‘Duplicate entry ‘1’ for key ‘PRIMARY” on query (volaný SQL příkaz)

Tento problém řeší dvě direktivy v nastavení MariaDB: auto_increment_offset a auto_increment_increment. První, auto_increment_offset udává počáteční hodnotu, ke které je přičítáno a auto_increment_increment udává, o kolik je jedním inkrementem přičteno. Jejich nastavení pak záleží na počtu replikovaných serverů, cílem je, aby nemohly na žádném z nich vzniknout záznamy s duplicitním ID.

Při správném nastavení a rovnoměrném vkládání záznamů na všechny master servery se při vzájemné replikaci nakonec automaticky inkrementovaná ID sejdou tak, že následují po jedné. Ale než se tak stane, budou v posloupnosti čísel záznamů trhliny, stejně tak, pokud jsou záznamy výhradně či převážně vkládány pouze na jeden server. Je potřeba, aby s tímto webová aplikace počítala a nepředstavovalo to pro ní problém. Před nasazením replikace typu master-master je nutné toto zvážit a případně na to aplikace připravit.