Inicio · Blog · datos-sistemas/migrar-base-datos

datos-sistemas/migrar-base-datos

Migrar MySQL a PostgreSQL: guía empresa 2026

Migrar MySQL a PostgreSQL en empresa requiere pgloader, mapeo de tipos y validación fila a fila. Te damos el plan probado en 13M filas sin downtime.

Pablo Estrada · 11 de mayo de 2026 · 5 min de lectura
Migrar MySQL a PostgreSQL: guía empresa 2026

Migrar una base de datos MySQL a PostgreSQL en empresa exige tres cosas que el ETL casero no entrega: mapeo riguroso de tipos de datos, validación fila a fila pre y post cutover, y un plan de rollback ejecutable en menos de quince minutos. La diferencia entre una migración limpia y una que rompe producción son las primeras dos semanas de discovery, no las herramientas. Aquí va el plan probado en proyectos reales con millones de filas.

¿Por qué migrar a PostgreSQL en 2026?

Las cinco razones que vemos en clientes empresariales LATAM.

  1. JSONB nativo: lógica de negocio con datos semiestructurados sin perder relacional
  2. Vistas materializadas con refresh concurrente, algo que MySQL maneja mal
  3. Row Level Security nativa, esencial para multi-tenant LATAM
  4. Extensiones poderosas: PostGIS para geo, pg_trgm para fuzzy search, pgvector para IA
  5. Licencia open source sin sustos enterprise como los de Oracle MySQL

Si tu empresa creció con MySQL Community y ahora maneja datos geoespaciales, IA o múltiples tenants, Postgres es el siguiente paso natural.

El mapeo de tipos: la fase que rompe más migraciones

Tipo MySQL Tipo PostgreSQL Gotcha
TINYINT(1) BOOLEAN Cero a false, distinto de cero a true
DATETIME TIMESTAMP o TIMESTAMPTZ Decide zona horaria explícita
AUTO_INCREMENT SERIAL o IDENTITY Resetear secuencia tras carga
TEXT, MEDIUMTEXT, LONGTEXT TEXT (uno solo) Postgres no diferencia
ENUM CREATE TYPE custom enum Más estricto, valida más
DOUBLE DOUBLE PRECISION Casi igual, sin gotcha
GROUP_CONCAT string_agg Sintaxis diferente
ON UPDATE CURRENT_TIMESTAMP Trigger explícito Postgres no tiene atajo

Cada uno de estos tipos tiene un caso donde la conversión silenciosa rompe lógica de negocio. El boolean es el más doloroso: un TINYINT(1) con valor 2 en MySQL es truthy; al migrar puede convertirse a true o a null según herramienta. Validación fila a fila lo cacha; auditoría agregada no.

El flujo de migración serio en siete fases

  1. Inventario completo: tablas, vistas, triggers, stored procedures, foreign keys
  2. Mapeo de tipos y de constraints, tabla por tabla, con tests unitarios
  3. Setup de Postgres destino con esquema idéntico antes de cargar datos
  4. Carga inicial con pgloader o ETL custom, tabla maestra a tabla detalle
  5. Validación fila a fila: conteo, suma de checksums, muestreo de 1,000 filas por tabla
  6. Replicación lógica para sync continuo durante ventana de cutover
  7. Cutover de aplicación con flag de feature, monitoreo activo, plan rollback documentado

Caso real: snapshot 98M filas en 48 horas

Trabajamos con una distribuidora multinacional en Guatemala con SQL Server origen (no MySQL, pero el principio aplica idéntico). Snapshot completo sin esquema destino: 239 países, 446 oficinas, 2.7 millones de clientes y contactos, histórico de 98 millones de filas.

  • Snapshot worker Python con pymssql más PyArrow más Parquet
  • Chunking de 8 paralelo, batch de 50,000, throttle de 10 queries por segundo
  • 197 tablas snapshotteadas
  • 2.7 GB de bronze parquet en Supabase Storage
  • 2,528 archivos en bucket
  • Verificación triple: source igual a bronze igual a silver
  • Cero orphan FKs en población destino
  • 204 oficinas reales operativas identificadas

Lo opuesto a un mysqldump nocturno y restaurar sobre Postgres rezando que no rompa nada.

Las cuatro estrategias de cutover

Según volumen y tolerancia a downtime, una de estas cuatro encaja con tu caso.

Estrategia Downtime Volumen apto
Dump and restore Horas a un día Hasta 100GB, ventana fin de semana
ETL batch con freeze 2 a 8 horas 100GB a 1TB, ventana noche
Replicación lógica con switchover Minutos 1TB en adelante
Despliegue paralelo dual write Cero Crítico para banca, salud, retail 24/7

El despliegue paralelo es el estándar oro pero exige escribir capa de aplicación que mande writes a ambas bases temporalmente. Vale la pena para operaciones críticas.

Los siete errores que rompen producción

  1. No respaldar antes del cutover: el rollback se vuelve imposible si algo rompe
  2. Saltar la validación fila a fila: descubres discrepancias semanas después
  3. Cambiar collation sin probar: PostgreSQL maneja unicode distinto y orden cambia
  4. Ignorar zonas horarias: TIMESTAMP sin TZ pierde una hora dos veces al año
  5. Foreign keys sin orden de carga: violación de integridad y rollback masivo
  6. Sin plan de rollback: si la app cae, tienes treinta minutos antes que escalable a CEO
  7. Cero monitoreo post cutover: bugs silenciosos se descubren con cliente quejándose

¿Hacerlo interno o contratar?

Para volumen menor a 50GB y schema simple, un DBA interno con dos semanas dedicadas puede ejecutar bien. Para volumen mayor, integraciones con cinco o más sistemas, o requerimiento de cero downtime, la inversión externa se justifica.

Lo que antes tomaba treinta ingenieros y dieciocho meses, lo entregamos en doce semanas con metodología MAGIA Forge y arquitectura rigurosa. Sin retainers, sin licencias atadas, código a tu nombre.

Costos reales según volumen

Volumen Costo interno (2 DBAs 6 semanas) Costo MAGIA Forge
Hasta 50GB, schema simple 12,000 USD 8,000 USD
50 a 500GB, 5 sistemas 60,000 USD 20,000 USD único
Más de 1TB, mission critical 150,000 USD desde 20,000 USD con scope

Más allá del precio, la diferencia clave es la documentación operativa. Una migración Catalizadora entrega runbook, plan de rollback y baseline de KPIs. Cero retainer post entrega.

Próximos pasos

Si tu MySQL ya no aguanta el volumen o necesitas extensiones modernas como JSONB, RLS multi-tenant o pgvector para IA, una sesión técnica gratis te ahorra meses de error costoso. MAGIA Forge entrega software a medida en doce semanas con CI/CD activo y pruebas automatizadas. MAGIA Core cubre cuando además necesitas data lake unificado y dashboards.

Llamada técnica con el equipo que construye, no con un SDR. Sin pitch deck.

Cómo te ayuda Catalizadora

Construimos sistemas con IA a la medida, con el código 100% tuyo. Elige por dónde empezar:

  • MAGIA Solo — marca, sitio, CRM y asistente con IA en 15 días.
  • MAGIA Core — automatización empresarial y dashboards por rol.
  • MAGIA Forge — software a medida con IA.
  • Ver precios · Academia de IA

Preguntas frecuentes

¿Cuánto tarda migrar MySQL a PostgreSQL en empresa?

Depende del volumen. Hasta 100GB y 100M filas, una semana con downtime de horas. Con replicación lógica y despliegue paralelo, sin downtime, dos a cuatro semanas. Bases con 1TB pueden tomar dos meses bien hechas.

¿Qué herramienta uso para migrar MySQL a PostgreSQL?

pgloader es el estándar open source para migración batch. Para sync continuo en producción usa Debezium con Kafka. Para volúmenes enterprise con ETL pesado, AWS DMS o servicios gestionados son opción.

¿Qué tipos de datos rompen al migrar de MySQL a Postgres?

TINYINT(1) a BOOLEAN requiere conversión explícita, DATETIME pierde zona horaria si no normalizas a TIMESTAMPTZ, AUTO_INCREMENT cambia a SERIAL o IDENTITY, y enums MySQL no migran directos. Mapea cada uno antes.

¿Se puede migrar sin downtime de producción?

Sí, con despliegue paralelo: nueva BD Postgres corriendo junto a MySQL, sync continuo bidireccional o uno hacia otro, switchover de aplicación cuando todo verifica. Cero downtime es factible pero requiere planeación.

¿Cuánto cuesta una migración seria a Postgres?

Entre 8,000 y 80,000 USD según volumen y complejidad. Una migración profesional incluye pgloader configurado, validación fila a fila, replicación lógica para cutover sin downtime y plan de rollback documentado.

¿Esto aplica a tu operación?

Déjanos tu correo y te escribimos en menos de 24 horas con un diagnóstico inicial sin costo. Sin pitch, sin agenda comercial.

¿Prefieres conversar antes? Agenda 30 minutos con Pablo Estrada — sin pitch deck.

Agendar llamada →

¿Prefieres aprender a hacerlo tú? El curso completo de la Academia son 8 clases, gratis y sin tarjeta.

Entrar a la Academia →

Sigue leyendo

Migrar Excel a MySQL: guía operativa sin pérdidaExtraer datos PDF con IA 2026: herramientas LATAMAuditar contratos legales con Claude en LATAM 2026 Ver todo sobre datos-sistemas/migrar-base-datos →