Migrar base de datos entre servidores


¿Qué es migrar una base de datos?

Migrar una base de datos significa transferir todos los datos, estructura y configuraciones de una base de datos desde un servidor origen a un servidor destino. Esto es común cuando cambiás de hosting, actualizás servidores o necesitás mover datos a un entorno diferente.


Métodos de migración

Existen varios métodos para migrar bases de datos MySQL/MariaDB:

  • mysqldump: Exporta a SQL y luego importa (más común)
  • Replicación: Sincroniza datos en tiempo real
  • Copia directa de archivos: Copia los archivos físicos de la base de datos
  • Herramientas GUI: phpMyAdmin, MySQL Workbench, etc.

Método 1: Usando mysqldump (Recomendado)

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

# Exportar base de datos completa
mysqldump -u usuario -p nombre_base_datos > backup.sql

# Exportar con charset UTF-8
mysqldump -u usuario -p --default-character-set=utf8mb4 nombre_base_datos > backup.sql

# Exportar todas las bases de datos
mysqldump -u usuario -p --all-databases > todas_las_bases.sql

# Exportar solo estructura (sin datos)
mysqldump -u usuario -p --no-data nombre_base_datos > estructura.sql

# Exportar solo datos (sin estructura)
mysqldump -u usuario -p --no-create-info nombre_base_datos > datos.sql

Paso 2: Transferir el archivo al servidor destino

Usando SCP:

scp backup.sql usuario@servidor_destino:/ruta/destino/

Usando FTP/SFTP:

Subí el archivo usando FileZilla, WinSCP o cualquier cliente FTP.

Usando rsync:

rsync -avz backup.sql usuario@servidor_destino:/ruta/destino/

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

mysql -u root -p
CREATE DATABASE nombre_base_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;

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

mysql -u usuario -p nombre_base_datos < backup.sql

O desde dentro de MySQL:

mysql -u usuario -p
USE nombre_base_datos;
SOURCE /ruta/completa/backup.sql;

Método 2: Migración directa entre servidores

Si ambos servidores tienen acceso entre sí, podés hacer la migración directamente:

# En el servidor destino
mysqldump -h servidor_origen -u usuario -p nombre_base_datos | mysql -u usuario -p nombre_base_datos

O usando un túnel SSH:

# Crear túnel SSH
ssh -L 3307:localhost:3306 usuario@servidor_origen

# En otra terminal, migrar a través del túnel
mysqldump -h 127.0.0.1 -P 3307 -u usuario -p nombre_base_datos | mysql -u usuario -p nombre_base_datos

Método 3: Usando phpMyAdmin

Exportar:

  1. Accedé a phpMyAdmin en el servidor origen
  2. Seleccioná la base de datos
  3. Hacé clic en "Exportar"
  4. Elegí el método "Personalizado"
  5. Seleccioná todas las tablas y opciones necesarias
  6. Hacé clic en "Continuar" y descargá el archivo SQL

Importar:

  1. Accedé a phpMyAdmin en el servidor destino
  2. Creá la base de datos si no existe
  3. Seleccioná la base de datos
  4. Hacé clic en "Importar"
  5. Seleccioná el archivo SQL descargado
  6. Hacé clic en "Continuar"

Verificar la migración

1. Verificar que todas las tablas se importaron:

mysql -u usuario -p nombre_base_datos
SHOW TABLES;

2. Verificar el número de registros:

SELECT COUNT(*) FROM nombre_tabla;

3. Comparar tamaños:

SELECT 
    table_name AS 'Tabla',
    table_rows AS 'Filas',
    ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Tamaño (MB)'
FROM information_schema.TABLES
WHERE table_schema = 'nombre_base_datos'
ORDER BY (data_length + index_length) DESC;

4. Verificar usuarios y permisos:

SELECT user, host FROM mysql.user WHERE user = 'nombre_usuario';
SHOW GRANTS FOR 'nombre_usuario'@'localhost';

Migrar usuarios y permisos

Los usuarios no se migran automáticamente con mysqldump. Para migrarlos:

# Exportar usuarios
mysql -u root -p -e "SELECT CONCAT('CREATE USER ''', user, '''@''', host, ''' IDENTIFIED BY ''password'';') FROM mysql.user WHERE user != 'root' AND user != '';" > usuarios.sql

# O más simple, exportar tabla de usuarios
mysqldump -u root -p mysql user db tables_priv columns_priv procs_priv > usuarios_permisos.sql

# Importar en servidor destino
mysql -u root -p mysql < usuarios_permisos.sql
FLUSH PRIVILEGES;

Migrar bases de datos grandes

Para bases de datos muy grandes, considerá estas opciones:

1. Comprimir durante la exportación:

mysqldump -u usuario -p nombre_base_datos | gzip > backup.sql.gz

2. Exportar por tablas:

# Listar tablas
mysql -u usuario -p -e "SHOW TABLES FROM nombre_base_datos;" > tablas.txt

# Exportar cada tabla por separado
for tabla in $(cat tablas.txt); do
    mysqldump -u usuario -p nombre_base_datos $tabla > ${tabla}.sql
done

3. Usar mydumper (herramienta más rápida):

# Instalar mydumper
sudo apt install mydumper

# Exportar
mydumper -u usuario -p contraseña -B nombre_base_datos -o /ruta/backup/

# Importar
myloader -u usuario -p contraseña -d /ruta/backup/

Problemas comunes y soluciones

Error: "Access denied"

  • Verificá que el usuario tenga permisos en ambos servidores
  • Usá el usuario root si es necesario

Error: "Table doesn't exist"

  • Verificá que la base de datos se haya creado correctamente
  • Revisá que el archivo SQL se haya importado completamente

Error: "Out of memory"

  • Exportá por tablas en lugar de toda la base de datos
  • Aumentá la memoria disponible para MySQL
  • Usá mydumper en lugar de mysqldump

Caracteres extraños después de la migración

  • Exportá con --default-character-set=utf8mb4
  • Importá con el mismo charset
  • Verificá la configuración de charset en ambos servidores

Checklist de migración

  • ✅ Hacer backup completo del servidor origen
  • ✅ Verificar espacio disponible en servidor destino
  • ✅ Crear base de datos en servidor destino
  • ✅ Exportar base de datos del servidor origen
  • ✅ Transferir archivo al servidor destino
  • ✅ Importar base de datos en servidor destino
  • ✅ Verificar que todas las tablas se importaron
  • ✅ Verificar que los datos son correctos
  • ✅ Migrar usuarios y permisos si es necesario
  • ✅ Actualizar configuración de aplicaciones
  • ✅ Probar la aplicación en el nuevo servidor
  • ✅ Hacer backup del servidor destino

Mejores prácticas

  • Hacé backups: Siempre hacé un backup completo antes de migrar
  • Probá primero: Probá la migración en un entorno de desarrollo si es posible
  • Verificá después: Siempre verificá que la migración fue exitosa
  • Documentá: Guardá un registro de los pasos seguidos
  • Planificá el tiempo de inactividad: Si es necesario, coordiná con los usuarios
  • Mantené ambos servidores: No eliminés el servidor origen hasta verificar que todo funciona

¿Necesitás ayuda?

Si tenés problemas migrando tu base de datos o necesitás asistencia, abrí un ticket desde el panel de billing.baires.host o contactanos por soporte.

También podés escribirnos por nuestras redes:

¿Fue útil la respuesta? 0 Los Usuarios han Encontrado Esto Útil (0 Votos)