Introducción
Las bases de datos crecen con el tiempo y pueden volverse demasiado grandes para el espacio de su sistema de archivos.
Para evitar que crezcan fuera del espacio de almacenamiento disponible, puede mover de forma segura el directorio de datos maestros de su MySQL a otra ubicación. Esto le permite liberar más espacio, aprovechar al máximo las instalaciones de almacenamiento y optimizar el rendimiento de estas funciones. Esta es una tarea común para el hosting MySQL.
Estas instrucciones le ayudarán a mover el directorio de datos maestros de su base de datos MySQL a otra ubicación.
¿Listo? ¡Vamos!
Antes de que empieces
Para que este proceso tenga éxito, necesitará lo siguiente:
- MySQL, instalado y configurado en su servidor Ubuntu 18.04
- Además, utilizamos / mnt / volume-can3-01 como una nueva ubicación de almacenamiento para el directorio de datos maestros.
Paso 1: reubicar el directorio de datos maestros
Si mueve el directorio de datos raíz de su MySQL, lo primero que debe hacer es determinar su ubicación actual. Usaremos las credenciales de administrador para iniciar la sesión interactiva de MySQL: Primero, ejecute el siguiente comando para acceder a su símbolo del sistema de MySQL.
$ mysql -u root -p
Ingrese su contraseña de root de MySQL y haga clic en INGRESAR. Tan pronto como acceda al indicador de MySQL, seleccione el directorio de datos maestros deseado:
msql>
select @@datadir;
Esto le dará un resultado similar al siguiente:
+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)
El resultado anterior indica que la base de datos MySQL está configurada para su uso / var / lib / mysql / como directorio predeterminado. Este es nuestro interesante directorio. Hemos confirmado que este es el directorio de datos que necesitamos mover a otra ubicación. Ahora usa el Salida Comando para salir del monitor.
Para preservar la integridad de sus datos, ejecute el siguiente comando para cerrar su servicio MySQL antes de realizar cambios en su directorio de datos.
$ sudo systemctl stop mysql
El comando anterior es defectuoso; no indica el estado del comando de servicio. Ejecute el siguiente comando para ver si cerró con éxito su servicio MySQL:
$ sudo systemctl status mysql
Si obtiene un resultado con la siguiente línea, MySQL se detuvo correctamente:
. . . Sep 27 11:24:20 ubuntu-512mb-can3-01systemd[1]: StoppedMySQLCommunityServer.
El servidor de la base de datos MySQL no se está ejecutando y ahora es seguro mover el directorio de datos maestros a otra ubicación. Usamos el comando rsync para lograr esto:
$ sudo rsync -av /var/lib/mysql /mnt/volume-can3-01
El comando anterior contiene un -una bandera para conservar los permisos y otras propiedades del directorio. También tiene el -v bandera que proporciona una salida detallada para que pueda seguir el progreso sin problemas.
Cuando finalice el proceso rsync, use .bak Extensión para cambiar el nombre de su carpeta actual.
$ sudo mv /var/lib/mysql /var/lib/mysql.bak
Cambiar el nombre de esta carpeta elimina la confusión asociada con la ubicación del archivo nuevo y antiguo. Conserve la carpeta actual hasta que se confirme que el movimiento se ha realizado correctamente.
Ahora podemos concentrarnos en la configuración.
Paso 2: configura tu nuevo directorio de datos
El servidor de base de datos MySQL puede anular las reglas de configuración de varias formas. De forma predeterminada, el directorio de datos de MySQL se encuentra en el archivo /etc/mysql/mysql.conf.d/mysqld.cnf eso es parte del / var / lib / mysql Directorio. Primero, ejecute el siguiente comando para abrir el archivo:
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Una vez que el archivo esté abierto, ubique la línea con el valor Directorio de datos =. Edite la ruta que sigue a esta línea para reflejar / mnt / volume-can3-01 / mysql, es decir:
. . . datadir=/mnt/volume-can3-01/mysql . . .
Casi ha terminado con la configuración, pero hay un aspecto más que debe configurarse. Necesitas configurar AppArmor para permitir que el servidor de base de datos MySQL escriba en su directorio recién creado. Crearemos un alias entre nuestra nueva ubicación y el directorio antiguo.
Primero, ejecute el siguiente comando para abrir el archivo de alias de AppArmor:
$ sudo nano /etc/apparmor.d/tunables/alias
A continuación, agregue la siguiente regla de alias al final de este archivo:
. . . alias /var/lib/mysql/ -> /mnt/volume-can3-01/mysql/, . . .
Ahora reinicie AppArmor para implementar estos cambios:
$ sudo systemctl restart apparmor
Darse cuenta: Si AppArmor no está configurado correctamente, recibirá el siguiente mensaje de error:
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and"journalctl -xe"for details.
Además, tanto el journalctl y systemctl proporcionará resultados que terminan con los siguientes puntos:
Jul 1912:04:23 ubuntu-512mb-nyc1-01 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Paso 3: reinicia el servicio MySQL
¡Reiniciar MySQL no debería ser difícil! Sin embargo, si reinicia el servicio, recibirá un mensaje de error en este momento. El error no se debe a un AppArmor mal configurado, sino a la falta de un directorio y un enlace simbólico. Eso ocurre cuando mysql-systemd-start no puede usar un enlace simbólico-L) o un directorio (-D).
/ 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 . . .
Para pasar la prueba del entorno de scripting mysql-systemd-start, crearemos un modelo de directorio básico para iniciar el servidor MySQL sin ningún problema.
$ sudo mkdir /var/lib/mysql/mysql -p
Ahora puede reiniciar su servicio MySQL
$ sudo systemctl start mysql $ sudo systemctl status mysql
Ahora inicie sesión en su indicador de MySQL:
$ mysql -u root -p
Consulte el directorio de datos maestros
msql>
select @@datadir;
Si se utiliza el nuevo directorio, obtendrá el resultado:
+----------------------------+ | @@datadir | +----------------------------+ | /mnt/volume-can3-01/mysql/ | +----------------------------+ 1 row in set (0.01 sec)
A continuación, confirme que la nueva base de datos esté funcionando correctamente y verifique la autenticidad de los datos existentes. Si todo está bien, ejecute el siguiente comando para guardar el archivo de respaldo con la extensión. borrar .bak Extensión.
$ sudo rm -Rf /var/lib/mysql.bak
Reinicie su servicio MySQL una vez más para implementar todos los cambios:
$ sudo systemctl restart mysql $ sudo systemctl status mysql
¡Eso es todo!
Conclusión
¡Felicidades! Ha movido correctamente el directorio de datos maestros de su servidor de base de datos MySQL a otra ubicación y ha configurado AppArmor para guardar los nuevos cambios.