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:
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:
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:
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.