🗄️ Cómo hacer backup y restore en MySQL (mysqldump) + exportar solo estructura o datos




Si trabajas con bases de datos, hay una regla que nunca debes olvidar:

Si no tienes backups, no tienes datos.

En MySQL, hacer copias de seguridad no es opcional. Es una práctica esencial para:

  • Evitar pérdida de información
  • Migrar proyectos entre servidores
  • Crear entornos de desarrollo
  • Recuperarte de errores o ataques

En esta guía aprenderás:

  • Cómo hacer backup completo de MySQL
  • Cómo restaurar una base de datos
  • Cómo exportar solo la estructura (sin datos)
  • Cómo exportar solo los datos
  • Cómo automatizar backups
  • Buenas prácticas reales de sysadmin

🧠 Qué es mysqldump y por qué usarlo


mysqldump es una herramienta oficial de MySQL que permite:

  • Exportar bases de datos a archivos .sql
  • Generar scripts reproducibles
  • Migrar datos fácilmente entre servidores

El resultado es un archivo de texto con:

  • CREATE DATABASE
  • CREATE TABLE
  • INSERT INTO

Es decir, una copia completa de tu base de datos en formato SQL.



📦 Backup completo de una base de datos


El caso más común.

mysqldump -u usuario -p basedatos > backup.sql

Ejemplo real:

mysqldump -u root -p tienda > tienda_backup.sql

Esto exporta:

  • estructura
  • datos
  • índices

🌍 Backup de todas las bases de datos


mysqldump -u root -p --all-databases > backup_total.sql

Ideal para:

  • migraciones completas
  • snapshots del servidor

📋 Backup de una sola tabla


mysqldump -u usuario -p basedatos tabla > tabla.sql

Ejemplo:

mysqldump -u root -p tienda usuarios > usuarios.sql

Muy útil para:

  • debugging
  • migraciones parciales

🧱 Exportar solo la estructura (SIN datos)


https://planetscale.com/assets/blog/content/schema-design-101-relational-databases/db72cc3ac506bec544588454972113c4dc3abe50-1953x1576.png


Esto es extremadamente útil y sí, es muy buscado 🔥

mysqldump -u usuario -p --no-data basedatos > estructura.sql

Esto incluye:

  • CREATE TABLE
  • índices
  • claves primarias y foráneas

Pero NO incluye:

  • registros

¿Cuándo usarlo?

  • Crear entornos de desarrollo
  • Compartir estructura sin datos sensibles
  • Versionar base de datos

📊 Exportar solo datos (SIN estructura)


mysqldump -u usuario -p --no-create-info basedatos > datos.sql

Incluye:

  • INSERT INTO

Pero no incluye:

  • CREATE TABLE


🔄 Cómo restaurar una base de datos


Restaurar en una base existente

mysql -u usuario -p basedatos < backup.sql

Restaurar creando la base automáticamente


mysql -u root -p < backup.sql

Esto funciona si el backup incluye:

CREATE DATABASE
USE basedatos;

🗜️ Backups comprimidos (muy recomendado)


https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/img/bradv043.png

https://miro.medium.com/v2/resize%3Afit%3A1400/1%2A5GnQopYPwp6H-W2R5F-GNQ.png



Para ahorrar espacio:

mysqldump -u root -p basedatos | gzip > backup.sql.gz

Restaurar backup comprimido

gunzip < backup.sql.gz | mysql -u root -p basedatos

⏱️ Automatizar backups con cron


Esto es lo que separa a un usuario normal de un sysadmin 😄

Editar cron:

crontab -e

Ejemplo: backup diario a las 3 AM

0 3 * * * mysqldump -u root -pPASSWORD basedatos > /backups/backup.sql

Recomendación profesional


Mejor usar script:

#!/bin/bash
fecha=$(date +%F)
mysqldump -u root -pPASSWORD basedatos > /backups/backup_$fecha.sql


⚠️ Errores comunes


❌ Olvidar permisos

El usuario debe tener acceso a la base.



❌ No probar el restore

Un backup no sirve si no puedes restaurarlo.



❌ No automatizar

Hacer backups manuales es un error clásico.



❌ Guardar backups en el mismo servidor

Si el servidor cae, pierdes todo.



🧠 Buenas prácticas


  • Mantener múltiples copias
  • Usar compresión
  • Guardar backups fuera del servidor
  • Probar restauraciones
  • Automatizar procesos


🚀 Casos reales de uso


Migración de servidor

  • backup
  • restore en nuevo servidor

Desarrollo

  • exportar estructura sin datos


Debugging

  • exportar tabla específica




🧠 Conclusión:


Dominar mysqldump es una de las habilidades más importantes en MySQL.

Te permite:

  • proteger tus datos
  • migrar proyectos
  • trabajar de forma profesional

Y lo mejor:

Con unos pocos comandos puedes controlar completamente tus backups.

Post relacionados:

Si llegaste aquí pero no tienes muy claro que es MySQL:




Si eres más curioso, te pueden interesar: