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.

1 respuesta

  1. renato marin dice:

    aun no lo pruebo… pero tengo una duda… lo que pasa es que tengo una raspberry pi… que usa mariadb y bueno como trabajare con muchos datos en esta… se me ocurrio comprar un disco duro externo de 1 tera… pero el problema… es que no que modificar y como decirle a mariadb que quiero que guarde toda la base de datos en el disco duro… veo que lo mandas a /data/ en mi caso ese seria el nombre del disco o tengo dar otra orden… gracias de ante mano 😀

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.