MariaDB nació como una bifurcación de MySQL y siguió compatible durante años. Desde entonces se han apartado lo bastante como para que pasar de una a otra sea una migración y no un cambio de pieza; pero para una aplicación PHP corriente, ambas ejecutan el mismo esquema y las mismas consultas.
Dónde la diferencia sí importa
- JSON. MySQL tiene un tipo JSON de verdad, con indexación. MariaDB guarda el JSON como texto con una restricción de comprobación: portátil, y más lento para todo lo que consulte dentro del documento.
- La replicación. MySQL usa GTID, MariaDB tiene su propio esquema. No son intercambiables, así que una réplica no puede ser de la otra.
- Funciones de ventana y CTE. Ambas las tienen ya; las instalaciones antiguas de una u otra puede que no.
- Los motores de almacenamiento. MariaDB trae extras como Aria y ColumnStore. Casi nadie los necesita.
Cómo saber cuál tiene
mysql -V
mysql -e "SELECT VERSION()"
# 10.x or 11.x is MariaDB; 8.x is MySQL
Pasar de una a otra
Volcado e importación, nunca una copia de archivos. Los directorios de datos no son compatibles, y un datadir copiado da una base que arranca y luego se comporta de forma extraña, que es mucho peor que una que se niega a arrancar.
mysqldump --single-transaction --routines --triggers --default-character-set=utf8mb4 db > db.sql
# then import into the other engine and CHECK the row counts per table
Cuál elegir para un sitio nuevo
La que traiga su distribución y admita su alojamiento. La diferencia de rendimiento para una aplicación PHP típica queda dentro del ruido; importan mucho más el buffer pool, los índices y las consultas: vea innodb_buffer_pool_size y cuándo añadir un índice.
Si su aplicación documenta una en concreto, use esa. Los problemas de compatibilidad son raros y miserables cuando aparecen.
