MySQL: backup y restauración desde la línea de comandos

Requisitos

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