Use Kettle para sincronizar datos de la base de datos A a la base de datos B a intervalos regulares

1. Antecedentes de la demanda

Debido al escenario del proyecto, es necesario 定时T+1 增量sincronizar los datos de la tabla a, la tabla b y la tabla c en la base de datos A (MySQL) con la base de datos B (MySQL). Permítanme explicar aquí que no es la copia de seguridad maestro-esclavo de la base de datos, o la sincronización de datos ordinaria. Después de una investigación técnica, se descubrió que Kettle es bastante adecuado por las siguientes razones:

  1. Kettle (extracción, limpieza, conversión, carga de datos) está escrito en Java y puede ejecutarse en Windows, Linux y Unix. Una herramienta ETL profesional que admite múltiples fuentes de datos y múltiples middleware;
  2. La interfaz visual admite la interfaz de diseño de GUI gráfica, la diversidad de componentes y admite arrastrar y soltar componentes, sin escribir código adicional;
  3. Los diagramas de flujo de Kettle son esencialmente archivos de configuración, como archivos .ktr/.kjb. La ventaja de este diseño es que después de dibujar el diagrama de flujo de conversión, podemos copiarlo directamente para ejecutarlo en otro entorno, como: dibujar el diagrama de flujo en una computadora con Windows y copiarlo para ejecutarlo en un sistema Liunx .
  4. Es gratuito, tiene muchos componentes y admite código abierto. Generalmente, no hay problema en el procesamiento de la sincronización de datos T+1. Si la concurrencia es alta, el rendimiento en tiempo real es alto y el volumen de datos es grande, se recomienda usar Flink.

2. Cómo usar

1. Descarga el paquete de instalación

Dirección del sitio web oficial: https://sourceforge.net/projects/pentaho/files/Data%20Integration/

2. Método de inicio

Windows haga clic en Spoon.bat para comenzar

Aparece la siguiente imagen para indicar que se está iniciando, 如果一直没有反应,使用管理员身份运行.

La interfaz principal es la siguiente:

3. Conéctese a la base de datos MySQL

1. Prepare el paquete jar del controlador de conexión MySQL

Dado que Kettle en sí no tiene ningún paquete de controlador de base de datos, primero debemos preparar el paquete de controlador y la versión es la mejor opción 5.1.49. Después de descargar el paquete jar, cópielo en el directorio lib (Windows y Linux son lo mismo). Si se ha iniciado Kettle, debe apagarse y reiniciarse; de ​​lo contrario, el paquete de controladores no se cargará.

2. Crea una fuente de datos

Haga clic a su vez: Conversión --> Árbol de objetos principal --> Conexión de base de datos --> Haga clic en Nuevo --> Prueba

La misma operación que la anterior, cree dos orígenes de datos: la base de datos de origen y la base de datos de destino; el objetivo es sincronizar los datos de la tabla en la base de datos de origen con la base de datos de destino

3. Proceso de conversión de configuración

① Únase al nodo de entrada: conversión --> entrada --> entrada de tabla

② Haga doble clic en el nodo de entrada para abrir la página de configuración, ingrese la información

Aquí, debido a que estoy 定时T+1 增量sincronizando datos, agregué una condición de sincronización WHERE gmt_create >= CURDATE() para indicar que el tiempo de creación de datos es mayor que el día actual antes de realizar la consulta.

Haga clic en vista previa, hay exactamente una pieza de datos

③Agregar nodo de conversión: Conversión --> Insertar/Actualizar --> Mantenga presionada la tecla shift para establecer una conexión

④ Haga doble clic en el nodo Insertar/Actualizar para abrir la página de configuración

⑤ Haga clic para ejecutar la prueba

4. Copie el archivo ktr para ejecutarlo regularmente en Liunx

En Linux, el archivo ktr se ejecuta usando el script pan.sh de Kettle con el siguiente comando:
sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep.

Para ejecutar este script regularmente, planeo usar la función corntab que viene con Linux para establecer el tiempo.

En primer lugar, escribí un script de shell llamado cornSql.sh, que se usa para guardar el comando de ejecución de ktr, el contenido es el siguiente:

#!/bin/bash 
export KETTLE_HOME=/home/admin/kettle/data-integration
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin:${KETTLE_HOME}
export JRE_HOME=${JAVA_HOME}/jre

TIME=$(date "+%Y%m%d")
sh /home/admin/kettle/data-integration/pan.sh -file=/home/admin/kettle/ktr/table_transfer.ktr -norep >>/home/admin/kettle/log/transfer-"$TIME".log

En segundo lugar, copie el script ktr en el directorio especificado, es decir, el directorio /home/admin/kettle/ktr, ingrese el comando para abrir crontab -ela interfaz de comandos e ingrese 0 1 * * * /home/admin/kettle/cornSql.shel comando.Esta oración significa ejecutar el script cornSql.sh regularmente a la 1 am todos los días .

Para verificar si la configuración de temporización es efectiva, puede usar crontab -l -u rootel comando .Si el comando de temporización recién se imprime, prueba que la configuración es efectiva.

Finalmente, al día siguiente, compruebe si se ha generado el archivo de registro de ejecución, en el directorio /home/admin/kettle/log, aquí imprimo la fecha de ejecución diaria, como se muestra a continuación:

Supongo que te gusta

Origin blog.csdn.net/weixin_33005117/article/details/129998959
Recomendado
Clasificación