Una tarea que suele ser frecuente es la de tener que llevar toda una base de datos MySQL de un servidor a otro. Por ejemplo, en un servidor de desarrollo a un servidor en producción, o de un servidor local a un servidor remoto, o desde un servidor maestro a un servidor esclavo.

Para esto nos vamos a valer de dos aplicaciones, incluidas en la distribución de MySQL:

  • mysql: el shell client de MySQL, desde el puedes hacer todo (o casi todo) lo que realizas con un cliente gráfico, aunque sacrificando un poco la operatividad.
  • mysqldump: la aplicación con la que puedes hacer un volcado (dump) de una base de datos o colección de base de datos o de una tabla o colección de tablas. Por defecto, como resultado devuelve un script sql.

Para exportar los datos, cierro y bloqueo las tablas y ejecuto mysqldump:

#Desde el shell del cliente mysql:
#Vuelco todos los datos de cache a disco, cierro y bloqueo todas las tablas
mysql> FLUSH TABLES WITH READ LOCK;

#Ejecuto mysqldump para hacer el backup
$ mysqldump -h ip_o_host_name -u nombre_de_usuario -p   nombre_base_de_datos --routines> backup.sql

#Desde el shell del cliente mysql:
#Desbloqueo las tablas
mysql> UNLOCK TABLES;

Para importar los datos, ejecuto el cliente mysql redireccionándole de la entrada estándar el archivo de backup (dump) realizado anteriormente:

$mysql -h ip_o_host_name -u nombre_de_usuario -p   nombre_base_de_datos <backup.sql