De MySQL a Maria DB: Guía rápida de migración para Debian

Cuando un producto que funciona y vale la pena, y que por demás es de código abierto, cae en manos de una empresa cuyo objetivo no es otro que hacer más y más dinero, el mundo tiembla.

Ya pasó con OpenOffice en su momento y ahora le toca el turno a MySQL. Teniendo a Oracle detrás nadie sabe lo que puede pasar y es bueno saber que existen alternativas y específicamente la mejor de todas es Maria DB.

Citando a Wikipedia:

MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL. Es desarrollado por Michael Widenius (fundador de MySQL) y la comunidad de desarrolladores de software libre. Introduce dos motores de almacenamiento nuevos, uno llamado Aria -que reemplaza con ventajas a MyISAM– y otro llamado XtraDB -en sustitución de InnoDB. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, APIs y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.

Así que sin más preámbulos veamos como pasar de MySQL a Maria DB.

Es importante saber que para que esto funcione al 100%, debemos tener la misma versión de MySQL (5.5) y Maria DB (5.5)

Migrando de MySQL a Maria DB

Este proceso no se puede hacer en caliente. O sea, tenemos que parar por un instante nuestros servicios y procesos que estén ejecutando MySQL.

# service stop apache2
# service stop nginx
# service stop mysql

En este caso detenemos Apache o NGinx en dependencia del cual estemos usando, y como es lógico también paramos a MySQL.

Posteriormente hacemos un backup de nuestra base de datos MySQL:

# mysqldump -u root -p --all-databases > mysqlbackup.sql

Y eliminamos todos los paquetes relacionados con MySQL:

# aptitude remove mysql-server-core-5.5 mysql-server-5.5 mysql-server mysql-common mysql-client-5.5 libmysqlclient18

Ahora tenemos que instalar Maria DB. Por desgracia, todavía no se encuentra en los repositorios de Debian, pero podemos instalarlo usando sus propios repositorios. Para otras distribuciones, pueden ver las instrucciones acá.

Añadimos a nuestro fichero /etc/sources.list lo siguiente:

# MariaDB 5.5 repository list - created 2013-08-02 13:48 UTC
# http://mariadb.org/mariadb/repositories/
deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/debian wheezy main
deb-src http://ftp.osuosl.org/pub/mariadb/repo/5.5/debian wheezy main

Luego actualizamos e instalamos Maria DB:

sudo aptitude update
sudo apt-get install mariadb-server

Iniciamos Maria DB (si no lo hizo automáticamente) y comprobamos que esté funcionando:

# mysql -u root -p -Be 'show databases'
Enter password:

Algunas configuraciones han cambiado considerablemente entre MySQL y MariaDB, sin embargo, es muy fácil de trabajar. Casi todo lo que cambió tiene que ver con los mecanismos que se han sustituido, por ejemplo, la replicación. Solo debemos copias las opciones de optimización de rendimiento que teníamos en el fichero my.cnf de MySQL, y reconfigurar el resto a mano.

Por ejemplo, estos datos:

bind-address = 127.0.0.1 
max_connections = 10 
connect_timeout = 30 
wait_timeout = 600 
max_allowed_packet = 16M 
thread_cache_size = 256 
O sort = 16M 
bulk_insert_buffer_size = 16M 
tmp_table_size = 64M 
max_heap_table_size = 64M

Hacemos los cambios necesarios y reiniciamos Maria DB.

# service mysql restart
Stopping MariaDB database server: mysqld.
Starting MariaDB database server: mysqld . . .
Checking for corrupt, not cleanly closed and upgrade needing tables..
# mysql -u root -p -Be 'show databases'
Enter password:

Si, Maria DB mantiene el mismo nombre mysql para reiniciar el servicio, en vista de mantener mayor compatibilidad. Si todo está bien, pues iniciamos el resto de los servicios:

# service apache2 start
# service nginx start

Y listo. Si queremos volver atrás (cosa que no recomiendo), solo tenemos que ejecutar:

# service mysql stop
# apt-get remove mariadb-server-5.5 mariadb-common mariadb-client-5.5 libmariadbclient18
# apt-get install mysql-server

Fuente: Artículo tomado y modificado de BeginLinux


22 comentarios

  1.   Mauricio dijo

    Como que falta la carga del backup de la base de datos.

    1.    elav dijo

      Creo que no necesariamente, pero gracias por la aclaración. El backup lo hicimos en caso de que la Base de Datos actual falle, pues me parece que ambos usan la misma DB. Tendré que leer más sobre el tema.

  2.   Ozkar dijo

    Fedora 19 ya viene con Maria por default, pero ni corto ni perezoso migré mis web-apps para PostgreSQL, ya que MySQL nos pegó los cuernos, espero que PostgreSQL se mantenga fiel al menos 2-3 años.

    1.    elav dijo

      ArchLinux también incluye Maria DB 😀

      1.    Ozkar dijo

        Tienes un vicio de Arch… Que hasta yo tengo las muelas flojas ya de las ganas de volver a usarlo… pero me da pereza. 😀

  3.   3ndriago dijo

    Veo un trend de sistemas incluyendo soporte para MariaDB y segun lo que he leido parece estar a la altura de MySQL e incluso superarlo en algunos aspectos, pero mi pregunta es: resulta razon suficiente el hecho de que ahora Oracle este detras de MySQL para migrar y asi de paso abandonar un gestor de bd probado por el tiempo y el uso de millones?

    1.    elav dijo

      Pues si. Ya solo con decir Oracle es razón suficiente para salir corriendo de MySQL. Además, Maria DB es un fork de MySQL mantenido por el creador de MySQL y la Comunidad. No sé a ti, pero a mi por lo menos eso me da mucha seguridad. Y si a eso le sumamos que la compatibilidad es muy buena, pues creo que no hay excusas para pasarse a Maria DB.

      😉

      1.    eliotime3000 dijo

        Y por eso es que me rehuso a instalar Java en mi Debian. Apenas uso el OpenJDK con IcedTea y va de maravillas, y mejor que Java.

      2.    3ndriago dijo

        Pues hombre, seguro estoy que debes tener tus razones para aborrecer a Oracle (me huele a que son parecidas a las que te hacen aborrecer a Microsoft, Apple y hasta a Google) pero como a mi Oracle no me ha hecho nada… y yo que te iba a obsequiar una SPARC por tu cumpleannos XD

        1.    eliotime3000 dijo

          Se refiere a nivel de software, no de hardware.

          1.    3ndriago dijo

            No, si vamos a aborrecer, aborrecemos todo, eso de medias tintas no mola… jejejejejeje

          2.    elav dijo

            xDDD

  4.   st0rmt4il dijo

    Gracias elav, por cierto, es recomendable tener ambos servidores web e iniciados a la vez?

    Saludos!

    1.    elav dijo

      Hay quién usa Apache como servidor Web y NGnix como proxy para las peticiones webs. Todo un lío. Por ejemplo cuando se usa Node.js, el cual usa un puerto del recarajo que nadie usa y posiblemente tu ISP lo tenga bloqueado 😀

  5.   eliotime3000 dijo

    Buen tuto de migración. Además, Slackware hace tiempo migró a MariaDB para evitarse mayor embrollo con MySQL.

    En cuanto se encuentre en el repo de seguridado backport de Debian, lo anunciaré lo más pronto posible. Por ahora estoy armando mi tuto acerca de la instalación/configuración/customizado de Slackware.

  6.   jlbaena dijo

    ¿ Pero kde sigue dependiendo de mysql (en debian) o con esta migración ya no es necesario ?

  7.   brunocascio dijo

    Entonces por lo que entendí, toda aplicación configurada con mysql no habría que reconfigurar nada de la misma? Sólo instalar MariaDB (y desinstalar mysql) y al mantener los nombres como mysql debería funcionar?

    Con respecto a rendimiento, se mencionan los cambios de motores.
    Tienen un desempeño destacable con los antiguos MylSam e InnoDB ?

    Alguién realizó alguna métrica?

    1.    elav dijo

      http://tuxapuntes.com/conociendo-un-poco-de-mariadb/

      1.    brunocascio dijo

        Entendí jaja, Gracias !

  8.   helena_ryuu dijo

    muchas gracias! ahora si me queda claro ;D

  9.   Javier dijo

    Unable to set password for the MariaDB “root” user

    │ An error occurred while setting the password for the MariaDB │
    │ administrative user. This may have happened because the account already │
    │ has a password, or because of a communication problem with the MariaDB │
    │ server. │
    │ │
    │ You should check the account’s password after the package installation. │
    │ │
    │ Please read the /usr/share/doc/mariadb-server-10.1/README.Debian file │
    │ for more information.

    1.    Javier dijo

      I uninstalled the mariadb maridb-server packages
      I removed the directory /var/lib/mysql.
      3 Reinstalled the Mariadb, Mariadb-server packages.
      systemct start mariadb; systemctl enable mariadb (problem solved).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.