Begin dit jaar vraagt een opdrachtgever na te gaan of er een MySQL-managementsysteem voorhanden is dat de mogelijkheid biedt om onderhoud uit te voeren aan de onderliggende databasenodes, zónder downtijd van de databaseservice. De klantomgeving eist namelijk hoge beschikbaarheid, maar tegelijkertijd ook dat OS-systemen regelmatig voorzien worden van de laatste security-patches.

Na het nodige onderzoek valt mijn keuze uiteindelijk op Percona XtraDB Cluster.

MySQL en MariaDB zijn ‘s-werelds meestgebruikte databasemanagementsystemen. MariaDB is een code fork van MySQL. Beide zijn Open Source en kosteloos te gebruiken, ook voor commerciële doeleinden. Percona voegt daar monitoring- en back-up-software, enterprise grade support en meer aan toe. Zoals eigen Open Source databasemanagementsystemen, en een eigen aangepaste en geoptimaliseerde versie van MySQL genaamd Percona Server.

Alle Percona databasereleases zijn overigens ook weer gratis inzetbaar, óók voor commerciële doeleinden.

Percona XtraDB Cluster 8 is het op MySQL versie 8 gebaseerde Galera Cluster dat eind april 2020 is uitgebracht. Het maakt gebruik van de Galera 4-plugin. Het product is gebouwd met als uitgangspunt het vertrekpunt van mijn zoektocht: dat het databasecluster altijd beschikbaar dient te zijn.

De Galera 4-plugin, ontwikkeld door Codership, zorgt ervoor dat er synchrone replicatie plaatsvindt tussen alle masters binnen het databasecluster. Een databasetransactie wordt pas gecommitteerd bevonden als alle masters binnen het cluster dit hebben bevestigd. Hierdoor bevatten alle nodes binnen het cluster altijd dezelfde data.

Prima fundament voor het systeem dat we voor ogen hebben

Geo-gedistribueerde replicatie waarbij zogeheten lag kan ontstaan, is in de Galera 4-plugin met de nieuwe Streaming Replication-techniek bovendien verbeterd, waarbij write sets tot 2GB mogelijk zijn. Dat maakt het behalve een ware ook een snelle hoogbeschikbare multi-master-database, en dat dus op basis van bewezen replicatietechnologie, en – had ik dit al gezegd? – geheel gratis te gebruiken!

Het verhaal wordt nog beter, want, waar het uiteindelijk om te doen is, mocht 1 van de cluster nodes uitvallen of down gaan voor onderhoud, dan blijft de databaseservice gewoon beschikbaar. Nadat de uitgevallen node weer terug is, synchroniseert de node weer automatisch mee met de andere nodes binnen het cluster.

Precies waardoor je vrij eenvoudig onderhoud kunt uitvoeren aan de onderliggende systemen, terwijl je de databaseservice toch 24×7 beschikbaar houdt.

De Galera 4-plugin is al een tijdje beschikbaar voor MariaDB 10.4 en nu ook voor MySQL 8. Ondersteuning voor XA-transacties of gedistribueerde transacties wordt nu ook ondersteund in MariaDB 10.5 en naar verwachting ook in MySQL 8 later dit jaar. Of er versies van Percona XtraDB Cluster komen die MySQL 5.7 nog ondersteunen is niet geheel zeker, dat zal afhangen van de communityvraag hiernaar.

Nog meer noemenswaardigs?

Zeker. Loadbalancing over de master nodes van het Percona XtraDB Cluster met ProxySQL 2. ProxySQL is een high-performing application-layer proxy voor MySQL die, in combinatie met KeepAlived, een hoog beschikbaar loadbalancing levert. ProxySQL is verder in staat om automatisch failovers uit te voeren en read & writes binnen het cluster te verdelen én nog veel meer.

De combinatie van ProxySQL en Percona XtraDB cluster 8 maakt het databasecluster effectief tot een robuust geheel.

Ten slotte, rest me nog te melden dat Percona XtraDB Cluster 8 er ook is voor Kubernetes. Wat veelbelovend is met alle eerder besproken functionaliteiten, maar naar mijn mening is de toepasbaarheid hier nog niet zo volwassen. In traditionelere omgeving daarentegen… als je op zoek bent naar een robuust MySQL 8 databasecluster wat 24×7 moet draaien en makkelijk onderhoud faciliteert, dan is Percona XtraDB Cluster 8 absoluut een blik waardig.

 

Referenties
https://www.percona.com/blog/2020/04/29/introducing-the-ga-release-of-percona-xtradb-cluster-8-0/
https://galeracluster.com/2020/06/galera-cluster-4-for-mysql-8-release-webinar-is-now-available/
https://www.percona.com/sites/default/files/presentations/PU2019-Istanbul-HA-MySQL-on-K8s-using-PXC-and-ProxySQL.pdf