Mover los archivos de datos de MySQL Server

En ocasiones es posible que nos interese tener los archivos dónde se encuentran los datos de MySQL en un directorio diferente del que viene configurado en la instalación del servidor. Vamos a ver que pasos debemos seguir si en un momento dado queremos migrar los datos de un MySQL Server a un directorio diferente.

Estos pasos han funcionado en diferentes equipos ejecutando un MySQL Server 5.0 con replicación (tanto en modo master cómo en slave) sobre un sistema Ubuntu 8.10. Los archivos de datos en este caso están almacenados en /var/lib/mysql y los vamos a migrar a /home/mysql

  • Creamos el directorio mysql en /home (si no lo tenemos creado ya):
    cd /home
    sudo mkdir mysql
  • Paramos el servidor de MySQL:
    sudo /etc/init.d/mysql stopEste paso hay diferentes formas de ejecturalo, se puede utilizar cualquier comando que pare el servidor MySQL.
  • Copiamos todo el contenido de /var/lib/mysql a /home/mysql :
    sudo cp -R /var/lib/mysql/* /home/mysql/Es muy importante no dejarse la opción -R ya que es la que nos permite copiar directorios con todo su contenido.
  • Una vez copiado el contenido si vamos al directorio /home/mysql veremos que el propietario de los archivos es root. Por este motivo debemos cambiar el propietario de todos los archivos y directorios (incluído /home/mysql):
    sudo chown -R mysql:mysql /home/mysqlOtra vez la opción -R nos permite realizar la operación recursivamente por todos los sub-directorios.
  • Editamos el fichero de configuración del servidor:
    sudo gedit /etc/mysql/my.confEn este ejemplo hemos empleado Gedit pero evidentemente puede editarse con editores del tipo vi o nano.

    Y en la línea dónde encontramos esto:
    ...
    datadir = /var/lib/mysql

    Ponemos lo siguiente:
    ...
    datadir = /home/mysql

  • Es posible que si intentáramos arrancar el servidor de base de datos funcionara pero en la mayoría de casos debemos modificar la configuración de AppArmor. Primero modificaremos uno de los archivos de configuración:
    sudo gedit /etc/apparmor.d/usr.sbin.mysqldY vamos a realizar la siguiente modificación, dónde nos encontremos con las líneas siguientes:
    ...
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    Vamos a poner lo siguiente:
    ...
    /var/lib/mysql/ r,
    /var/lib/mysql/** rwk,
    /home/mysql/ r,
    /home/mysql/** rwk,
    Si hacemos estas modificaciones pero no volvemos a arrancar AppArmor no nos va a servir de nada, así que antes de seguir al ultimo paso debemos ejecutar el siguiente comando:
    sudo /etc/init.d/apparmor restart
  • Para finalizar sólo tenemos que volver a arrancar el servidor MySQL:
    sudo /etc/init.d/mysql startSi todo ha ido bien el servidor no tardará mucho en arrancar ;)
    • Si una vez realizados estos pasos queremos asegurarnos que el servidor realmente esta almacenando los datos en el directorio que le hemos señalado podemos crear una base de datos vacía y ir al directorio /home/mysql/ y ejecutando el comando ‘ls’ mirar si se ha creado un directorio con el nombre de la base de datos nueva.

      Espero que os sirva!

One thought on “Mover los archivos de datos de MySQL Server

Leave a Reply

Your email address will not be published. Required fields are marked *