MariaDB versus MySQL - Compatibilidad
Monty Program has a MariaDB vs MySQL disponible para descarga.
See also MariaDB vs MySQL - Caracteristicas
Contents
- MariaDB es un descendiente binario en reemplazo de MySQL
- Incompatibilidades entre MariaDB 5.1 y MySQL 5.1
- Incompatibilidades entre MariaDB 5.2 y MySQL 5.1
- Incompatibilidades entre MariaDB 5.3, MySQL 5.1 y MariaDB 5.2
- Incompatibilidades entre MariaDB 5.5 y MariaDB 5.3
- Opciones de configuracion viejas no soportadas.
- Reemplazando a MySQL RPM ==
- Incompatibilidades entre MariaDB y MySQL Proxy
MariaDB es un descendiente binario en reemplazo de MySQL
Para todos los propósitos practicos, MariaDB es un descendiente binario en reemplazo de la misma versión de MySQL. (Por ejemplo MySQl 5.1 -> MariaDB 5.1, MariaDB 5.2 & MariaDB 5.3 son compatibles. MySQL 5.5 sera compatible con MariaDB 5.5). Lo que esto significa que:
- La definición de datos y tablas en archivos (.frm) son archivos binarios compatibles.
- Todas las APIs de clientes, protocolos y estructuras son idénticas.
- Todos los nombre de archivos, binarios, rutas, puertos, sockets, etc. deben ser los mismos.
- Todos los conectores MySQL (Conectores como los de PHP, Perl, Python, Java, .NET, MyODBC, Ruby, MySQL, C, etc.) trabajan sin cambios con MariaDB.
- Hay algunos problemas de instalación de PHP5 con los que debería tener precaución (como en el antigüo cliente de PHP5 que marcaba un error de compatibilidad con la libreria).
- El paquete
mysql-client
también trabaja con MariaDB server. - La librería de cliente compartida es binaria-mente compatible con la librería cliente de MySQL.
Esto significa que para muchos casos, puedes solo des-instalar MySQL e instalar MariaDB y estarás listo para comenzar. (No necesitas convertir ningún archivo de datos si usas la misma versión, como la 5.1).
Hacemos comparaciones mensuales con el código fuente de MySQL para estar seguros que continuamos con compatibilidad y tenemos todas las características y arreglos de errores añadidos por Oracle.
También hemos hecho un montón de trabajo en los scripts de actualización hasta el punto de que ahora es más fácil actualizar desde MySQL 5.0 a MariaDB 5.1 que de MySQL 5.0 a MySQL 5.1.
Dicho esto, MariaDB tiene un montón de nuevas opciones, extensiones, motores de almacenamiento y arreglo de errores que no se encuentran en MySQL. Puedes encontrar el conjunto de características por las diferentes versiones de MariaDB en la página ¿Que diferencias hay en las publicaciones de MariaDB?.
Incompatibilidades entre MariaDB 5.1 y MySQL 5.1
En pocos casos MariaDB tiene que ser incompatible para proveer mas y mejor información que MySQL.
Aquí esta la lista de todas las incompatibilidades conocidas a nivel de usuario, lo puedes ver cuando estes usando MariaDB 5.1 en lugar de MySQL 5.1.
- El nombre de los paquetes de instalación comienza con MariaDB en lugar de MySQL.
- Los tiempos pueden ser diferentes, MariaDB es en muchos casos mas rápido que MySQL.
- mysqld en MariaDB lee también las secciones
[mariadb]
de sus archivos my.cnf . - No es posible utilizar una única biblioteca del motor de almacenamiento binario con MariaDB si no es por exactamente la misma versión de MariaDB. (Esto es porque la estructura del servidor interno (THD) es diferente entre MySQL y MariaDB. Es común entre las diferentes versiones de MySQL). Esto no debe ser un problema ya que muchas de las personas don cargan un nuevo motor de almacenamiento y MariaDB viene con mas motores de almacenamiento que MySQL.
CHECKSUM TABLE
puede dar diferentes resultados como MariaDB no ignora NULOS en las columnas que MySQL si hace (En futuras versiones, MySQL debeá calcular las sumas de comprobación de la misma manera que MariaDB). Te puedes quedar con el 'viejo estilo' de comprobación de sumas en MariaDB iniciado mysqld con la opción--old
. Tenga en cuenta sin embargo que los motores de almacenamiento MyISAM y Aria en MariaDB están usando la nueva comprobación de sumas internamente, si estas usando la opción--old
, el comando #CHECKSUM# será mas lento ya que necesita calcular la comprobación de sumas fila por fila.- El registro de consultas lentas tiene mas información acerca de la consulta, que puede ser un problema si tiene un script que analiza el registro de consultas lentas.
- MariaDB por defecto toma un bit mas de memoria que MySQL porque tenemos por defecto activado el motor de almacenamiento Aria para manejar internamente tablas temporales. Si necesitas que MariaDB tome menos memoria (a expensas del rendimiento), puedes insertar el valor de
aria_pagecache_buffer_size
a1M
(por defecto es128M
). - Si estas usando nuevas opciones de comandos, nuevas caracteristicas de MariaDB o nuevos motores de almacenamiento, no podrás moverte fácilmente entre MySQL y MariaDB.
Incompatibilidades entre MariaDB 5.2 y MySQL 5.1
La lista es la misma entre MariaDB 5.1 y MySQL 5.1, con una adición:
- Un nuevo valor
SQL_MODE
fue añadido:IGNORE_BAD_TABLE_OPTIONS
. Si no se establece, mediante una tabla, campo o un atributo de índice (opción) que no es compatible con el motor de almacenamiento elegido se producirá un error. Este cambio podría causar advertencias en el registro de error sobre las tablas mal definidas desde bases de datosmysql
, puedes arreglar eso conmysql_upgrade
.
Para todos los propósitos practicos, MariaDB 5.2 es un remplazo para MariaDB 5.1 y MySQL 5.1.
Incompatibilidades entre MariaDB 5.3, MySQL 5.1 y MariaDB 5.2
- Unos pocos mensajes de error relacionados con malas conversiones, MariaDB provee mas información en los mensajes acerca de lo que salió mal.
- Los números de error para errores específicos de MariaDB, han sido movidos para iniciar desde 1900 y no tener conflicto con errores MySQL.
- Los micro-segundos ahora trabajan en todos los contextos; MySQL no, en algunos contextos, pierde los micro-segundos de datetime y time.
- UNIX_TIMESTAMP(constant-date-string) retorna en MariaDB un timestamp con 6 decimales, mientras que MySQL retorna esto sin decimal. Esto puede causar un problema si estas usando UNIX_TIMESTAMP() como una función de partición. Puedes arreglar esto usando FLOOR(UNIX_TIMESTAMP(..)) o cambiando la cadena de fecha a un número de fecha, como 20080101000000.
- MariaDB hace una comprobación mas estricta de la fecha, los valores datetime y timestamp. Por ejemplo UNIX_TIMESTAMP('x') ahora retorna NULL en lugar de 0.
- Las viejas opciones de inicio
--maria-
son removidas. Debes usar el prefijo--aria-
(MariaDB 5.2 soporta ambos--maria-
y--aria-
) SHOW PROCESSLIST
tiene una columna extraProgress
la cual muestra el progreso para algunos comandos. Puedes desactivar esto iniciando- mysqld
con la opción
--old
.
- mysqld
INFORMATION_SCHEMA.PROCESSLIST
tiene tres nuevas columnas para el reporte de progreso:STAGE
,MAX_STAGE
, yPROGRESS
.- Long comments los cuales se inician con
/*M!
o/*M!#####
son ejecutados. - Si usas
max_user_connections=0
(lo cual significa cualquier número de conexiones) cuando inicias mysqld, no puedes cambiar la variable global mientras mysqld siga ejecutandose.Esto es porque cuando mysqld se inicia conmax_user_connections=0
no asigna contar estructuras (que también implican un mutex para cada conexión). Esto llevaría a los contadores a equivocarse si cambias despues la variable. Si quieres ser capaz de cambiar esta variable en tiempo de ejecución establesca un valor alto en el arranque. - Puede establecer
max_user_connections
(tanto la variable global y la opción #GRANT#) a-1
para evitar que los usuarios se conecten al servidor.La variable globalmax_user_connections
no afecta los usuario con privilegiosSUPER
. - La directiva IGNORE no ignora todos los errores (como errores fatales), solo lo que es seguro pasar por alto.
Incompatibilidades entre MariaDB 5.5 y MariaDB 5.3
XtraDB
Percona, el proveedor of XtraDB, no provee todas las características tempranas de XtraDB en el código fuente de 5.5. Por que, MariaDB 5.5 no puede proveerlo.
XtraDB opciones perdidas en 5.5
Las siguientes opciones no son soportadas por XtraDB 5.5. Si estas usandolas en cualquiera de tus archivo my.cnf, debes removerlas antes de actualizar a 5.5.
- innodb_adaptive_checkpoint ; en lugar de esta usa
innodb_adaptive_flushing_method
. - innodb_auto_lru_dump ; en lugar de esta usa
innodb_buffer_pool_restore_at_startup
. - innodb_blocking_lru_restore ; en lugar de esta usa
innodb_blocking_buffer_pool_restore
. - innodb_enable_unsafe_group_commit
- innodb_expand_import ; en lugar de esta usa
innodb_import_table_from_xtrabackup
. - innodb_extra_rsegments ; en lugar de esta usa
innodb_rollback_segment
. - innodb_extra_undoslots
- innodb_fast_recovery
- innodb_flush_log_at_trx_commit_session
- innodb_overwrite_relay_log_info
- innodb_pass_corrupt_table ; en lugar de esta usa
innodb_corrupt_table_action
. - innodb_use_purge_thread
- xtradb_enhancements
XtraDB opciones que ha cambiado el valor predeterminado
Option | Old value | New value |
---|---|---|
innodb_adaptive_checkpoint | TRUE | FALSE |
innodb_change_buffering | inserts | all |
innodb_flush_neighbor_pages | 1 | area |
Nuevas opciones en XtraDB 5.5
Las siguientes opciones nuevas han sido añadidas a XtraDB / InnoDB in 5.5. (A continuación se enumeran)
- innodb_adaptive_flushing_method
- innodb_adaptive_hash_index_partitions
- innodb_blocking_buffer_pool_restore
- innodb_buffer_pool_instances
- innodb_buffer_pool_restore_at_startup
- innodb_change_buffering_debug
- innodb_corrupt_table_action
- innodb_flush_checkpoint_debug
- innodb_force_load_corrupted
- innodb_import_table_from_xtrabackup
- innodb_large_prefix
- innodb_purge_batch_size
- innodb_purge_threads
- innodb_recovery_update_relay_log
- innodb_rollback_segments
- innodb_sys_columns
- innodb_sys_fields
- innodb_sys_foreign
- innodb_sys_foreign_cols
- innodb_sys_tablestats
- innodb_use_global_flush_log_at_trx_commit
- innodb_use_native_aio
Vea También Guía de Percona, como actualizar a 5.5
Opciones de configuracion viejas no soportadas.
Sí estas usando cualquiera de las siguientes opciones en tus archivos /etc/my.cnf
o
my.cnf
debes removerlas.
Esto también se utiliza para MySQL 5.1 o lo más nuevo:
skip-bdb
Reemplazando a MySQL RPM
Si desinstaló el RPM MySQL para instalar MariaDB, tenga en cuenta que la desinstalacion renombre el RPM MySQL en /etc/my.cnf
a /etc/my.cnf.rpmsave
.
Después de instalar MariaDB debes hacer lo siguiente para restaurar las antiguas opciones de configuración:
mv -vi /etc/my.cnf.rpmsave /etc/my.cnf
Incompatibilidades entre MariaDB y MySQL Proxy
Una API cliente de MySQL es capaz de conectarse a MariaDB usando MySQL Proxy sino una API cliente MariaDB recibirá avances información que MySQL Proxy no implementa informes, para conseguir la plena compatibilidad en todos los casos simplemente deshabilitar el informe de progreso en el cliente o en el servidor.