En esta guía, te mostraremos una solución ligera para la migración y sincronización de datos desde MySQL a OceanBase utilizando Apache SeaTunnel (SeaTunnel). Aprovecharemos su motor integrado Zeta engine, que admite sincronización completa de datos, sincronización incremental offline y Change Data Capture (CDC).
En Q2BSTUDIO, expertos en desarrollo y servicios tecnológicos, implementamos soluciones eficientes para la gestión y migración de datos, asegurando que cada proceso sea optimizado para las necesidades del negocio.
Preparación del Entorno de Ejecución
Antes de comenzar, asegúrate de que tu entorno está listo.
Instalar Java
SeaTunnel requiere Java 8 o superior. Se recomienda Java 8, pero versiones posteriores también deberían funcionar.
Verifica que Java esté correctamente configurado ejecutando:
java -version
Asegúrate de que JAVA_HOME esté correctamente configurado.
Descargar e Instalar Apache SeaTunnel
wget https://dlcdn.apache.org/seatunnel/2.3.9/apache-seatunnel-2.3.9-bin.tar.gz
tar -zxvf apache-seatunnel-2.3.9-bin.tar.gz
Instalación de Plugins de Conectores
El paquete de instalación de SeaTunnel solo contiene el núcleo del framework y el Zeta engine. Para conectar diversas fuentes de datos, es necesario descargar y configurar los plugins requeridos.
Instalación Automática de Plugins
Modifica el archivo de configuración para especificar los conectores necesarios:
connector-cdc-mysql
connector-jdbc
connector-fake
connector-console
Ejecuta el siguiente comando para instalar los plugins:
sh bin/install-plugin.sh 2.3.9
Verificación de la Instalación de SeaTunnel
Para verificar la correcta instalación de SeaTunnel, ejecuta una prueba de procesamiento por lotes:
./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local
Si todo está correctamente configurado, verás una salida indicando el éxito del proceso.
Sincronización Completa de Datos
Para verificar la sincronización completa de datos, se crean tablas de prueba tanto en MySQL como en OceanBase.
Configuración de Sincronización Completa
Se recomienda migrar manualmente los esquemas de tabla para evitar errores.
env {
parallelism = 5
job.mode = BATCH
}
source {
Jdbc {
url = jdbc:mysql://127.0.0.1:3306/mysql
driver = com.mysql.cj.jdbc.Driver
user = usuario
password = contraseña
query = select * from base_datos.tabla1
}
}
sink {
jdbc {
url = jdbc:mysql://127.0.0.1:2883/mysql
driver = com.mysql.cj.jdbc.Driver
user = usuario
password = contraseña
database = base_datos
table = tabla1
}
}
Resultados esperados:
Total Read Count: 100000
Total Write Count: 100000
Total Failed Count: 0
Sincronización Incremental
Para la sincronización incremental, se pueden utilizar consultas filtrando por columnas como id o updatetime.
source {
Jdbc {
query = SELECT * FROM base_datos.tabla1 WHERE updatetime > '2024-01-01'
}
}
Se recomienda el uso de Apache DolphinScheduler para obtener valores dinámicos y automatizar la sincronización de datos.
Sincronización CDC (Change Data Capture)
Para habilitar CDC, verifica que el binlog de MySQL esté activo.
Ejemplo de configuración:
source {
MySQL-CDC {
base-url = jdbc:mysql://127.0.0.1:3306/mysql
username = usuario
password = contraseña
table-names = [base_datos.tabla1, base_datos.tabla2]
startup.mode = initial
}
}
Conclusión
Este artículo detalló la configuración de sincronización de datos de MySQL a OceanBase con Apache SeaTunnel. En Q2BSTUDIO, ayudamos a empresas a optimizar su procesamiento y manejo de datos mediante soluciones escalables y eficientes.
Si necesitas asesoría sobre flujos de datos y herramientas de integración, en Q2BSTUDIO estamos listos para llevar tus procesos al siguiente nivel.