Cómo cambiar el directorio de datos en MySQL y MariaDB en Linux

Sin duda los gestores de base de datos MySQL y MariaDB son uno de los más populares. De hecho, esta misma web, los tiene baja el capó, desde hace muchos años, funcionando de maravilla. Pues bien, hoy os voy a explicar como cambiar el directorio de almacenamiento por defecto, por otro que más nos interese.

Esto tiene mucho sentido, ya que por defecto se almacenarán las bases de datos en /var/lib/mysql, por lo menos en la mayoría de sistemas GNU/Linux. Pero, a medida que vaya creciendo, sobre todo si trabaja con gran cantidad de datos, puede causar problemas de espacio en el sistema de ficheros. Sobre todo sabiendo que en var se almacenan los registros del sistemas, de aplicaciones o de la caché.

Por lo que, lo adecuado, por lo menos en entornos que gestionan muchas base de datos, de gran tamaño, es tener su almacenamiento en un FS aparte. Si puede ser en un FS que trabaje con LVM, mejor que mejor, ya que facilita mucho su ampliación, en el caso que fuese necesario.

Cambiar el directorio de datos en MySQL y MariaDB

Imaginemos que hemos creado un nuevo LVM montado sobre la carpeta «/datos», a la que le hemos asignado como propietario y grupo a mysql. Para muestra un botón:

sudo chown -R mysql:mysql /data

A continuación vamos a identificar la ruta actual, accediendo al entorno de MySQL:

sudo mysql -u root -p -e "SELECT @@datadir;"

Con el resultado:

Mostrar ubicación configurada de los datos

Copiamos las bases de datos a la nueva ubicación, previa parada del motor:

sudo systemctl stop mariadb
sudo systemctl is-active mariadb

Una vez hecho esto, ya podemos copiar:

sudo cp -R -p /var/lib/mysql/* /data
#Esto también se podría hacer con rsync

Ahora toca configurar la nueva ruta, para ello vamos a modificar el fichero de configuración en /etc/my.cnf o bien en /etc/mysql/my.cnf

En el caso de Mariadb con Raspberry Pi, que es donde estoy haciendo las pruebas, la ruta es /etc/mysql/mariadb.conf.d/50-server.cnf.

Modificamos la configuración justo en las secciones llamadas [mysql] y [client], como sigue:

[mysqld]:
datadir=/data
socket=/data/mysql.sock
 
[client]:
port=3306
socket=/data/mysql.sock

Guardamos y salimos.

Comprobamos el cambio:

Carpeta cambiada en la configuración

Para comprobar que todo ha ido bien vamos a crear una nueva base de datos, por ejemplo:

sudo mysql -u root -p -e "CREATE DATABASE test;"

Y buscamos el fichero de datos recién creado en la carpeta:

Ficheros de datos creados en la carpeta

Y esto es todo. De MySQL y MariaDB hemos hablado largo y tendido en la web, os invito a echar un vistazo.

Recuerda que puedes ayudar esta web de muchas maneras, compartiendo esta entrada en tus redes sociales favoritas, dejando un comentario o bien haciendo un aporte mediante la página de Paypal.