MariaDB versus MySQL - Compatibilidad

Monty Program has a MariaDB vs MySQL disponible para descarga.

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 a 1M (por defecto es 128M).
  • 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 datos mysql, puedes arreglar eso con mysql_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 extra Progress la cual muestra el progreso para algunos comandos. Puedes desactivar esto iniciando
    1. mysqld con la opción --old.
  • INFORMATION_SCHEMA.PROCESSLIST tiene tres nuevas columnas para el reporte de progreso: STAGE, MAX_STAGE, y PROGRESS.
  • 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 con max_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 global max_user_connections no afecta los usuario con privilegios SUPER.
  • 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 usainnodb_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

OptionOld valueNew value
innodb_adaptive_checkpointTRUE FALSE
innodb_change_bufferinginserts all
innodb_flush_neighbor_pages1 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.

Comments

Comments loading...