🆚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.
20182019202020212022202320242025202620272028202920302031203220332034MariaDB 10.6 LTSbis 07/2026 · Community-Support beendetMariaDB 10.11 LTSbis 02/2028 MariaDB 11.4 LTSbis 05/2029 MariaDB 11.8 LTSbis 06/2028 MariaDB 12.3 LTSbis 06/2029 · aktuelle LTSMySQL 8.0bis 04/2026 · Extended Support beendetMySQL 8.4 LTSbis 04/2032 · Premier bis 04/2029MySQL 9.7 LTSbis 04/2034 · Premier Supportheute

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-Poolin der Community-Version eingebaut (MySQL: nur Enterprise)
Galera-ClusterStandardbestandteil des Servers
System-versionierte TabellenWITH SYSTEM VERSIONING, Abfragen FOR SYSTEM_TIME AS OF …, auch Application-Time-Perioden
SequenzenCREATE SEQUENCE, NEXTVAL()
RETURNINGINSERT/DELETE/REPLACE … RETURNING
Oracle-Modussql_mode=ORACLE mit PL/SQL-naher Syntax; in 12.3 u. a. TO_DATE(), TO_NUMBER(), (+)-Outer-Join
Weitere EnginesAria, ColumnStore, Spider, MyRocks, S3, CONNECT, SEQUENCE
DatentypenUUID, INET4, INET6
DiagnoseANALYZE-Anweisung (r_rows, r_filtered), SHOW EXPLAIN FOR <thread>
Sperren & BackupWAIT n / NOWAIT, BACKUP STAGE für Backups mit minimalen Sperren
OptimizerSargable YEAR()/DATE() seit 11.1, neues Kostenmodell seit 11.0
🐬 nur MySQL
JSON binärJSON wird binär gespeichert; Operatoren -> und ->>. In MariaDB ist JSON ein Alias für LONGTEXT (mit JSON-Prüfung)
SET PERSISTVariablen dauerhaft per SQL setzen
X-ProtokollX Plugin / Document Store
Group ReplicationInnoDB Cluster, InnoDB ClusterSet
CIDR in Konten'app'@'192.0.2.0/24' (laut MariaDB-Doku nicht in 11.4)
Data Dictionarytransaktionales Data Dictionary ohne .frm-Dateien (MariaDB nutzt weiter .frm)
Lateral Derived TablesJOIN LATERAL (…)

🧷Gleiche Idee, anderes Verhalten

ThemaMariaDBMySQL
GTID-FormatDomain-ServerId-Seq: 0-1-1042UUID:Nummern: 3E11FA47-…:1-1042
Standard-Authentifizierungmysql_native_password; root über unix_socket; ed25519 verfügbar; caching_sha2_password in der LTS-Linie ab 12.3caching_sha2_password; mysql_native_password in 8.4 standardmäßig aus, in 9.0 entfernt
Redo-Logeine Datei ib_logfile0 (seit 10.5)Verzeichnis #innodb_redo mit innodb_redo_log_capacity (seit 8.0.30)
Doublewriteim System-Tablespace ibdata1eigene #ib_*.dblwr-Dateien (seit 8.0.20)
Buffer-Pool-Instanzennur eine (seit 10.5)innodb_buffer_pool_instances einstellbar
REPEATABLE READinnodb_snapshot_isolation=ON ab 11.6.2 → ERROR 1020 statt Lost Updateklassisches Verhalten ohne diese Prüfung
Query Cachevorhanden (Standard aus)in 8.0 entfernt
Binlog-StandardformatMIXEDROW
Befehlsnamenmariadb, 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)