MySQL: backup y restauración desde la línea de comandos
Requisitos
- Tener acceso a un terminal Unix/Linux
- Tener la contraseña del usuario root de MySQL, o la de otro usuario con acceso a la base de datos
Backup
Backup de una sola base de datos
Backup a un archivo de texto plano con los comandos SQL para restaurar las tablas y sus datos:
mysqldump -u [usuario] -p [nombre_base_de_datos] > [archivo].sql
Backup comprimido con gzip:
mysqldump -u [usuario] -p [nombre_base_de_datos] | gzip > [archivo].sql.gz
Backup comprimido con bzip2:
mysqldump -u [usuario] -p [nombre_base_de_datos] | bzip2 > [archivo].sql.bz2
Por lo general se pueden subir archivos .gz y .bz2 directamente a una base de datos usando PHPMyAdmin, así que es buena idea tener la salida comprimida.
Backup de más de una base de datos
mysqldump -u [usuario] -p --databases [bd_1] [bd_2] [bd_n] > [archivo].sql
Se pueden usar las mismas opciones de compresión que con una sola base de datos.
Backup de todas las bases de datos
mysqldump -u [usuario] -p --all-databases > [archivo].sql
Esto vuelca todas las bases de datos en un solo archivo. Muy útil para mover todas las bases de datos de un servidor a otro.
Restauración
Con el archivo dump es posible restaurar la base de datos con todas sus tablas en un nuevo servidor MySQL.
Primero, crea la base de datos:
mysql -u [usuario] -p
En el prompt mysql>:
create database [nombre_base_de_datos];
Crea un usuario para esa base de datos (no es obligatorio, pero es una buena práctica de seguridad):
grant all privileges on [nombre_base_de_datos].* to [nuevo_usuario]@[hostname] identified by '[contraseña]';
exit;
Restaurar el archivo dump
mysql -u [nuevo_usuario] -p [nombre_base_de_datos] < [archivo].sql
Si el archivo está comprimido, descomprímelo primero:
gunzip [archivo].sql.gz
bunzip2 [archivo].sql.bz2