Mariadb

MariaDB

Viele haben bereits den Namen MariaDB irgendwo gelesen oder gehört, sei es auf Webseiten von beliebten Zeitungsverlagen wie heise oder Golem. Aber was steckt eigentlich hinter MariaDB?  In diesem Artikel handelt es sich um mariadb vs mysql, die Vorteile von MariaDB wie die Nachteile.

MariaDB ist eine relationale Datenbank, die aus einem Fork von MySQL entstanden ist, dementsprechend ist es (fast) vollständig kompatibel zu MySQL. Jetzt stellt

sich natürlich die Frage warum nur fast? Darauf werde ich in diesem Artikel später noch eingehen. MariaDB unterstützt im Prinzip alle Statements die MySQL auch unterstützt, schließlich ist es ein Fork dessen.
MariaDB lauscht sogar auf dem gleichen Port (3306) auf eingehende Verbindungen und verhält sich nach außenhin betrachtet identisch zu MySQL.

Einzelne größere Firmen sind mittlerweile auch bereits von MySQL auf MariaDB umgestiegen, dazu gehören bekannte Firmen wie:

– google
(http://www.zdnet.de/88169832/datenbanken-google-steigt-von-mysql-auf-mariadb-um/)
– wikipedia
(http://www.zdnet.com/wikipedia-moving-from-mysql-to-mariadb-7000008912/
http://www.infoworld.com/t/open-source-software/wikipedia-dumps-mysql-hooks-mariadb-217820)

Sogar einzelne Linux Distributionen wollen zukünftig statt MySQL, MariaDB standardgemäß in Ihren Repositorys anbieten:
– Fedora
(http://www.golem.de/news/fedora-mariadb-soll-mysql-ersetzen-1301-97069.html)

– OpenSuse
(http://www.pro-linux.de/news/1/19380/opensuse-umzug-auf-mariadb-bereits-vollzogen.html)

Nun stellt sich natürlich die Frage, warum größere Firmen und Distributionen von der etablierten Software „MySQL“ auf „MariaDB“ wandern. Nun dies ist im Prinzip recht simpel zu begründen.

 

Vorteile von MariaDB zu MySQL

1. MariaDB unterstützt im Vergleich zu MySQL mittlerweile wesentlich mehr Engines (SphinxSE, Aria, FederatedX, TokuDB, Spider, ScaleDB und etc.), und ist von InnoDB auf xtraDB gestiegen, was quasi ein equivalent zu InnoDB darstellt, nur wesentlich performanter ist.

2. MariaDB entwickelt sich im Vergleich zu MySQL kontinuierlicher fort. Updates werden wesentlich schneller als bei MySQL an die Endanwender durchgereicht, an neuen Features wird durchgängig gearbeitet und MariaDB ist ein vollständiges opensource Projekt, wo unter anderem der Bugtracker ins Detail eingesehen werden kann.

3. MariaDB bietet auch für den kommerziellen nutzen eine Clusterdatenbank an, welche unter anderem auch eine Multi-Master-Replikation ermöglicht. Jeder kann sich dessen frei bedienen und muss nicht auf eine MySQL-Enterprise Version zurückgreifen.

4. MariaDB wurde auf performance optimiert, und ist bei größeren Mengen an Datensatzen um einiges performanter als MySQL, zudem bietet es eine elegante Migration von anderen Datenbanksystemen auf MariaDB.

In erster Linie klingt alles von MariaDB ziemlich gut und Vorteilhaft für den eigenen Einsatz von MariaDB, bzw. dem Ersatz zu MySQL. Es hat den Schein, dass MariaDB sich intensive Mühe gibt ein relationales DBMS dem Markt kostenlos bereitzustellen, welches nicht all zu Anfällig auf Fehler sein soll, und dementsprechend auch performanter sein soll als MySQL.

Nachteile von MariaDB zu MySQL

Nun stellt sich uns die Frage, ob ein Umstieg auf MariaDB für uns probemlos verlaufen kann und welche Risiken wir in Kauf nehmen müssten?

Nun MariaDB verspricht auf ihrer Webseite viel, bzgl. einer einfachen Migration von MySQL auf MariaDB. Eine Migration soll schnell und „Problemlos“ verlaufen und somit soll es nur ein Katzensprung auf MariaDB sein.

1. Eine nachträgliche Migration von MariaDB zurück auf MySQL ist seit dem letzten Release (5.5.36) nicht mehr möglich. Da sich der neue Release an der bestehenden Version 10 orientiert, und eine vollständige Überarbeitung von MariaDB bedeutet, damit ist MariaDB nun ein eigenständiges DBMS und nicht mehr nur ein Fork von MySQL.

2. Bei einem neuen Release werden die entsprechenden dazugehörigen Libraries (Jedenfalls für Debian) nicht rechtzeitig bereitgestellt, womit ein Upgrade auf eine neuere Version aufgrund von Abhängigkeiten fehl schlägt.

3. Bei der Verwendung von Pam_mysql und einem darauf folgenden Umstieg auf MariaDB, wird die pam_mysql Library von bestehenden Applikationen als Defekt angesehen, da pam_mysql die libmysqlclient18 library verwendet. Die es allerdings unter dem neusten Release von MariaDB nicht mehr gibt, stattdessen führt MariaDB nun seine eigene libmariadbclient18 Library. Somit ist die Verwendung von pam_mysql nur möglich, wenn man sich eine entsprechende eigene Library dafür schreibt (Tutorials dafür finden sich auf der offiziellen MariaDB Homepage).

4. Eine Clusterversion von MariaDB gibt es zwar auch, sogar als freie Multi-Master-Replikation, allerdings selbst bei der Verwendung von 3 Nodes, führt es regelmäßig zu einem Split-Brain, womit die DBMS’s zwar noch weiterhin (man könnte meinen tadellos) weiterlaufen, allerdings treten häufiger dann SQL-Fehler auf, z.B. dass SELECT unbekannt ist. Ebenso ist die Konfiguration eines solchen Clustern mit vielerlei Problemen verbunden, die während der Konfiguration auftreten können. Eine große Auswahl an Einträgen zur Problembehebung findet sich dazu nicht. Die Dokumentation in dieser Hinsicht ist recht mager, und man ist auf sich alleine gestellt. Hinzu kommt die Problematik nach einem Split-Brain, den Cluster wieder korrekt in Gang bringen ist recht schwierig, ohne jeweilige Vorkenntnisse zu MariaDB. Selbst wenn ein Update für MariaDB vorhanden ist, hängt sich ein Paketmanager beim Starten von MariaDB auf und behindert somit, den Upgrade weiterer Pakete.

mariadb_cluster_fehler

 

Fazit

Im Endeffekt bleibt es einem selbst überlassen, ob man MariaDB gegen MySQL tauschen möchte. Die Performance von MariaDB ist ein ziemlich guter Aussagepunkt um auf MariaDB umzusteigen, wenn die Performance für eine Webseite / Anwendung höchste Priorität hat, aber auch dann muss man mit den Risiken des neuen Setups leben können, was manchmal recht schwierig sein kann, da unerwartete Probleme auftreten, die den produktiven Betrieb eines solchen Setups in Gefahr bringen können. Wenn man mit den damit verbundenen Risiken leben kann, so ist ein Umstieg auf MariaDB durchaus sinnvoll.

 

UPDATE 03.2018:

Mittlerweile hat sich MariaDB sehr gebessert, trotzdem Split Brains sind in Master Master Hierarchien nicht ausgeschlossen. Performancetechnisch hat sich vieles getan. Aber nach wie vor sind Probleme kennzunehmen in einer Master Master Umgebung.