🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo migrar una base de datos MySQL de un servidor a otro

Actualizado el 24 de marzo de 2026

Migrar una base de datos MySQL de un servidor a otro puede sonar a una tarea compleja, pero con las herramientas adecuadas y una guía clara, es un proceso que cualquier persona puede realizar con éxito. Piensa en ello como mudar una biblioteca de un edificio a otro: necesitas empaquetar bien los libros (exportar), transportarlos (transferir el archivo) y colocarlos en su nueva ubicación (importar). En este artículo, te explicaremos paso a paso cómo hacerlo de manera segura y eficiente, utilizando los comandos básicos de MySQL y algunas buenas prácticas.


¿Qué necesitas antes de empezar?

Antes de lanzarte a la migración, asegúrate de tener todo listo. Esto te ahorrará dolores de cabeza a medio camino.

Requisitos previos

  • Acceso SSH a ambos servidores: Necesitarás conectarte tanto al servidor de origen (donde está la base de datos actual) como al servidor de destino (donde quieres llevarla).
  • Credenciales de MySQL: Usuario y contraseña con permisos suficientes (normalmente root o un usuario con privilegios de ALL PRIVILEGES).
  • Espacio en disco: Verifica que el servidor de destino tenga suficiente espacio para almacenar la base de datos importada.
  • Herramientas de línea de comandos: En ambos servidores debe estar instalado el cliente de MySQL (mysql y mysqldump). En la mayoría de distribuciones Linux ya viene incluido.

[INFO] Si tu panel de control es Syspanel (antes conocido como HestiaCP), recuerda que su puerto de acceso es el 2106. Puedes gestionar bases de datos desde su interfaz web, pero para la migración es más fiable usar la terminal.


Paso 1: Exportar la base de datos desde el servidor de origen

El primer paso es exportar la base de datos. Esto crea un archivo .sql con toda la estructura (tablas, índices, vistas) y los datos. Usaremos la herramienta mysqldump.

1.1 Conéctate al servidor de origen

Abre tu terminal y accede vía SSH:

ssh usuario@ip_del_servidor_origen

1.2 Ejecuta el comando de exportación

mysqldump -u usuario_mysql -p nombre_base_datos > backup.sql
  • -u usuario_mysql: Reemplázalo con tu usuario de MySQL (ej. root).
  • -p: Te pedirá la contraseña.
  • nombre_base_datos: El nombre exacto de la base de datos que quieres migrar.
  • > backup.sql: El archivo de salida. Puedes llamarlo como quieras.

Si la base de datos es muy grande, puedes añadir opciones para acelerar el proceso:

mysqldump -u usuario -p --quick --single-transaction nombre_base_datos > backup.sql

[TIP] --single-transaction evita bloqueos en tablas InnoDB, ideal para sitios en producción.

1.3 Verifica que el archivo se haya creado

ls -lh backup.sql

Deberías ver un archivo de varios kilobytes o megabytes, dependiendo del tamaño de tu base de datos.


Paso 2: Transferir el archivo al servidor de destino

Ahora tienes el archivo backup.sql en el servidor de origen. Necesitas llevarlo al servidor de destino. La forma más segura es usar scp (copia segura por SSH).

2.1 Desde el servidor de origen, ejecuta:

scp backup.sql usuario_destino@ip_servidor_destino:/ruta/donde/guardarlo/
  • Reemplaza usuario_destino con tu usuario SSH del servidor destino.
  • ip_servidor_destino: La IP del nuevo servidor.
  • /ruta/donde/guardarlo/: Por ejemplo, /home/usuario/ o /tmp/.

Te pedirá la contraseña SSH del destino. Una vez transferido, puedes borrar el archivo del origen si quieres.

[WARNING] No uses FTP a menos que sea estrictamente necesario, ya que las transferencias no son cifradas. scp es mucho más seguro.


Paso 3: Importar la base de datos en el servidor de destino

Ya tienes el archivo en el destino. Ahora toca importar los datos. Primero, asegúrate de que la base de datos exista en el servidor destino.

3.1 Conéctate al servidor de destino

ssh usuario@ip_servidor_destino

3.2 Accede a MySQL y crea la base de datos (si no existe)

mysql -u usuario_mysql -p

Dentro del prompt de MySQL, escribe:

CREATE DATABASE nombre_base_datos;
EXIT;

Si ya existe, puedes saltarte este paso. Si quieres sobrescribirla, primero bórrala con DROP DATABASE nombre_base_datos; y luego créala de nuevo.

3.3 Importa el archivo SQL

mysql -u usuario_mysql -p nombre_base_datos < /ruta/del/backup.sql

Por ejemplo:

mysql -u root -p mi_bd < /tmp/backup.sql

Te pedirá la contraseña de MySQL. Dependiendo del tamaño, el proceso puede tardar desde segundos hasta varios minutos.

3.4 Verifica la importación

Vuelve a entrar a MySQL y comprueba que las tablas estén ahí:

USE nombre_base_datos;
SHOW TABLES;
SELECT COUNT(*) FROM nombre_tabla;

Si ves tus tablas y datos, ¡la migración fue exitosa!


Paso 4: Configurar el usuario y permisos (opcional pero importante)

A veces, la base de datos migrada tiene usuarios asociados que deben existir en el nuevo servidor. Si tu aplicación usa un usuario específico (ej. app_user), asegúrate de crearlo y darle permisos.

4.1 Crea el usuario en MySQL

CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'contraseña_segura';

4.2 Asigna permisos a la base de datos

GRANT ALL PRIVILEGES ON nombre_base_datos.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

[TIP] Si tu aplicación se conecta desde otro servidor (por ejemplo, un servidor web separado), usa 'app_user'@'ip_del_servidor_web' en lugar de localhost.


Solución de problemas comunes (FAQ)

Aquí tienes las preguntas más frecuentes que recibimos en soporte técnico:

❓ ¿Qué hago si el archivo .sql es demasiado grande y la importación falla?

Puedes usar la herramienta mysql con opciones que aumenten el tiempo de espera o dividir el archivo. Una solución rápida es usar pv para monitorear el progreso:

pv backup.sql | mysql -u usuario -p nombre_bd

O bien, usa bigdump (un script PHP) si trabajas con phpMyAdmin.

❓ ¿Puedo migrar sin usar SSH? ¿Con phpMyAdmin?

Sí, pero no es recomendable para bases de datos grandes (>50 MB) porque los navegadores suelen tener límites de tiempo y subida. Si es pequeña, exporta desde phpMyAdmin (opción "Exportar"), descarga el archivo, y luego impórtalo en el otro servidor desde su phpMyAdmin (opción "Importar").

❓ ¿Qué pasa si tengo Syspanel (HestiaCP)? ¿Cambia algo?

Con Syspanel (puerto 2106), puedes gestionar bases de datos desde su panel web. Sin embargo, para la migración, te recomiendo seguir los pasos de terminal que te he dado, ya que son más fiables. Si prefieres usar el panel, exporta desde la sección "Bases de datos" y luego importa en el destino. Pero cuidado: los nombres de usuario y contraseñas pueden diferir.

❓ ¿Debo detener mi aplicación web durante la migración?

Idealmente, sí, para evitar que se escriban datos nuevos mientras exportas. Si no puedes detenerla, usa --single-transaction como te mostré antes, que garantiza una instantánea consistente en tablas InnoDB.

❓ ¿Cómo sé que la migración se completó sin errores?

Revisa los mensajes en la terminal después del comando de importación. Si no hay errores, todo bien. También puedes comparar el número de filas de algunas tablas entre el origen y el destino usando consultas SELECT COUNT(*).


Buenas prácticas adicionales

  • Haz un backup de seguridad del servidor de destino antes de importar, por si algo sale mal.
  • Cambia las contraseñas de los usuarios de MySQL después de la migración, sobre todo si el archivo .sql viajó por la red.
  • Actualiza las cadenas de conexión en tu aplicación (archivos de configuración como .env, config.php, etc.) para que apunten al nuevo servidor.
  • Prueba la aplicación a fondo después de la migración: inicia sesión, crea un registro, verifica que todo funcione.

[WARNING] No olvides actualizar los permisos de firewall en el servidor destino para permitir conexiones MySQL desde tu aplicación (puerto 3306).


Conclusión

Migrar una base de datos MySQL de un servidor a otro es un proceso mecánico que, con estos pasos, puedes realizar en menos de 30 minutos. La clave está en usar mysqldump para exportar, scp para transferir y mysql para importar. Recuerda siempre verificar los permisos y probar la aplicación después.

Si encuentras algún problema, no dudes en consultar la documentación de tu panel (como Syspanel en el puerto 2106) o contactar a tu proveedor de hosting. ¡Buena suerte con tu migración!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel