Simplifica la Transferencia de MySQL a PostgreSQL

Guía completa para lograr la sincronización de datos de MySQL a PostgreSQL con Apache SeaTunnel 2.3.9. Explicamos desde la configuración del entorno hasta la validación en producción, incluyendo replicación, permisos, configuración de clúster y optimización del rendimiento.

21 mar 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Empresa-Software-Apps

Este artículo proporciona una guía detallada sobre cómo lograr una sincronización completa de datos de MySQL a PostgreSQL utilizando Apache SeaTunnel 2.3.9. Se cubre todo el proceso, desde la configuración del entorno hasta la validación en producción.

Requisitos de versión:

  • MySQL: MySQL 8.3
  • PostgreSQL: PostgreSQL 13.2
  • Apache SeaTunnel: Apache-SeaTunnel-2.3.9

Verificación de versiones:

Ejecuta el siguiente comando SQL para verificar la versión:

  
select version();  

Habilitación de replicación maestro-esclavo:

  
show variables where variable_name in ('log_bin', 'binlog_format', 'binlog_row_image', 'gtid_mode', 'enforce_gtid_consistency');  

Para la sincronización de datos en MySQL CDC, SeaTunnel necesita leer el binlog y actuar como un nodo esclavo en el clúster.

  
SET GLOBAL gtid_mode=OFF_PERMISSIVE;  
SET GLOBAL gtid_mode=ON_PERMISSIVE;  
SET GLOBAL enforce_gtid_consistency=ON;  
SET GLOBAL gtid_mode=ON;  

Concesión de permisos de usuario:

Se requiere un usuario con privilegios de replicación:

  
CREATE USER 'test'@'%' IDENTIFIED BY 'password';  
GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test';  
FLUSH PRIVILEGES;  

Configuración del clúster de SeaTunnel:

Por defecto, SeaTunnel genera logs en un solo archivo. Para producción, es recomendable separar los registros por tarea:

  
rootLogger.appenderRef.file.ref = routingAppender  

En entornos de producción, se recomienda instalar SeaTunnel en el directorio /opt y configurar la variable de entorno SEATUNNEL_HOME:

  
ln -s /opt/apache-seatunnel-2.3.9 /opt/seatunnel  
export SEATUNNEL_HOME=/opt/seatunnel  

Configuración del trabajo en SeaTunnel:

  
env {  
  job.mode = 'STREAMING'  
  job.name = 'DEMO'  
  parallelism = 3  
  checkpoint.interval = 30000  
  checkpoint.timeout = 30000  
  job.retry.times = 3  
  job.retry.interval.seconds = 3  
}  

Configurar un nombre de tarea es esencial para administrar trabajos en producción. Además, se establece un nivel de paralelismo de 3, pero se puede ajustar según el tamaño del clúster.

Configuración del origen de datos (MySQL CDC):

  
source {  
  MySQL-CDC {  
    base-url = 'jdbc:mysql://192.168.8.101:3306/test?serverTimezone=Asia/Shanghai'  
    username = 'test'  
    password = '123456'  
    database-names = ['test']  
    table-pattern = 'test\.test_.*'  
    startup.mode = 'initial'  
    snapshot.split.size = '8096'  
    snapshot.fetch.size = '1024'  
    server-id = '6500-8500'  
    exactly_once = false  
    schema-changes.enabled = true  
  }  
}  

Se configura la sincronización tanto para datos históricos como incrementales. Se recomienda la habilitación de la evolución de esquemas para manejar cambios en la estructura de las tablas.

Configuración del destino (PostgreSQL):

  
sink {  
  jdbc {  
    url = 'jdbc:postgresql://192.168.8.101:5432/test'  
    driver = 'org.postgresql.Driver'  
    user = 'postgres'  
    password = '123456'  
    generate_sink_sql = true  
    database = 'test'  
    table = '${database_name}.${table_name}'  
    schema_save_mode = 'CREATE_SCHEMA_WHEN_NOT_EXIST'  
    data_save_mode = 'APPEND_DATA'  
  }  
}  

La opción generate_sink_sql genera automáticamente las sentencias de inserción y actualización. También se configura el modo de almacenamiento del esquema para crear automáticamente las tablas si no existen.

Envío y monitoreo de tareas:

  
./bin/start-seatunnel.sh --config /path/to/config.yaml --async  

El flag --async permite que la tarea se ejecute en segundo plano mientras se monitorea a través de la interfaz de SeaTunnel.

Demostración de sincronización de datos:

Se probaron inserciones, actualizaciones y eliminaciones en MySQL, y los cambios fueron replicados exitosamente en PostgreSQL.

Sobre Apache SeaTunnel:

  • Soporta cientos de fuentes de datos.
  • Manejo de sincronización completa, incremental y en tiempo real.
  • Monitoreo eficaz para evitar pérdida o duplicación de datos.

En Q2BSTUDIO, una empresa especializada en desarrollo y servicios tecnológicos, ayudamos a implementar soluciones de sincronización de datos para garantizar la integridad y eficiencia en el manejo de datos en entornos empresariales. Con experiencia en la integración de Apache SeaTunnel, proporcionamos asesoría y desarrollo de estrategias personalizadas para optimizar la transferencia de datos entre diversas plataformas, asegurando rendimiento y escalabilidad.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.