🆚MariaDB vs. MySQL
MariaDB entstand 2009 als Fork von MySQL, nachdem Oracle Sun (und damit MySQL) übernommen hatte. Protokoll und SQL sind weitgehend kompatibel – die Engines, Versionen und viele Funktionen sind aber auseinandergelaufen. Stand: 25. September 2026.
📅Versionen und Supportzeiträume
LTS-Versionen von MariaDB erhalten 3 bis 5 Jahre Community-Support; dazwischen erscheinen Rolling Releases (12.x, 13.x) mit kurzem Support. MySQL hat seit 8.4 LTS-Versionen und dazwischen Innovation Releases.
MariaDB: Ende des Community-Supports laut mariadb.org (Enterprise-Support teils länger). MySQL: Ende des Extended Support (9.7: Premier Support) laut endoflife.date. 12.3: „maintained until June 2029“.
⚖️Funktionen nur hier oder nur dort
🦭 nur MariaDB
| Thread-Pool | in der Community-Version eingebaut (MySQL: nur Enterprise) |
| Galera-Cluster | Standardbestandteil des Servers |
| System-versionierte Tabellen | WITH SYSTEM VERSIONING, Abfragen FOR SYSTEM_TIME AS OF …, auch Application-Time-Perioden |
| Sequenzen | CREATE SEQUENCE, NEXTVAL() |
| RETURNING | INSERT/DELETE/REPLACE … RETURNING |
| Oracle-Modus | sql_mode=ORACLE mit PL/SQL-naher Syntax; in 12.3 u. a. TO_DATE(), TO_NUMBER(), (+)-Outer-Join |
| Weitere Engines | Aria, ColumnStore, Spider, MyRocks, S3, CONNECT, SEQUENCE |
| Datentypen | UUID, INET4, INET6 |
| Diagnose | ANALYZE-Anweisung (r_rows, r_filtered), SHOW EXPLAIN FOR <thread> |
| Sperren & Backup | WAIT n / NOWAIT, BACKUP STAGE für Backups mit minimalen Sperren |
| Optimizer | Sargable YEAR()/DATE() seit 11.1, neues Kostenmodell seit 11.0 |
🐬 nur MySQL
| JSON binär | JSON wird binär gespeichert; Operatoren -> und ->>. In MariaDB ist JSON ein Alias für LONGTEXT (mit JSON-Prüfung) |
| SET PERSIST | Variablen dauerhaft per SQL setzen |
| X-Protokoll | X Plugin / Document Store |
| Group Replication | InnoDB Cluster, InnoDB ClusterSet |
| CIDR in Konten | 'app'@'192.0.2.0/24' (laut MariaDB-Doku nicht in 11.4) |
| Data Dictionary | transaktionales Data Dictionary ohne .frm-Dateien (MariaDB nutzt weiter .frm) |
| Lateral Derived Tables | JOIN LATERAL (…) |
🧷Gleiche Idee, anderes Verhalten
| Thema | MariaDB | MySQL |
|---|---|---|
| GTID-Format | Domain-ServerId-Seq: 0-1-1042 | UUID:Nummern: 3E11FA47-…:1-1042 |
| Standard-Authentifizierung | mysql_native_password; root über unix_socket; ed25519 verfügbar; caching_sha2_password in der LTS-Linie ab 12.3 | caching_sha2_password; mysql_native_password in 8.4 standardmäßig aus, in 9.0 entfernt |
| Redo-Log | eine Datei ib_logfile0 (seit 10.5) | Verzeichnis #innodb_redo mit innodb_redo_log_capacity (seit 8.0.30) |
| Doublewrite | im System-Tablespace ibdata1 | eigene #ib_*.dblwr-Dateien (seit 8.0.20) |
| Buffer-Pool-Instanzen | nur eine (seit 10.5) | innodb_buffer_pool_instances einstellbar |
| REPEATABLE READ | innodb_snapshot_isolation=ON ab 11.6.2 → ERROR 1020 statt Lost Update | klassisches Verhalten ohne diese Prüfung |
| Query Cache | vorhanden (Standard aus) | in 8.0 entfernt |
| Binlog-Standardformat | MIXED | ROW |
| Befehlsnamen | mariadb, mariadb-dump, mariadb-admin, mariadbd (mysql* als Symlinks) | mysql, mysqldump, mysqladmin, mysqld |
⚠️ Kein Drop-in-Ersatz mehr
Früher konnte man MySQL-Binärdateien einfach durch MariaDB ersetzen. Zwischen MySQL 8.x und MariaDB unterscheiden sich Data Dictionary, Redo-Log-Format und Systemtabellen – der sichere Weg ist ein logischer Dump und Import.
💡 Treiber
Die meisten MySQL-Connectoren funktionieren. Stolperstein beim Umstieg von MySQL: Konten mit caching_sha2_password – MariaDB unterstützt das Plugin in der LTS-Linie erst ab 12.3.
💡 Replikation zwischen beiden
Wegen der unterschiedlichen GTIDs nur über Binlog-Datei und -Position, und nur von MySQL zu MariaDB in bestimmten Versionskombinationen – als Migrationsweg, nicht als Dauerzustand.
📚Quellen (geprüft am 25.09.2026)
- MariaDB Maintenance Policy (Release-Serien, GA/EOL)
- MariaDB Server 12.3 LTS Released
- MariaDB 12.3 Changes & Improvements
- Incompatibilities and Feature Differences Between MariaDB 11.4 and MySQL 8.0
- MDEV-35124: innodb_snapshot_isolation=ON by default
- Sargable DATE and YEAR
- Thread Pool in MariaDB
- InnoDB Buffer Pool
- InnoDB Redo Log
- InnoDB System Variables
- Using healthcheck.sh
- Docker Official Image mariadb
- MySQL Release-Serien und Support (endoflife.date)