sql >> Databáze >  >> RDS >> MariaDB

Co je nového v MySQL Galera Cluster 4.0

MySQL Galera Cluster 4.0 je nové dítě na databázovém bloku s velmi zajímavými novými funkcemi. V současné době je k dispozici pouze jako součást MariaDB 10.4, ale v budoucnu bude fungovat také s MySQL 5.6, 5.7 a 8.0. V tomto příspěvku na blogu bychom rádi probrali některé z nových funkcí, které přišly s Galera Cluster 4.0.

Replikace streamování Galera Cluster

Nejdůležitější novou funkcí v této verzi je streamování replikace. Certifikační proces pro Galera Cluster dosud fungoval tak, že celé transakce musely být certifikovány po jejich dokončení.

Tento proces nebyl v několika scénářích ideální...

  1. Hotspoty v tabulkách, řádky, které jsou velmi často aktualizovány na více uzlech - stovky rychlých transakcí běžících na více uzlech, úprava stejné sady řádků má za následek časté zablokování a vrácení transakcí
  2. Dlouho trvající transakce - pokud dokončení transakce trvá delší dobu, výrazně to zvyšuje pravděpodobnost, že nějaká jiná transakce mezitím na jiném uzlu změní některé řádky, které byly také aktualizovány dlouhou transakcí. To vedlo k uváznutí během certifikace a jedna z transakcí musela být vrácena zpět.
  3. Velké transakce - pokud transakce modifikuje významný počet řádků, je pravděpodobné, že jiná transakce ve stejnou dobu na jiném uzlu změní jeden z řádků již upravených velkou transakcí. To má za následek uváznutí během certifikace a jedna z transakcí musí být vrácena zpět. Kromě toho bude zpracování velkých transakcí, jejich odeslání do všech uzlů v clusteru a certifikace trvat déle. Toto není ideální situace, protože přidává zpoždění k potvrzením a zpomaluje celý cluster.

Tyto problémy naštěstí dokáže vyřešit streamingová replikace. Hlavním rozdílem je, že certifikace probíhá po částech, kde není třeba čekat na dokončení celé transakce. Výsledkem je, že i když je transakce velká nebo dlouhá, většina (nebo všechny, v závislosti na nastavení, které si probereme za chvíli) řádků je uzamčena na všech uzlech, což ostatním dotazům brání v jejich úpravě.

Možnosti replikace streamování clusteru MySQL Galera

Existují dvě možnosti konfigurace pro streamování replikace: 

wsrep_trx_fragment_size 

To říká, jak velký by měl být fragment (ve výchozím nastavení je nastavena na 0, což znamená, že replikace streamování je zakázána)

wsrep_trx_fragment_unit 

To říká, jaký fragment skutečně je. Ve výchozím nastavení jsou to bajty, ale může to být také „příkazy“ nebo „řádky“.

Tyto proměnné mohou (a měly by být) nastaveny na úrovni relace, což uživateli umožňuje rozhodnout, který konkrétní dotaz by měl být replikován pomocí streamingové replikace. Nastavení jednotky na ‚příkazy‘ a velikosti na 1 umožňuje například použít streamovací replikaci pouze pro jeden dotaz, který například aktualizuje hotspot.

Můžete nakonfigurovat Galera 4.0 tak, aby certifikovala každý řádek, který jste upravili, a přitom zachytila ​​zámky na všech uzlech. Díky tomu je streamingová replikace skvělá při řešení problémů s častými zablokováními, které bylo před Galerou 4.0 možné vyřešit pouze přesměrováním všech zápisů do jediného uzlu.

Tabulky WSREP

Galera 4.0 zavádí několik tabulek, které pomohou monitorovat stav clusteru:

  • wsrep_cluster
  • wsrep_cluster_members
  • wsrep_streaming_log

Všechny jsou umístěny ve schématu „mysql“. wsrep_cluster poskytne přehled o stavu clusteru. wsrep_cluster_members vám poskytne informace o uzlech, které jsou součástí klastru. wsrep_streaming_log pomáhá sledovat stav streamované replikace.

Připravované funkce Galera Cluster

Codership, společnost stojící za Galerou, ještě není hotová. Podařilo se nám získat náhled plánu od generálního ředitele Seppa Jaakoly, který byl předán na Percona Live začátkem tohoto roku. Zřejmě se dočkáme funkcí, jako je podpora transakcí XA a šifrování gcache. To je opravdu dobrá zpráva.

Podpora XA transakcí bude možná díky streamingové replikaci. Stručně řečeno, transakce XA jsou distribuované transakce, které mohou běžet přes více uzlů. Využívají dvoufázové potvrzení, které vyžaduje nejprve získat všechny požadované zámky pro spuštění transakce na všech uzlech a poté, jakmile je hotovo, potvrdit změny. V předchozích verzích Galera neměla prostředky k uzamčení zdrojů na vzdálených uzlech, s replikací streamování se to změnilo.

Gcache je soubor, který ukládá sady zápisů. Jeho obsah je odeslán do spojovacích uzlů, které požádají o přenos dat. Pokud jsou všechna data uložena v gcache, joiner obdrží pouze chybějící transakce v procesu zvaném Incremental State Transfer (IST). Pokud gcache neobsahuje všechna požadovaná data, bude vyžadován State Snapshot Transfer (SST) a celá datová sada bude muset být přenesena do připojujícího se uzlu.

Gcache obsahuje informace o nedávných změnách, proto je skvělé vidět její obsah zašifrovaný pro lepší zabezpečení. Se zaváděním lepších bezpečnostních standardů prostřednictvím stále většího počtu předpisů je zásadní, aby se software zlepšil v dosahování souladu.

Závěr

Rozhodně se těšíme, jak se Galera Cluster 4.0 osvědčí na databázích než MariaDB. Možnost nasadit MySQL 5.7 nebo 8.0 s Galera Cluster bude opravdu skvělá. Koneckonců, Galera je jedním z nejvíce testovaných řešení synchronní replikace, která jsou na trhu dostupná.


  1. Jak funguje funkce UCASE() v MySQL

  2. SQLite EXISTUJE

  3. Automatické zvýšení v Oracle bez použití spouštěče

  4. Nelze vytvořit požadovanou službu [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]