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

Cómo migrar una base de datos de MySQL a PostgreSQL en DirectAdmin (Guía fácil)

Actualizado el 17 de noviembre de 2025

Antes de empezar: ¿Qué significa migrar de MySQL a PostgreSQL?

Migrar una base de datos de MySQL a PostgreSQL es como mudarte de casa: tienes que empacar tus cosas (los datos), transportarlas (exportar) y desempacarlas en el nuevo lugar (importar). Aunque ambos son sistemas de gestión de bases de datos muy potentes, no son idénticos, así que no podemos simplemente copiar y pegar un archivo. Necesitamos un proceso ordenado y, sobre todo, paciencia.

En esta guía te voy a explicar, paso a paso y sin tecnicismos innecesarios, cómo realizar esta migración base de datos usando el panel de control DirectAdmin. No necesitas ser un experto en programación, solo seguir las instrucciones al pie de la letra. Al final, tendrás tu información perfectamente instalada en PostgreSQL y funcionando.

[INFO] Esta guía está pensada para usuarios de hosting compartido o VPS con acceso a DirectAdmin. Si tu proveedor usa otro panel, como Syspanel (antes llamado HestiaCP), el proceso puede variar ligeramente, pero los conceptos de exportar e importar son los mismos. Recuerda que a Syspanel se accede por el puerto 2106.

Requisitos previos: Lo que necesitas tener a mano

Antes de lanzarnos a la piscina, vamos a asegurarnos de que tenemos todo el equipo necesario. No queremos quedarnos a medias.

1. Acceso a DirectAdmin

Es fundamental que tengas las credenciales de acceso a tu panel de control DirectAdmin. Normalmente, esto es una URL, un nombre de usuario y una contraseña que te proporcionó tu proveedor de hosting al contratar el servicio.

2. Credenciales de tus bases de datos

Necesitarás tener claros los siguientes datos:

  • Base de datos MySQL actual: El nombre de la base de datos, el usuario y la contraseña.
  • Base de datos PostgreSQL (nueva): El nombre de la base de datos que vas a crear (o que ya has creado), el usuario y la contraseña.

[WARNING] Si no tienes estos datos a mano, contacta con tu proveedor de hosting antes de empezar. No intentes adivinar contraseñas, podrías bloquear el acceso.

3. Una conexión a internet estable

Aunque no moveremos cantidades masivas de datos a la vez, una conexión que se caiga a mitad del proceso puede causar errores. Mejor prevenir que lamentar.

4. Herramientas de gestión (opcional pero recomendado)

Aunque podemos hacer todo desde la terminal de DirectAdmin, a veces es más cómodo usar herramientas gráficas. Puedes usar phpMyAdmin para MySQL y phpPgAdmin para PostgreSQL, si tu hosting las ofrece. Sin embargo, en esta guía nos centraremos en el método más universal: la línea de comandos (SSH).

Paso 1: Exportar tu base de datos MySQL

El primer paso en nuestra migración mysql postgresql es sacar los datos de su hogar actual. Esto se llama "exportar". Vamos a crear un archivo de texto plano con todo el contenido de tu base de datos.

Opción A: Usando SSH (Recomendado)

Este método es el más fiable y no depende de límites de tiempo de ejecución del navegador.

  1. Conéctate a tu servidor por SSH. Necesitarás un cliente como PuTTY (en Windows) o la terminal (en Mac/Linux). Las credenciales suelen ser las mismas que las de tu cuenta principal de DirectAdmin, pero con acceso a shell.

  2. Una vez dentro, ejecuta el siguiente comando:

    mysqldump -u TU_USUARIO_MYSQL -p TU_BASE_DE_DATOS_MYSQL > backup_mysql.sql
    
    • Reemplaza TU_USUARIO_MYSQL con tu nombre de usuario de MySQL.
    • Reemplaza TU_BASE_DE_DATOS_MYSQL con el nombre exacto de tu base de datos.
    • Te pedirá la contraseña. Escríbela y presiona Enter.

Este comando creará un archivo llamado backup_mysql.sql en el directorio donde te encuentras. Este archivo contiene todas tus tablas, datos, índices y estructura.

Opción B: Usando phpMyAdmin (Más visual)

Si no te sientes cómodo con la terminal, puedes usar phpMyAdmin.

  1. Accede a tu panel de DirectAdmin.
  2. Busca el icono de phpMyAdmin en la sección de "Bases de Datos" o "MySQL Management".
  3. En el panel izquierdo, selecciona tu base de datos.
  4. Ve a la pestaña Exportar.
  5. Elige el método "Rápido" y el formato SQL. Haz clic en "Continuar".
  6. Se descargará un archivo .sql a tu ordenador.

[TIP] Para bases de datos muy grandes (más de 500 MB), el método SSH es mucho más rápido y evita que el navegador se quede colgado. Usa phpMyAdmin solo para bases de datos pequeñas.

Paso 2: Crear la base de datos en PostgreSQL

Ahora vamos a preparar el nuevo hogar. Necesitamos crear una base de datos vacía en PostgreSQL dentro de DirectAdmin.

  1. Inicia sesión en tu panel de DirectAdmin.
  2. Busca la sección que dice PostgreSQL Management o Postgres Databases.
  3. Haz clic en Create New Database o un botón similar.
  4. Te pedirá un nombre para la base de datos y un usuario con su contraseña. Asegúrate de guardar estos datos, los necesitarás en el siguiente paso.
  5. Confirma la creación.

[INFO] En DirectAdmin, a menudo el nombre de la base de datos y el usuario llevan un prefijo con tu nombre de usuario principal. Por ejemplo, si tu usuario es juan, la base de datos podría llamarse juan_midb. Esto es normal y no debes preocuparte.

Paso 3: Convertir el archivo SQL (El paso más delicado)

Aquí está el secreto que muchos no cuentan: MySQL y PostgreSQL no hablan exactamente el mismo idioma. Un archivo exportado de MySQL no se puede importar directamente en PostgreSQL sin ajustes. Las comillas invertidas (`), los tipos de datos como AUTO_INCREMENT o ENGINE=InnoDB son específicos de MySQL y PostgreSQL no los entiende.

Por suerte, existe una herramienta llamada pgloader que automatiza este proceso de conversión. Es la forma más limpia de hacer una migración base de datos sin volverte loco.

¿Cómo usar pgloader?

  1. Conéctate por SSH a tu servidor.

  2. Instala pgloader. En la mayoría de distribuciones Linux, puedes hacerlo con:

    sudo apt-get install pgloader
    

    (o yum install pgloader si usas CentOS).

  3. Crea un archivo de configuración llamado migrar.load con el siguiente contenido:

    LOAD DATABASE
         FROM mysql://TU_USUARIO_MYSQL:TU_PASSWORD_MYSQL@localhost/TU_BASE_DE_DATOS_MYSQL
         INTO postgresql://TU_USUARIO_PGSQL:TU_PASSWORD_PGSQL@localhost/TU_BASE_DE_DATOS_PGSQL
    
    WITH include drop, create tables, create indexes, reset sequences,
         disable triggers, data only
    
    SET PostgreSQL PARAMETERS
         maintenance_work_mem = '100MB',
         work_mem = '50MB'
    
    CAST type datetime to timestamptz drop default drop not null using zero-dates-to-null,
         type date drop not null drop default using zero-dates-to-null;
    
  4. Reemplaza los datos de conexión (usuario, contraseña, nombre de la base de datos) tanto para MySQL como para PostgreSQL.

  5. Ejecuta el comando:

    pgloader migrar.load
    

Este comando se encargará de leer tu base de datos MySQL, convertir los tipos de datos y crear la estructura en PostgreSQL, y finalmente copiar todos los datos.

[WARNING] Este paso asume que tienes acceso de superusuario o permisos para instalar paquetes en tu servidor. Si estás en un hosting compartido, es posible que no tengas estos permisos. En ese caso, tendrás que usar herramientas más manuales como sed para editar el archivo SQL, o buscar un conversor online. Sin embargo, pgloader es la opción más robusta y la que te recomiendo encarecidamente.

Paso 4: Importar el archivo convertido a PostgreSQL

Si por alguna razón no pudiste usar pgloader y tienes que hacerlo manualmente, aquí tienes el método alternativo. Pero primero, asumamos que ya tienes tu archivo .sql limpio y convertido.

Usando la línea de comandos (psql)

Este es el método más directo.

  1. Conéctate por SSH.

  2. Ejecuta el siguiente comando:

    psql -U TU_USUARIO_PGSQL -d TU_BASE_DE_DATOS_PGSQL -f backup_convertido.sql
    
    • TU_USUARIO_PGSQL: Tu usuario de PostgreSQL.
    • TU_BASE_DE_DATOS_PGSQL: El nombre de tu base de datos PostgreSQL.
    • backup_convertido.sql: El archivo que has preparado.

    Te pedirá la contraseña del usuario de PostgreSQL.

Usando phpPgAdmin (Interfaz gráfica)

  1. Accede a DirectAdmin y busca el icono de phpPgAdmin.
  2. Selecciona tu base de datos en el panel izquierdo.
  3. Ve a la pestaña SQL.
  4. Pega el contenido de tu archivo SQL en el cuadro de texto o usa el botón "Examinar" para subir el archivo.
  5. Haz clic en Execute o Go.

[TIP] Si tu archivo es muy grande, la opción por línea de comandos es mucho más fiable. phpPgAdmin puede tener límites de tiempo de ejecución que corten la importación a mitad de camino.

Paso 5: Verificar la migración

¡Ya casi lo tienes! Ahora es el momento de comprobar que todo ha ido bien. No queremos darnos cuenta de que falta algo en dos semanas.

  1. Conéctate a tu base de datos PostgreSQL usando psql o phpPgAdmin.

  2. Lista las tablas:

    \dt
    

    Deberías ver todas las tablas que tenías en MySQL.

  3. Haz una consulta simple a una tabla conocida para ver si tiene datos:

    SELECT COUNT(*) FROM TU_TABLA_PRINCIPAL;
    

    El número debería coincidir con el que tenías en MySQL.

  4. Revisa si hay alguna secuencia o índice que se haya creado correctamente.

[INFO] Es normal que algunos tipos de datos cambien ligeramente (por ejemplo, TINYINT se convierte en SMALLINT). Esto no es un error, es la adaptación natural entre sistemas. Lo importante es que los datos y la lógica de la aplicación sigan funcionando.

Paso 6: Actualizar tu aplicación (El último empujón)

Tu base de datos ya está en PostgreSQL, pero tu aplicación web (WordPress, PrestaShop, etc.) todavía está configurada para usar MySQL. Tienes que decirle que ahora hable con la nueva base de datos.

Normalmente, esto se hace en un archivo de configuración llamado wp-config.php (en WordPress), .env (en Laravel) o similar.

  1. Busca el archivo de configuración de tu aplicación.
  2. Localiza las líneas que definen el tipo de base de datos, el host, el nombre, el usuario y la contraseña.
  3. Cambia el tipo de base de datos de mysql a pgsql.
  4. Actualiza el nombre de la base de datos, usuario y contraseña con los de tu nueva base de datos PostgreSQL.
  5. Guarda el archivo.

[WARNING] Si tu aplicación usa funciones específicas de MySQL (como DATE_FORMAT o GROUP_CONCAT), es posible que necesites modificar algunas consultas SQL en el código. Esto es un trabajo más avanzado y puede requerir la ayuda de un desarrollador.

FAQ: Preguntas frecuentes sobre la migración

¿Puedo migrar una base de datos de MySQL a PostgreSQL sin usar SSH?

Sí, es posible usando herramientas gráficas como phpMyAdmin y phpPgAdmin, pero el proceso de conversión manual es tedioso y propenso a errores. pgloader es la mejor opción, pero requiere acceso por terminal. Si no tienes SSH, busca un servicio de migración en línea, pero ten cuidado con la seguridad de tus datos.

¿Qué hago si la importación falla a mitad de camino?

Respira. No todo está perdido. Asegúrate de que tu archivo SQL esté correctamente formateado. Revisa el mensaje de error específico. A menudo, el problema es un tipo de dato incompatible o un carácter especial. Vuelve a intentarlo después de corregir el error. Si el error persiste, busca ayuda en foros especializados.

¿Pierdo datos durante la migración?

Si sigues los pasos correctamente, no deberías perder ningún dato. La clave está en hacer una exportación limpia y una importación verificada. Siempre es recomendable hacer una copia de seguridad adicional del archivo SQL original antes de empezar.

¿Es necesario convertir el archivo SQL si uso pgloader?

No. pgloader hace la conversión automáticamente. Solo tienes que proporcionarle los datos de conexión de ambas bases de datos y él se encarga de todo el proceso de transformación. Es la forma más segura y rápida de realizar una migración mysql postgresql.

¿Cuánto tiempo tarda la migración?

Depende del tamaño de tu base de datos. Una base de datos pequeña (menos de 100 MB) puede tardar unos minutos. Una base de datos muy grande (varios GB) puede tardar horas. No hay una regla fija.

¿DirectAdmin me cobra por tener bases de datos PostgreSQL?

Eso depende de tu plan de hosting. Algunos planes incluyen un número limitado de bases de datos, tanto MySQL como PostgreSQL. Consulta con tu proveedor si tienes dudas sobre los límites de tu plan.

¿Y si mi hosting usa Syspanel (antes HestiaCP) en lugar de DirectAdmin?

El proceso es conceptualmente el mismo. En Syspanel, que se accede por el puerto 2106, encontrarás secciones para gestionar bases de datos MySQL y PostgreSQL. La exportación e importación se realiza de manera similar. La principal diferencia es la interfaz, pero los comandos de SSH y las herramientas como pgloader funcionan igual.

Conclusión: Migración completada

Felicidades, has completado una migración base de datos de MySQL a PostgreSQL en DirectAdmin. Puede que al principio pareciera una tarea compleja, pero con los pasos adecuados y un poco de paciencia, es totalmente manejable. Recuerda que la práctica hace al maestro. La próxima vez que necesites exportar mysql e importar postgresql, te resultará mucho más natural.

Si has llegado hasta aquí, ya tienes tu base de datos funcionando en un sistema robusto y de código abierto. Asegúrate de monitorear tu aplicación durante los primeros días para detectar cualquier comportamiento extraño y, sobre todo, ¡disfruta de tu nuevo y flamante PostgreSQL!

¿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