Přeskočit obsah

MariaDB replikace

MariaDB, resp. MySQL, podporuje nativně replikaci master->slave.

Typické využití této replikace je zálohování - je možné vytvářet zálohy databáze na slave serveru a zálohou pak není afektovaný produkční server. Pokud jsou oba databázové servery stejné, je možné tento scénář použít i jako failover - při problému s master serverem je možné provoz přesunout na slave server.

Druhý scénář použití je asynchronní master-master replikace ( technicky dvě master->slave replikace křížem ). Tento deployment slouží především pro failover, při intenzivním zápisu na oba nody současně může i přes vyřešené kolize v klíčích docházet k problémům a to především při složitých zápisových query. Kolize klíčů se řeší tak, že jeden server při autoincrementu dává ID lichá a druhý sudá. Pokud generujete id v aplikaci a nespoléháte na autoincrement, není možné takovou aplikaci na této konfiguraci provozovat. 

Limity replikace jsou dány technologií, kterou je replikace prováděna - tedy streamování transakčního logu na druhý node, kde jsou všechny zápisové operace prováděny.  Po zaslání náročné zápisové operace, může dojít k opoždění repliky a pokud je replika opožděna o delší dobu než je historie transakčních logů, je repliku nutné obnovit. Replika se vyjímečně rozpadne i z jiných důvodů, nejčastěji to jsou kolize klíčů ( typicky pokud aplikace proti slave serveru pošle zápisovou operaci ).

Obnova repliky znamená vytvoření kopie úložiště dat z druhého serveru a jeho přenesení na slave server, kde následně dojde ke zkonfigurování a slave server si dosynchronizuje zbytek dat. Pokud jsou využívány tabulky typu InnoDb, obvykle vytváření kopie nezpůsobuje provozní komplikace. U MyISAM tabulek však při kopírování je nutné zajistit jejich integritu a z toho důvodu je nad tabulkou vytořen zámek, který dočasně omezí práci s touto tabulkou. Pokud Vás naši administrátoři kontaktují z důvodu nutnosti obnovi replikace, tak u databází s MyISAM tabulkami počítejte s výpadkem služeb.