Cambiar directorio de base de datos de Mysql en Ubuntu

Pequeña hoja de ruta para cuando tengamos que reubicar nuestras bases de datos en un directorio o partición o disco diferente:

1) Detenemos el servicio Mysql

sudo service mysql stop

2) Creamos la nueva ubicación

sudo cp -R /var/lib/mysql /nueva/ubicacion/de/mysql

Y borramos los archivos ib_logfile

sudo rm /nueva/ubicacion/de/mysql/ib_logfile*

3) Asignamos propietario a los nuevos archivos

sudo chown -R mysql:mysql /nueva/ubicacion/de/mysql

4) Editamos la configuración de Mysql

Aquí un pequeño detalle, no vamos a cambiar el archivo /etc/mysql/my.cnf, sino que vamos a crear un nuevo archivo dentro de /etc/mysql/conf.d, por ejemplo: mi_configuracion.cnf

Usando este archivo vamos a poder sobrescribir definiciones de /etc/mysql/my.cnf sin preocuparnos por actualizaciones futuras que puedan pisar nuestro archivo.

Ahora si, dentro de /etc/mysql/conf.d/mi_configuracion.cnf, vamos a agregar la siguiente directiva.

datadir = /nueva/ubicacion/de/mysql

5) Detener AppArmor

sudo service apparmor stop

6) Modificar configuración AppArmor

Un detalle a tener en cuenta, así como NO modificamos /etc/mysql/my.cnf, tampoco vamos a modificar /etc/apparmor.d/usr.sbin.mysqld (si es que existiera).

Para aplicar cambios de configuración, vamos a seguir agregando configuraciones que resistan actualizaciones. Para nuestro caso, editamos (o creamos si no existe) el archivo:

/etc/apparmor.d/local/usr.sbin.mysqld

Y dentro del mismo, agregamos las siguientes líneas:

/nueva/ubicacion/de/mysql/ r,
/nueva/ubicacion/de/mysql/** rwk,

7) Iniciar AppArmor

sudo service apparmor start

8) Iniciar Mysql

sudo service mysql start

Si todo funcionó correctamente, si las bases de datos en la nueva ubicación funcionan correctamente y no ha habido ningún problema con los datos, podremos borrar /var/lib/mysql.