Galera cluster¶
Galera cluster jsou minimálně 3 instance MariaDB, ktere si synchronně replikují data. Toto řešení používáme u zákazníků, kde jsou vysoké nároky na dostupnost v kombinaci s potřebou škálovat výkon. Aby aplikace fungovala s takovým řešením korektně, je nutné aby respektovala omezení, která toto řešení má.
Jedna ze základních limitací je, že zápisové operace je nutné realizovat pouze jedním nodem v clusteru, requesty pro čtení je pak vhodné distribuovat přes všechny nody. Díky tomu se zabrání častému tvoření deadlocků při kolizních zápisových operacích a zároveň je korektně rozdělen výkon při čtecích operací . Optimální tedy je, aby aplikace vytvářela 2 spojení do databáze - zápisové query pak odbavuje jedno spojení a ostatní query druhé. Tato spojení se typicky realizují na loadbalancer, který pak zajistí následné spojení na konkrétní node v databázovém clusteru. Pokud aplikace takové rozdělení nemá a implementace by byla komplikovaná, je možné nainstalovat na loadbalancer MaxScale, který query optimálně rozdělí. Toto řešení je ale pochopitelně procesorově náročnější než jednoduché balancování tcp provozu.
Další omezení na které u projektů často narážíme je množství zápisových operací - je nutné si uvědomit, že zápisové operace se provádí na všech nodech , takže výkon pro zápisové operace neškáluje s množstvím serverů v clusteru. Naopak díky overheadu který díky nutnosti data replikovat na zbylé nody je výkon takových operací spíš nižší než v případě jednoserverové instalace.
Dalším limitem je velikost writesetu - v jedné zápisové operaci by nemělo dojít ke změnám více jak maximálně stovek MB dat. Takové query jsou extrémně náročné na zreplikování na ostatní nody. V případě že jsou tyto doporučené hodnoty překročeny, může v ojedinělých situacích dojít i k rozpadnutí celého clusteru, což vede obvykle k výpadku služby.