mysql
iTank ideas

Cómo mover las bases de datos MySQL a una partición independiente en un nuevo disco duro

mysql
Cómo mover las bases de datos MySQL a una partición independiente en un nuevo disco duro
(migrar mySQL databases)

0. Nueva ubicación de las bases de datos
Antes de empezar se asume que ya tenemos una partición montada como /mysql-databases
y cuyo propietario es el usuario mysql
~# chown mysql:mysql /home/mysql-databases/

si quereis saber cómo añadir discos, particiones, formatear y montarlas en el sistema os recomiendo mi artículo
https://www.jmarior.net/itank/ubuntu-linux-installing-a-new-harddrive/

1. Algunos apuntes importantes sobre MySQL
# El script de inicio que inicia el demonio de MySQL es /etc/init.d/mysql
# Los archivos de configuración de MySQL están en el directorio /etc/mysql
# Por defecto las bases de datos están en /var/lib/mysql/

Para todas las operaciones siguientes se asume que estamos utilizando el usuario root
~$ sudo su
tecleais vuestro password y se obtiene una sesión con prompt de root
~#

2. Detener Apache (y los servicios que utilicen bases de datos) y MySQL
~# /etc/init.d/apache2 stop
~# /etc/init.d/mysqld stop

3. Reconfigurar la localización del almacén de bases de datos en MySQL
Editar el fichero
~# nano /etc/mysql/my.cnf

y cambiar el valor de la variable datadir por nuestra nueva
datadir= /mnt/volume/mysqlDBs

4. Mover las bases de datos a la nueva partición
copiamos las BDDs
~# cp -ax /var/lib/mysql/* /mysql-databases

No olvideis que las bases de datos antiguas todavía están en /var/lib/mysql/ conviene eliminarlas para liberar espacio.

[Actualización del 26/10/2017]

Con Ubuntu server 16.04 LTS el procedimiento cambia un poco. Hay que seguir estos pasos y sobre todo: no utilizar el root de la partición sino un subdirectorio.

[Actualización del 03/05/2020]

Confirmo que con Ubuntu Server 18.04 el procedimiento se extiende así

5. Añadir una regla a AppArmor (AppArmor es un programa de seguridad para Linux que permite al administrador del sistema asociar a cada programa un perfil de seguridad que restrinja las capacidades de ese programa.)

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

añadir la línea (incuye la coma final)

alias /var/lib/mysql/ -> /mnt/volume/mysqlDBs/,

Reiniciar AppArmor

# systemctl restart apparmor

6.  Iniciar MySQL y Apache (y los servicios que utilicen bases de datos)
# systemctl start mysql
# systemctl start apache2

7. Verificar el efecto del cambio

# mysql -p

ejecutar el comanto SQL

mysql>select @@datadir;

y el output debería parecerse a esto

+-------------------------+
| @@datadir |
+-------------------------+
| /mnt/volume/mysqlDBs/ |
+-------------------------+
1 row in set (0.00 sec)

 

4 thoughts on “Cómo mover las bases de datos MySQL a una partición independiente en un nuevo disco duro

Comments are closed.