Ingresar  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o
Registrarse  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o

Mover un Directorio de Datos MySQL a una Nueva Ubicación en Ubuntu 16.04

 mover directorio de datos mysql en ubuntu

Introducción

Cómo Mover un Directorio de Datos MySQL a una Nueva Ubicación en Ubuntu 16.04. Las bases de datos crecen con el tiempo, a veces superando el espacio en el sistema de archivos. También puede encontrarse con contención de E / S cuando se encuentran en la misma partición que el resto del sistema operativo. RAID, almacenamiento en bloque de red y otros dispositivos pueden ofrecer redundancia y otras características deseables. Ya sea que esté agregando más espacio, evaluando formas de optimizar el rendimiento o buscando aprovechar otras características de almacenamiento, este tutorial lo guiará a través de la reubicación del directorio de datos de MySQL.

Prerrequisitos

Para completar este tutorial, necesitará:

En este ejemplo, estamos moviendo los datos a un dispositivo de almacenamiento de bloques montado en /mnt/volume-nyc1-01 .

Independientemente del almacenamiento subyacente que utilice, esta guía puede ayudarlo a trasladar el directorio de datos a una nueva ubicación.

Paso 1. Mover el Directorio de Datos MySQL

Para prepararnos para mover el directorio de datos de MySQL, verifiquemos la ubicación actual iniciando una sesión MySQL interactiva usando las credenciales administrativas.

mysql -u root -p

Cuando se le solicite, proporcione la contraseña de root de MySQL. Luego, desde el indicador de MySQL, seleccione el directorio de datos:

select @@datadir;
Output
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)

Este resultado confirma que MySQL está configurado para usar el directorio de datos predeterminado, /var/lib/mysql/, así que ese es el directorio que necesitamos mover. Una vez que haya confirmado esto, escriba exit para salir del monitor.

Para garantizar la integridad de los datos, cerraremos MySQL antes de realizar cambios en el directorio de datos:

sudo systemctl stop mysql

systemctl no muestra el resultado de todos los comandos de administración de servicios, por lo que si quiere asegurarse de que haya tenido éxito, use el siguiente comando:

sudo systemctl status mysql

Puede estar seguro de que se apaga si la línea final de la salida le dice que el servidor está detenido:


Output
. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Ahora que el servidor está cerrado, copiaremos el directorio de la base de datos existente a la nueva ubicación con rsync . El uso del indicador -a conserva los permisos y otras propiedades del directorio, mientras que -v proporciona un resultado detallado para que pueda seguir el progreso.

Nota. Asegúrese de que no haya una barra inclinada en el directorio, que puede agregarse si usa la terminación de tabulación. Cuando hay una barra inclinada, rsync volcará el contenido del directorio en el punto de montaje en lugar de transferirlo a un directorio que contenga mysql :

sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

Una vez que la rsync esté completa, cambie el nombre de la carpeta actual con una extensión .bak y consérvela hasta que hayamos confirmado que la jugada fue exitosa. Al volver a nombrarlo, evitaremos la confusión que pueda surgir de los archivos tanto en la ubicación nueva como en la antigua:

sudo mv /var/lib/mysql /var/lib/mysql.bak

Ahora estamos listos para dirigir nuestra atención a la configuración.

Paso 2. Apuntando a la Nueva Ubicación de Datos

MySQL tiene varias formas de anular los valores de configuración. De forma predeterminada, el datadir se establece en /var/lib/mysql en el archivo /etc/mysql/mysql.conf.d/mysqld.cnf . Edite este archivo para reflejar el nuevo directorio de datos:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Busque la línea que comienza con datadir= y cambie la ruta que sigue para reflejar la nueva ubicación.

En nuestro caso, el archivo actualizado se ve como el resultado a continuación:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .datadir=/mnt/volume-nyc1-01/mysql
. . .

Este parece ser el momento adecuado para volver a abrir MySQL, pero hay una cosa más que configurar antes de que podamos hacerlo con éxito.

Paso 3. Configuración de las Reglas de Control de Acceso de AppArmor

Tendremos que decirle a AppArmor que permita a MySQL escribir en el nuevo directorio creando un alias entre el directorio predeterminado y la nueva ubicación. Para hacer esto, edite el archivo de alias AppArmor:

sudo nano /etc/apparmor.d/tunables/alias

En la parte inferior del archivo, agregue la siguiente regla de alias:

/etc/apparmor.d/tunables/alias
. . .
alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,
. . .

Para que los cambios surtan efecto, reinicie AppArmor:

sudo systemctl restart apparmor

Nota. Si se saltó el paso de configuración de AppArmor, se encontrará con el siguiente mensaje de error:


Output

Job for mysql.service failed because the control process 
exited with error code. See "systemctl status mysql.service" 
and "journalctl -xe" for details.

La salida de systemctl y journalctl concluye con:


Output
Jul 18 11:03:24 ubuntu-512mb-nyc1-01 systemd[1]: 
mysql.service: Main process exited, code=exited, status=1/FAILURE

Dado que los mensajes no establecen una conexión explícita entre AppArmor y el directorio de datos, este error puede tardar un tiempo en resolverse.

Paso 4. Reiniciar MySQL

El siguiente paso es iniciar MySQL, pero si lo hace, se encontrará con otro error. Esta vez, en lugar de un problema de AppArmor, el error ocurre porque la secuencia de comandos mysql-systemd-start comprueba la existencia de un directorio, -d , o un enlace simbólico, -L , que coincide con dos rutas predeterminadas. No funciona si no se encuentran:

/usr/share/mysql/mysql-systemd-start
. . .
if [ ! -d /var/lib/mysql ] && [ ! -L /var/lib/mysql ]; then
 echo "MySQL data dir not found at /var/lib/mysql. Please create one."
 exit 1
fi
if [ ! -d /var/lib/mysql/mysql ] && [ ! -L /var/lib/mysql/mysql ]; then
 echo "MySQL system database not found. Please run mysql_install_db tool."
 exit 1
fi
. . .

Como necesitamos que estos inicien el servidor, crearemos la estructura de directorios mínima para pasar la verificación del entorno del script.

sudo mkdir /var/lib/mysql/mysql -p

Ahora estamos listos para iniciar MySQL.

sudo systemctl start mysql
sudo systemctl status mysql

Para asegurarse de que el nuevo directorio de datos esté realmente en uso, inicie el monitor MySQL.

mysql -u root -p

Mire nuevamente el valor para el directorio de datos:


Output
+----------------------------+
| @@datadir                  |
+----------------------------+
| /mnt/volume-nyc1-01/mysql/ |
+----------------------------+
1 row in set (0.01 sec)

Ahora que ha reiniciado MySQL y ha confirmado que está usando la nueva ubicación, aproveche la oportunidad para asegurarse de que su base de datos sea completamente funcional. Una vez que haya verificado la integridad de los datos existentes, puede eliminar el directorio de datos de la copia de seguridad:

sudo rm -Rf /var/lib/mysql.bak

Reinicie MySQL una vez más para asegurarse de que funciona como se espera:

sudo systemctl restart mysql
sudo systemctl status mysql

Conclusión

En este tutorial, hemos movido el directorio de datos de MySQL a una nueva ubicación y hemos actualizado las ACL de AppArmor de Ubuntu para adaptar el ajuste. Aunque estábamos usando un dispositivo de almacenamiento en bloques, las instrucciones aquí deberían ser adecuadas para redefinir la ubicación del directorio de datos, independientemente de la tecnología subyacente.

Para obtener más información sobre la administración de los directorios de datos de MySQL, consulte estas secciones en la documentación oficial de MySQL:

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la tecnología e informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

ImprimirCorreo electrónico

Donaciones - Tutoriales y VideoTutoriales Fututel

Dona si crees que lo merecemos. Ésto nos ayudará para seguir publicando y hacerte la vida más fácil :)

Cantidad: