Cómo migrar una base de datos MySQL de un servidor a otro (cPanel a Plesk o viceversa)
¡Hola! Si estás leyendo esto, probablemente te enfrentas a una de esas tareas que suenan más complicadas de lo que realmente son: migrar una base de datos MySQL de un servidor a otro. Ya sea que estés moviendo tu sitio web de cPanel a Plesk, o al revés, este proceso es algo que cualquier administrador de hosting debe dominar.
La buena noticia es que, aunque los paneles de control sean diferentes (cPanel y Plesk son los más comunes, pero también te mencionaré a Syspanel en el camino), la lógica detrás de la migración es prácticamente la misma. Se trata de hacer una copia de seguridad (exportar), moverla al destino y restaurarla (importar).
En esta guía extensa y paso a paso, voy a desglosar todo el proceso para que puedas hacer un cambio de servidor base de datos sin sudar, incluso si nunca lo has hecho antes. Vamos a ello.
¿Qué Necesitas Antes de Empezar?
Antes de ensuciarnos las manos con comandos y paneles, es crucial tener todo en orden. Una migración exitosa es 90% preparación y 10% ejecución. Aquí tienes tu lista de verificación:
- Credenciales de Acceso: Necesitas acceso completo al panel de control de origen (donde está la base de datos actual) y al panel de control de destino (el nuevo servidor). Esto incluye usuarios, contraseñas y puertos si es necesario.
- Datos de la Base de Datos: Ten a mano el nombre exacto de la base de datos, el nombre de usuario de la base de datos y la contraseña de ese usuario. Normalmente los encuentras en la sección "Bases de Datos MySQL" de cPanel o en "Bases de Datos" de Plesk.
- Herramientas de Acceso: Aunque usaremos los paneles, es recomendable tener un cliente FTP (como FileZilla) y acceso a phpMyAdmin (la herramienta web estándar para gestionar MySQL). Ambos paneles incluyen phpMyAdmin.
- Tiempo y Paciencia: Dependiendo del tamaño de la base de datos, el proceso puede tardar desde unos segundos hasta varios minutos. No interrumpas el proceso una vez iniciado.
Método 1: La Vía Rápida (Ideal para Bases de Datos Pequeñas y Medianas)
Este es el método más común y visual. Usaremos phpMyAdmin para exportar e importar. Funciona perfectamente tanto si vas de cPanel a Plesk como de Plesk a cPanel.
### Paso 1: Exportar la Base de Datos desde el Servidor de Origen
Vamos a empezar. Primero, accede a tu panel de control de origen.
- Accede a cPanel o Plesk: Inicia sesión con tus credenciales.
- Busca phpMyAdmin:
- En cPanel: Busca la sección "Bases de Datos" y haz clic en el ícono de phpMyAdmin.
- En Plesk: Ve a "Bases de Datos", selecciona tu base de datos y haz clic en el botón "phpMyAdmin" que aparece en la esquina superior derecha.
- Selecciona tu Base de Datos: En el panel izquierdo de phpMyAdmin, verás una lista de bases de datos. Haz clic en el nombre de la que quieres migrar. Se cargará la estructura de tablas en el panel derecho.
- Ve a la pestaña "Exportar": En la barra superior de phpMyAdmin, haz clic en la pestaña "Exportar".
- Elige el Método de Exportación:
- La opción "Rápido" es suficiente para la mayoría de los casos, ya que usa el formato SQL por defecto.
- Si quieres tener más control (por ejemplo, exportar solo ciertas tablas), elige "Personalizado". Para esta guía, usaremos "Rápido".
- Formato: Asegúrate de que el formato seleccionado sea SQL.
- Ejecuta: Haz clic en el botón "Continuar" o "Exportar" en la parte inferior.
- Guarda el Archivo: Tu navegador descargará un archivo con un nombre similar a
tu_basededatos.sql. Guárdalo en un lugar seguro de tu computadora. Este archivo es tu copia de seguridad o "dump".
[TIP] Si tu base de datos es muy grande (más de 100 MB), la exportación por phpMyAdmin puede fallar o tardar mucho. En ese caso, considera usar el Método 3 (Línea de Comandos) que veremos más adelante.
### Paso 2: Crear la Base de Datos en el Servidor de Destino
Ahora pasamos al nuevo servidor. Necesitamos crear un "contenedor" vacío para recibir nuestros datos.
- Accede al Panel de Destino: Inicia sesión en tu nuevo cPanel o Plesk.
- Crea una Nueva Base de Datos:
- En cPanel: Ve a "Bases de Datos MySQL". En el campo "Crear Base de Datos", escribe un nombre (normalmente se le añade un prefijo con tu usuario, ej.
nuevo_usuario_mibd). Haz clic en "Crear Base de Datos". - En Plesk: Ve a "Bases de Datos", haz clic en "Agregar Base de Datos". Escribe un nombre descriptivo y elige el tipo de base de datos "MySQL". Haz clic en "Aceptar".
- En cPanel: Ve a "Bases de Datos MySQL". En el campo "Crear Base de Datos", escribe un nombre (normalmente se le añade un prefijo con tu usuario, ej.
- Crea un Usuario para la Base de Datos (si no existe):
- En cPanel: Dentro de "Bases de Datos MySQL", baja a la sección "Usuarios de MySQL". Crea un nuevo usuario con una contraseña segura.
- En Plesk: Al crear la base de datos, te pedirá que crees un usuario o uses uno existente. Si no existe, créalo ahora.
- Asigna el Usuario a la Base de Datos con Todos los Privilegios:
- En cPanel: En la sección "Añadir Usuario a la Base de Datos", selecciona tu usuario y tu base de datos y haz clic en "Añadir". Luego, marca la casilla "TODOS LOS PRIVILEGIOS" y haz clic en "Hacer Cambios".
- En Plesk: Este paso suele estar integrado en el asistente de creación de la base de datos. Asegúrate de que el usuario tenga todos los privilegios.
[WARNING] Es fundamental que el usuario tenga TODOS LOS PRIVILEGIOS. Si no lo haces, la importación fallará porque el usuario no tendrá permiso para crear tablas o insertar datos.
### Paso 3: Importar la Base de Datos en el Servidor de Destino
Ya tenemos el contenedor vacío y el usuario con permisos. Ahora es el momento de llenarlo con nuestros datos.
- Abre phpMyAdmin en el Servidor de Destino: Igual que en el paso 1, accede a phpMyAdmin desde tu nuevo panel.
- Selecciona la Base de Datos Vacía: Haz clic en el nombre de la base de datos que acabas de crear en el panel izquierdo.
- Ve a la pestaña "Importar": En la barra superior, haz clic en la pestaña "Importar".
- Selecciona el Archivo: Haz clic en "Examinar" o "Elegir archivo" y busca el archivo
.sqlque descargaste en el Paso 1. - Ejecuta la Importación: Deja el resto de opciones por defecto y haz clic en el botón "Continuar" o "Importar" en la parte inferior de la página.
- Espera y Verifica: Verás un mensaje de éxito o un error. Si es exitoso, ¡enhorabuena! Si no, revisa el mensaje de error. Suele ser un problema de permisos o un conflicto de nombres de tablas.
[INFO] Si tu archivo
.sqles demasiado grande para importarlo a través del navegador, no te preocupes. Es un problema común. Puedes intentar aumentar elupload_max_filesizeen la configuración de PHP, pero es más fácil usar el Método 3.
Método 2: Usando las Herramientas Nativas del Panel
Tanto cPanel como Plesk ofrecen herramientas de backup integradas que pueden facilitar la transferencia, especialmente si tu hosting incluye gestión de backups.
### Desde cPanel
cPanel tiene un sistema de "Backup" que puede generar una copia completa de tu base de datos.
- Accede a "Backup": En la sección "Archivos" de cPanel, haz clic en "Backup".
- Descarga una Copia Parcial: En la sección "Copias de seguridad parciales", verás el listado de bases de datos. Haz clic en el enlace con el nombre de tu base de datos para descargar el archivo
.sql.gz(comprimido). - Restaura en Plesk: En Plesk, ve a "Bases de Datos", selecciona la base de datos y en el botón "Importar Dump" (o similar), sube el archivo
.sql.gz. Plesk lo descomprimirá e importará automáticamente.
### Desde Plesk
Plesk tiene un sistema similar, a menudo llamado "Administrador de Copias de Seguridad" o "Backup Manager".
- Crea un Backup: En Plesk, ve a "Copias de seguridad" y crea un backup completo del sitio o solo de la base de datos.
- Descarga el Archivo: Descarga el archivo de backup a tu PC.
- Restaura en cPanel: Este paso es un poco más complicado, ya que cPanel no importa directamente backups de Plesk. Deberías extraer el archivo
.sqldel backup de Plesk (a menudo está en una carpetahomedirodb_dumps) y luego usar el Método 1 (phpMyAdmin) para importarlo.
[INFO] Este método es útil si ya tienes backups automatizados. Sin embargo, a veces los backups de Plesk no son tan fáciles de desglosar para importar en cPanel. El método de phpMyAdmin es más universal y recomendable.
Método 3: La Vía Profesional (Usando SSH y Línea de Comandos)
Cuando las bases de datos son enormes (cientos de MB o GB), la interfaz web se queda corta. Aquí es donde entra la línea de comandos (SSH), el método favorito de los administradores de sistemas.
[WARNING] Este método requiere que tengas acceso SSH a ambos servidores. No todos los planes de hosting lo ofrecen. Si no lo tienes, quédate con el Método 1.
### Paso 1: Conectar por SSH al Servidor de Origen
- Abre tu terminal (en Mac/Linux) o usa un programa como PuTTY (en Windows).
- Conecta a tu servidor usando el comando:
Te pedirá tu contraseña.ssh usuario@tu-servidor-origen.com
### Paso 2: Exportar la Base de Datos (Dump)
Una vez dentro, usa el comando mysqldump para crear un archivo de exportación. Necesitarás tu usuario y contraseña de MySQL.
mysqldump -u TU_USUARIO_MYSQL -p TU_BASE_DE_DATOS > /ruta/donde/guardar/mi_basededatos.sql
-u TU_USUARIO_MYSQL: Reemplaza con tu usuario de MySQL.-p: Esta bandera te pedirá la contraseña de forma segura.TU_BASE_DE_DATOS: El nombre de tu base de datos.>: Redirige la salida a un archivo./ruta/donde/guardar/mi_basededatos.sql: La ruta donde quieres guardar el archivo. Puedes usar/home/usuario/mi_basededatos.sql.
Te pedirá la contraseña de MySQL. Escríbela y presiona Enter.
### Paso 3: Comprimir el Archivo (Opcional pero Recomendado)
Para acelerar la transferencia, comprime el archivo:
gzip mi_basededatos.sql
Esto creará un archivo mi_basededatos.sql.gz mucho más pequeño.
### Paso 4: Transferir el Archivo al Servidor de Destino
Puedes usar scp (secure copy) para transferir el archivo directamente entre servidores. Desde tu servidor de origen, ejecuta:
scp mi_basededatos.sql.gz usuario@tu-servidor-destino.com:/ruta/donde/recibir/
Te pedirá la contraseña SSH del servidor de destino.
[TIP] Si
scpte da problemas, puedes descargar el archivo a tu PC con un cliente FTP (como FileZilla) y luego subirlo al servidor de destino por FTP.
### Paso 5: Importar en el Servidor de Destino
- Conecta por SSH al servidor de destino (como en el paso 1).
- Descomprime el archivo:
gunzip mi_basededatos.sql.gz - Importa la base de datos: Asegúrate de que la base de datos y el usuario ya estén creados en el destino (como en el Método 1, pasos 2 y 3). Luego, ejecuta:
Te pedirá la contraseña de MySQL del usuario de destino.mysql -u TU_USUARIO_MYSQL -p TU_BASE_DE_DATOS < mi_basededatos.sql
Si no ves ningún error, la importación ha sido un éxito.
Consideraciones Especiales: ¿Y si uso Syspanel (HestiaCP)?
Si eres un usuario de Syspanel (también conocido como HestiaCP), te alegrará saber que el proceso es muy similar. Recuerda que el acceso a tu panel de control se realiza a través del puerto 2106 (por ejemplo, https://tu-dominio.com:2106).
Dentro de Syspanel, encontrarás la sección de bases de datos. El método más fiable es:
- Exportar: Usa phpMyAdmin (que también está integrado en Syspanel) para exportar tu base de datos a un archivo
.sql, tal como se explica en el Método 1. - Crear en el Destino: Si el destino es un servidor con Syspanel, ve a "Bases de Datos", crea una nueva base de datos y un usuario con todos los privilegios.
- Importar: Usa phpMyAdmin del servidor de destino para importar el archivo
.sql.
[INFO] La lógica es idéntica a cPanel o Plesk. La única diferencia es la interfaz gráfica.
Solución de Problemas Comunes (FAQ)
Aquí tienes las respuestas a las dudas que más nos llegan sobre este proceso.
### ¿Por qué recibo un error "Usuario no tiene permisos" al importar?
Este es el error más común. Significa que el usuario de la base de datos en el destino no tiene todos los privilegios sobre la base de datos. Ve a la sección de bases de datos de tu panel y asegúrate de que el usuario esté asignado a la base de datos con TODOS LOS PRIVILEGIOS.
### ¿Qué hago si mi base de datos es tan grande que phpMyAdmin se queda congelado?
Usa el Método 3 (SSH). Es la única forma fiable de manejar archivos muy grandes. Si no tienes acceso SSH, intenta dividir tu base de datos en partes más pequeñas usando herramientas como BigDump (un script PHP que puede importar archivos grandes en partes), aunque esto es más avanzado.
### ¿Tengo que cambiar las rutas en mi sitio web después de la migración?
Sí, es muy probable. Tu sitio web (WordPress, Joomla, etc.) tiene configurada la conexión a la base de datos en un archivo de configuración (como wp-config.php en WordPress). Deberás actualizar el nombre de la base de datos, el usuario y la contraseña en ese archivo para que coincidan con los del nuevo servidor.
### ¿Es seguro migrar una base de datos en caliente (mientras el sitio está activo)?
Es recomendable hacerlo con el sitio en modo mantenimiento para evitar inconsistencias en los datos.
