Cómo importar y exportar bases de datos MySQL por consola en Linux
Exportar e importar una base de datos MySQL desde la consola de Linux es una tarea habitual para crear copias de seguridad, migrar una aplicación entre servidores o restaurar una base de datos.
Las dos herramientas principales son:
mysqldump, para exportar la base de datos.mysql, para importar el archivo SQL resultante.
En esta guía veremos los comandos más habituales y algunas opciones útiles para trabajar con servidores locales y remotos.
Requisitos previos
Antes de empezar necesitamos:
- acceso al servidor Linux;
- un usuario MySQL con los permisos necesarios;
- conocer el nombre de la base de datos;
- y disponer de acceso por terminal, localmente o mediante SSH.
Si el servidor es remoto, podemos conectarnos mediante un cliente SSH como PuTTY o directamente con el comando ssh desde un terminal compatible.
Una vez dentro del servidor podremos ejecutar directamente las operaciones de importación y exportación.
Exportar una base de datos MySQL con mysqldump
Para exportar una base de datos completa a un archivo SQL:
mysqldump -u usuario -p nombre_base_datos > backup.sql
Por ejemplo:
mysqldump -u root -p tienda > tienda.sql
El archivo tienda.sql contendrá las instrucciones SQL necesarias para reconstruir las tablas y sus datos.
mysqldump escribe el resultado en la salida estándar y utilizamos > para guardarlo en un archivo.
Importar una base de datos MySQL desde un archivo SQL
Para restaurar un dump sobre una base de datos existente:
mysql -u usuario -p nombre_base_datos < backup.sql
Por ejemplo:
mysql -u root -p tienda < tienda.sql
Si la base de datos todavía no existe, podemos crearla primero:
mysql -u root -p
Y dentro del cliente MySQL:
CREATE DATABASE tienda;
Después salimos:
exit;
Y realizamos la importación:
mysql -u root -p tienda < tienda.sql
También podemos entrar en MySQL y utilizar:
source /ruta/al/backup.sql;
Tutorial en vídeo: importar y exportar MySQL desde Linux
Exportar una base incluyendo CREATE DATABASE
Hay una diferencia importante entre:
mysqldump -u root -p tienda > tienda.sql
y:
mysqldump -u root -p --databases tienda > tienda.sql
Cuando utilizamos --databases, el archivo generado incluye instrucciones para crear y seleccionar la base de datos.
Esto permite posteriormente restaurarlo sin especificar una base de datos de destino:
mysql -u root -p < tienda.sql
Es especialmente práctico en migraciones.
Exportar varias bases de datos
Para exportar varias bases en un único archivo:
mysqldump -u root -p --databases base1 base2 base3 > backup.sql
Para restaurarlas:
mysql -u root -p < backup.sql
Exportar todas las bases de datos MySQL
Para crear un volcado de todas las bases accesibles para el usuario:
mysqldump -u root -p --all-databases > todas-las-bases.sql
La restauración se realiza con:
mysql -u root -p < todas-las-bases.sql
Los permisos del usuario determinarán qué bases e información pueden exportarse.
Exportar una base de datos comprimida con gzip
Para bases grandes podemos comprimir directamente la salida:
mysqldump -u root -p tienda | gzip > tienda.sql.gz
Para restaurarla sin generar previamente el archivo .sql:
gunzip < tienda.sql.gz | mysql -u root -p tienda
También podemos utilizar:
gzip -dc tienda.sql.gz | mysql -u root -p tienda
Esto resulta útil para ahorrar espacio y facilitar la transferencia de dumps de cierto tamaño.
Exportar o importar MySQL desde un servidor remoto
Si MySQL se encuentra en otro servidor, utilizamos -h para indicar el host:
mysqldump -h servidor.example.com -u usuario -p tienda > tienda.sql
Para importar:
mysql -h servidor.example.com -u usuario -p tienda < tienda.sql
Si el servidor utiliza un puerto diferente:
mysql -h servidor.example.com -P 3307 -u usuario -p tienda < tienda.sql
El servidor deberá aceptar conexiones desde el origen y el usuario tendrá que disponer de los permisos necesarios.
Incluir procedimientos, funciones y eventos
Si utilizamos procedimientos almacenados o funciones:
mysqldump -u root -p --routines tienda > tienda.sql
Para incluir también eventos:
mysqldump -u root -p --routines --events tienda > tienda.sql
Los triggers se incluyen normalmente con las tablas. Las rutinas y eventos requieren prestar atención a las opciones correspondientes.
Una exportación más completa podría ser:
mysqldump -u root -p --routines --events tienda > tienda.sql
Copias consistentes con tablas InnoDB
Para bases InnoDB en funcionamiento podemos utilizar:
mysqldump -u root -p --single-transaction tienda > tienda.sql
Esta opción resulta útil para obtener un volcado consistente de tablas transaccionales sin mantener el bloqueo tradicional de tablas durante toda la operación.
Por ejemplo:
mysqldump -u root -p \
--single-transaction \
--routines \
--events \
tienda > tienda.sql
No conviene añadir opciones automáticamente: debemos utilizar únicamente las que correspondan a nuestra base de datos.
Evita escribir la contraseña directamente en el comando
No recomiendo utilizar comandos como:
mysqldump -u usuario -pMiPassword tienda > tienda.sql
La contraseña puede quedar expuesta en el historial del shell o mediante otros mecanismos del sistema.
Es preferible:
mysqldump -u usuario -p tienda > tienda.sql
y escribir la contraseña cuando MySQL la solicite.
Para procesos automatizados existen mecanismos específicos de configuración y gestión de credenciales.
Errores habituales al importar o exportar MySQL
Access denied
Si aparece:
Access denied for user
comprueba usuario, contraseña, host desde el que puede conectarse y permisos sobre la base de datos.
Unknown database
Si aparece:
Unknown database
probablemente la base de destino no existe.
Créala previamente o genera el dump utilizando --databases.
El archivo SQL es muy grande
Trabajar desde consola evita muchas de las restricciones de subida habituales de las herramientas web.
Además, podemos utilizar gzip para reducir el espacio necesario para guardar o transferir el dump.
Exportar MySQL no sustituye a una estrategia de backup
mysqldump es una herramienta muy útil para realizar copias lógicas, migraciones y restauraciones.
Pero una estrategia de backup empresarial debe definir también:
- frecuencia;
- retención;
- ubicación de las copias;
- automatización;
- monitorización;
- cifrado cuando corresponda;
- y pruebas periódicas de restauración.
Un backup que nunca se ha restaurado con éxito no garantiza por sí solo que podamos recuperar el servicio cuando lo necesitemos.
En ENDEOS gestionamos servidores, bases de datos, monitorización y continuidad dentro de nuestros servicios de Administración de Sistemas.
- factory_shortcodes_assets:
- a:0:{}
- classic-editor-remember:
- classic-editor






