MariaDB vs. MySQL — Was ist der Unterschied?
Du installierst dir einen Linux-Server, tippst apt install mysql-server und bekommst… MariaDB. Willkommen in der Welt der Datenbank-Forks. Aber was genau ist MariaDB? Warum gibt es das? Und welche Datenbank solltest du für dein nächstes Projekt nehmen? Hier der komplette Überblick.
Die Geschichte: Warum gibt es MariaDB?
MySQL wurde 1995 von Michael „Monty“ Widenius und David Axmark entwickelt. 2008 kaufte Sun Microsystems MySQL AB, und 2010 übernahm Oracle Sun — und damit auch MySQL.
Monty Widenius war mit Oracles Plänen für MySQL nicht einverstanden. Er befürchtete, dass Oracle MySQL zugunsten seiner eigenen kommerziellen Datenbank (Oracle DB) vernachlässigen oder einschränken würde. Also tat er das, was in der Open-Source-Welt möglich ist: Er forkte MySQL und nannte den Fork MariaDB — benannt nach seiner jüngeren Tochter Maria (MySQL war nach seiner ältesten Tochter My benannt).
MariaDB startete 2009 als Drop-in-Replacement für MySQL 5.1 und war anfangs nahezu identisch. Seitdem haben sich die Projekte aber zunehmend auseinanderentwickelt.
Technische Unterschiede
Storage Engines
Beide unterstützen InnoDB als Standard-Engine. MariaDB bietet zusätzlich:
- Aria — Crash-safe MyISAM-Alternative, Standard für interne Temp-Tables
- ColumnStore — spaltenbasierte Engine für analytische Queries
- Spider — Sharding-Engine für verteilte Datenbanken
- S3 — archiviert Tabellen in S3-kompatiblem Objektspeicher
- MyRocks — RocksDB-basiert, optimiert für Write-Heavy-Workloads
MySQL hat seit 8.0 InnoDB als einzige transaktionsfähige Engine mit vollem Support. MyISAM wird noch unterstützt, aber nicht mehr weiterentwickelt.
Replikation
| Feature | MySQL | MariaDB |
|---|---|---|
| Binlog-Replikation | Ja | Ja |
| GTID | Ja (eigene Implementierung) | Ja (eigene, inkompatible Implementierung) |
| Multi-Source-Replikation | Ab 5.7 | Ab 10.0 |
| Galera Cluster | Über Plugin | Eingebaut |
| Group Replication | Ja (ab 5.7) | Nein |
Wichtig: Die GTID-Implementierungen sind nicht kompatibel. Eine Replikation zwischen MySQL und MariaDB funktioniert nur mit klassischer Binlog-Position.
Verschlüsselung
MariaDB unterstützt Data-at-Rest-Encryption auf Tabellenebene seit 10.1 — das heißt, du kannst einzelne Tabellen verschlüsselt auf der Festplatte speichern. MySQL bietet das auch seit 5.7, aber mit etwas anderem Ansatz (tablespace-basiert).
JSON-Unterstützung
MySQL hat seit 5.7 einen nativen JSON-Datentyp mit eigenem Binärformat. MariaDB hat JSON als Alias für LONGTEXT implementiert — funktioniert, aber ohne die internen Optimierungen von MySQL. Für JSON-lastige Anwendungen hat MySQL hier die Nase vorn.
Window Functions und CTEs
Beide unterstützen Window Functions und Common Table Expressions (CTEs). MariaDB hatte CTEs ab 10.2 (2017), MySQL ab 8.0 (2018). Funktional sind sie gleichwertig.
Performance-Vergleich
Die ehrliche Antwort: Es kommt drauf an. In den meisten Alltagsszenarien wirst du keinen messbaren Unterschied merken. Trotzdem ein paar Tendenzen:
| Workload | Vorteil |
|---|---|
| Einfache SELECT-Queries | Gleichauf |
| Komplexe JOINs | MariaDB (besserer Optimizer seit 10.3) |
| JSON-Operationen | MySQL (nativer JSON-Typ) |
| Write-Heavy (viele INSERTs) | Gleichauf (InnoDB) |
| Subqueries | MariaDB (historisch besserer Optimizer) |
| Parallel Queries | MariaDB (seit 10.5) |
MariaDB hat in seinem Optimizer über die Jahre einige Verbesserungen eingebaut, die MySQL nicht hat — z.B. bessere Behandlung von Subqueries, Optimizer Hints und Condition Pushdown. MySQL hat dafür in Sachen InnoDB-Performance und Optimizer Traces aufgeholt.
Lizenz und Community
Hier wird es interessant:
- MySQL gehört Oracle. Es gibt eine Community-Edition (GPLv2) und eine kommerzielle Enterprise-Edition mit zusätzlichen Features (Backup, Monitoring, Firewall).
- MariaDB ist komplett Open Source unter GPLv2 (Server) bzw. BSL (Business Source License) für einige Enterprise-Features seit MariaDB 11.x. Die MariaDB Foundation koordiniert die Entwicklung.
Für die meisten Anwender macht die Lizenz keinen praktischen Unterschied. Relevant wird es, wenn du Enterprise-Support brauchst: Oracle bietet das für MySQL, MariaDB Corporation für MariaDB.
Wer nutzt was?
- MariaDB ist Standard in Debian, Ubuntu, Arch Linux, SUSE und Red Hat/CentOS (seit RHEL 7). Wenn du unter Linux
mysql-serverinstallierst, bekommst du auf vielen Distros automatisch MariaDB. - MySQL wird von Oracle gepusht und ist Standard bei Ubuntu Server (wieder seit 22.04), in AWS RDS und Google Cloud SQL.
Große Nutzer:
- MariaDB: Wikipedia, Google (intern), Booking.com, Samsung
- MySQL: Facebook (mit eigenem Fork), Twitter/X, GitHub, Netflix
Migration: MySQL zu MariaDB (oder umgekehrt)
MySQL → MariaDB
Grundsätzlich ist das einfach, wenn du bei einfachen Features bleibst. Beachte dabei die MySQL-Versionskompatibilität:
# Backup erstellen
mysqldump --single-transaction --routines --triggers --all-databases > backup.sql
# MySQL stoppen und deinstallieren
sudo systemctl stop mysql
sudo apt remove mysql-server
# MariaDB installieren
sudo apt install mariadb-server
# Backup einspielen
mysql -u root -p < backup.sql
Worauf du achten musst:
- MySQL 8.0 Features wie
CHECKConstraints, Roles undINVISIBLEIndexes funktionieren in MariaDB teilweise anders - GTIDs sind nicht kompatibel — Replikation muss neu eingerichtet werden
- Der JSON-Datentyp verhält sich anders
- Authentication Plugins können abweichen (
caching_sha2_passwordin MySQL 8.0 vs.ed25519in MariaDB)
MariaDB → MySQL
Technisch genauso, aber mit einer zusätzlichen Hürde: Wenn du MariaDB-spezifische Features nutzt (Sequences, System-Versioned Tables, Aria Engine), musst du diese vorher anpassen.
# Prüfen ob MariaDB-spezifische Features verwendet werden
SELECT table_name, engine
FROM information_schema.tables
WHERE table_schema = 'meine_datenbank'
AND engine NOT IN ('InnoDB', 'MyISAM', 'MEMORY');
Kompatibilität mit Anwendungen
Die gute Nachricht: Die allermeisten Anwendungen funktionieren mit beiden Datenbanken problemlos. WordPress, Joomla, Drupal, Magento, TYPO3 — alles kein Problem.
Schwierig wird es nur, wenn Anwendungen MySQL-spezifische Features nutzen:
- MySQL Group Replication — gibt es in MariaDB nicht
- MySQL X Protocol / Document Store — MariaDB-Äquivalent fehlt
- MySQL Shell — funktioniert nicht mit MariaDB
Umgekehrt funktionieren MariaDB-spezifische Features nicht in MySQL:
- Sequences (CREATE SEQUENCE)
- System-Versioned Tables (Temporal Tables)
- Oracle-Kompatibilitätsmodus
MySQLDumper und MariaDB
MySQLDumper funktioniert mit MariaDB genauso wie mit MySQL. Die Backup- und Restore-Funktionen nutzen Standard-SQL-Befehle, die beide Systeme verstehen. Alternativ kannst du auch direkt mysqldump für die Migration verwenden. In der Konfiguration musst du nichts ändern — einfach die gewohnten Zugangsdaten eintragen.
Wann welche Datenbank?
| Szenario | Empfehlung |
|---|---|
| Standard-Webhosting | Nimm was der Hoster anbietet |
| WordPress / CMS | Egal, beides geht |
| JSON-lastige Anwendung | MySQL (besserer JSON-Support) |
| Galera Cluster | MariaDB (eingebaut) |
| Enterprise-Support nötig | MySQL (Oracle) oder MariaDB Corporation |
| Maximale Open-Source-Freiheit | MariaDB |
| AWS/GCP Cloud-Datenbank | MySQL (besserer Cloud-Support) |
| Linux-Server (self-hosted) | MariaDB (oft Standard) |
Fazit
Für 95% aller Anwendungsfälle ist es ehrlich gesagt egal, ob du MySQL oder MariaDB nutzt. Beide sind stabile, ausgereifte Datenbanksysteme, die Millionen von Webseiten und Anwendungen betreiben. Die Unterschiede liegen im Detail — Storage Engines, Optimizer, spezifische Features.
Mein pragmatischer Rat: Nimm das, was auf deinem Server installiert ist. Wenn du die Wahl hast und ein normales Webprojekt baust, nimm MariaDB — es ist Open Source, hat einen guten Optimizer und ist auf den meisten Linux-Distros Standard. Wenn du MySQL-spezifische Features brauchst (JSON, Group Replication, X Protocol), nimm MySQL.
Was du nicht tun solltest: Mitten im Projekt die Datenbank wechseln, nur weil du gelesen hast, dass die andere 3% schneller ist. Die Zeit investierst du besser in vernünftige Indizes und optimierte Queries.