Migrar una base de datos de MySQL a PostgreSQL en Plesk
¿Por qué migrar de MySQL a PostgreSQL en Plesk?
Migrar una base de datos de MySQL a PostgreSQL puede parecer un paso técnico complejo, pero en realidad es una decisión estratégica que muchos administradores de servidores y dueños de sitios web consideran para mejorar el rendimiento, la seguridad y la escalabilidad de sus aplicaciones. Si usas Plesk como panel de control, este proceso se vuelve más manejable, aunque requiere atención a los detalles. En esta guía, te explicaré paso a paso cómo realizar una migración de base de datos de MySQL a PostgreSQL en Plesk, cubriendo herramientas, comandos y buenas prácticas.
PostgreSQL es conocido por su robustez, soporte para consultas complejas, cumplimiento ACID y excelente manejo de datos concurrentes. Muchas aplicaciones modernas, como sistemas de gestión de contenidos (CMS) o plataformas de análisis, se benefician de estas características. Sin embargo, la migración no es automática debido a diferencias en la sintaxis SQL, tipos de datos y funciones. Por eso, esta guía Plesk te ayudará a evitar errores comunes.
Nota importante: Antes de empezar, asegúrate de tener acceso de administrador a Plesk y permisos para crear y gestionar bases de datos. También es recomendable hacer una copia de seguridad completa de tu sitio y base de datos original.
Preparación antes de la migración
Antes de ejecutar cualquier comando, debes realizar una serie de pasos preparatorios para garantizar que la migración de MySQL a PostgreSQL sea exitosa.
Verifica la compatibilidad de tu aplicación
No todas las aplicaciones web soportan PostgreSQL de forma nativa. Por ejemplo, WordPress está optimizado para MySQL, mientras que Django o Ruby on Rails funcionan mejor con PostgreSQL. Revisa la documentación de tu CMS o framework para confirmar si es compatible.
Realiza una copia de seguridad completa
Usa Plesk para exportar tu base de datos MySQL actual. Ve a Herramientas y configuraciones > Administrador de bases de datos y selecciona tu base de datos. Luego, elige la opción de exportar (dump) en formato SQL. Guarda el archivo localmente.
Instala las herramientas necesarias
Necesitarás dos herramientas clave:
- pgAdmin (o línea de comandos
psql) para gestionar PostgreSQL. - mysql-workbench o
mysqldumppara exportar MySQL. - pgloader (recomendado) o scripts manuales para la conversión.
En Plesk, puedes instalar PostgreSQL desde el panel de extensiones. Ve a Extensiones > Catálogo y busca "PostgreSQL". Actívalo y crea una base de datos vacía para recibir los datos.
Exportar la base de datos MySQL desde Plesk
El primer paso técnico es extraer los datos de tu base de datos MySQL. Plesk facilita esto mediante su interfaz gráfica o comandos SSH.
Exportación mediante la interfaz de Plesk
- Inicia sesión en Plesk.
- Ve a Bases de datos y selecciona la base MySQL que deseas migrar.
- Haz clic en Exportar dump y elige formato SQL. Descarga el archivo.
- Si tu base es grande, usa la opción Exportar con compresión para ahorrar tiempo.
Exportación por línea de comandos (SSH)
Si prefieres mayor control, accede al servidor por SSH y ejecuta:
mysqldump -u usuario_mysql -p nombre_bd > basededatos_mysql.sql
Esto creará un archivo SQL estándar. Recuerda reemplazar usuario_mysql y nombre_bd con tus credenciales.
Convertir el esquema de MySQL a PostgreSQL
Aquí viene la parte más delicada: la conversión del esquema. MySQL y PostgreSQL tienen diferencias en tipos de datos (por ejemplo, TINYINT vs SMALLINT, AUTO_INCREMENT vs SERIAL), funciones de fecha, y manejo de comillas. Puedes hacerlo manualmente o usar herramientas automáticas.
Usando pgloader (método recomendado)
pgloader es una herramienta de código abierto que automatiza la migración. Desde SSH, instálala:
sudo apt-get install pgloader
Luego, crea un archivo de configuración (ej. migrar.load) con este contenido:
LOAD DATABASE
FROM mysql://usuario_mysql:password@localhost/nombre_bd
INTO postgresql://usuario_pgsql:password@localhost/nombre_bd_pgsql
WITH include drop, create tables, create indexes, reset sequences,
disable triggers, data only
SET PostgreSQL PARAMETERS
maintenance_work_mem = '128MB',
work_mem = '12MB'
CAST type datetime to timestamptz drop default drop not null using zero-dates-to-null,
type date drop default drop not null using zero-dates-to-null;
Ejecuta:
pgloader migrar.load
Este comando mapea automáticamente tipos, crea tablas y migra datos. Es rápido y eficiente, pero revisa los logs por si hay errores.
Conversión manual (para usuarios avanzados)
Si prefieres hacerlo paso a paso, edita el archivo SQL exportado y reemplaza:
AUTO_INCREMENTporSERIALVARCHARyCHARson compatibles, pero ajusta longitudes si es necesario.TINYINT(1)porBOOLEANNOW()porCURRENT_TIMESTAMP- Las comillas invertidas (
`) por comillas dobles (") para nombres de columnas.
Importar los datos a PostgreSQL en Plesk
Una vez que tienes el esquema convertido (o el archivo generado por pgloader), el siguiente paso es importarlo a PostgreSQL.
Crear la base de datos en Plesk
- En Plesk, ve a Bases de datos > Agregar base de datos.
- Selecciona PostgreSQL como tipo de servidor.
- Asigna un nombre, usuario y contraseña. Anota estos datos.
Importar usando la interfaz de Plesk
Plesk no tiene una opción directa de importar SQL a PostgreSQL, pero puedes usar pgAdmin integrado. Ve a Bases de datos > selecciona la BD > pgAdmin (si está instalado). Allí, usa la herramienta de consultas para pegar el contenido del archivo SQL convertido.
Importar por línea de comandos
Conéctate por SSH y usa:
psql -U usuario_pgsql -d nombre_bd_pgsql -f basededatos_convertido.sql
Te pedirá la contraseña. Si el archivo es grande, usa nohup para que corra en segundo plano.
Ajustes post-migración y verificación
Después de importar, debes verificar que todo funcione correctamente.
Verifica la integridad de los datos
Conéctate a PostgreSQL con psql y ejecuta consultas básicas:
SELECT COUNT(*) FROM nombre_tabla;
Compara con los conteos de MySQL original. También revisa que los índices y claves primarias estén presentes.
Actualiza las configuraciones de tu aplicación
Si tu aplicación usa archivos de configuración (como wp-config.php en WordPress o settings.py en Django), cambia los parámetros de conexión:
- Host: localhost (o la IP del servidor)
- Puerto: 5432 (por defecto en PostgreSQL)
- Base de datos: nombre_bd_pgsql
- Usuario y contraseña: los creados en Plesk
Prueba la aplicación
Accede a tu sitio web y realiza pruebas funcionales: inicia sesión, crea contenido, verifica búsquedas. Si encuentras errores, revisa los logs de PostgreSQL en /var/log/postgresql/ o desde Plesk.
Solución de problemas comunes
Durante la migración de base de datos, pueden surgir inconvenientes. Aquí algunos típicos:
Error de tipo de dato "boolean"
MySQL usa TINYINT(1) para booleanos, mientras PostgreSQL usa BOOLEAN. Si pgloader no lo convierte, modifica manualmente el esquema.
Problemas con funciones de fecha
PostgreSQL es más estricto con fechas como 0000-00-00. En el script de pgloader, usamos zero-dates-to-null para evitarlo.
Permisos insuficientes
Asegúrate de que el usuario de PostgreSQL tenga permisos de escritura en la base de datos. En Plesk, puedes asignarlos desde Bases de datos > Editar usuario.
FAQ: Preguntas frecuentes sobre migrar MySQL a PostgreSQL en Plesk
¿Puedo migrar directamente desde la interfaz de Plesk?
No, Plesk no ofrece una herramienta nativa para migrar entre motores. Debes usar métodos externos como pgloader o scripts manuales.
¿Qué pasa si mi aplicación solo soporta MySQL?
En ese caso, la migración no es recomendable. Algunas aplicaciones tienen versiones específicas para PostgreSQL (como WordPress con plugins), pero no es ideal.
¿Cuánto tiempo toma la migración?
Depende del tamaño de la base. Bases pequeñas (menos de 1 GB) pueden migrarse en minutos; bases grandes (más de 10 GB) pueden llevar horas.
¿Necesito conocimientos de línea de comandos?
Sí, al menos básicos. Aunque Plesk simplifica la gestión, la migración requiere SSH y comandos SQL.
¿Puedo usar Syspanel (HestiaCP) para esto?
Si estás en un entorno con Syspanel (HestiaCP), el proceso es similar, pero el acceso al panel es por el puerto 2106. Las herramientas de migración son las mismas, pero la interfaz varía. En Syspanel, busca Bases de datos > PostgreSQL para crear la BD.
Conclusión
Migrar una base de datos de MySQL a PostgreSQL en Plesk es un proceso que, aunque requiere planificación, es totalmente factible con las herramientas adecuadas. La clave está en la preparación: hacer copias de seguridad, elegir la herramienta de conversión correcta (pgloader es tu mejor aliado) y probar exhaustivamente la aplicación después de la migración. Recuerda que no todos los sistemas son compatibles, así que verifica siempre la documentación de tu software.
[TIP] Si tu base de datos es muy grande, considera migrar por partes (tabla por tabla) para identificar errores más fácilmente.
[WARNING] No olvides actualizar las cadenas de conexión en tu aplicación después de la migración. Un error común es olvidar cambiar el puerto o el tipo de base de datos en el archivo de configuración.
[INFO] Para bases críticas, programa la migración en horarios de bajo tráfico y ten un plan de reversión listo (volver a MySQL) por si algo sale mal.
Con esta guía Plesk, espero que puedas realizar tu migración de MySQL a PostgreSQL con confianza. ¡Buena suerte!
