SeaTunnel 迁移 MySQL 数据到 Easysearch 之批量导入(Batch)
SeaTunnel 简介
SeaTunnel 是一个开源的、高性能的数据集成平台,专为海量数据的同步和转换而设计。它的核心目标是高效地将数据从一个地方移动到另一个地方,并在过程中进行必要的处理。
你可以把它理解为一款国产的、旨在更易用和更高效的 Apache Spark/Flink 的应用层封装,或者与 Apache Sqoop, DataX 等工具类似的数据同步工具,但能力更强。
SeaTunnel 工作流图
MySQL 数据准备
SeaTunnel 有两种方式导入数据到 MySQL,批量导入和实时导入,即 batch 模式和 streamming 模式。批量导入就是一次性导入当前的表数据,跟之前用 logstash 导入 MySQL 数据到 Easyearch 类似。实时导入则和使用 canal 实时同步 MySQL数据到 Easysearch 类似。也就是 Seatunnel 一个人把之前两个人的活给干了。🤔
这次我们先测试下 batch 模式,准备测试数据如下。
SeaTunnel 安装
SeaTunnel 安装官方有完善的文档,大家参照下官方文档。本篇采用 Docker 方式进行测试,如果是 tarball 方式,记得先下载连接器和相关 jar 包。
SeaTunnel 导数
准备一个配置文件 mysql_easysearch.conf 如下,索引名称使用占位符,引用源表名,非常方便。
# 定义运行时环境
env {parallelism = 1job.mode = "BATCH"
}
source{Jdbc {url = "jdbc:mysql://192.168.215.2:3306/test"driver = "com.mysql.cj.jdbc.Driver"connection_check_timeout_sec = 100username = "root"password = "123456"query = "select * from es_table"}
}transform {# 此处可进行数据转换、加工
}sink {Easysearch {hosts = ["https://192.168.215.3:9200"]username = "admin"password = "2TFs0LtIUe8W9DKeR^v@LTdh"tls_verify_certificate = falsetls_verify_hostname = falseindex = "${table_name}"}
}
运行容器进行导数。
docker run --name seatunnel-test --rm -it -v /Users/mac/playground/seatunnel/mysql_batch_easysearch.conf:/config/mysql_batch_easysearch.conf apache/seatunnel:2.3.12 ./bin/seatunnel.sh -m local -c /config/mysql_batch_easysearch.conf
由于是 Batch 模式,SeaTunnel 运行完就自行退出了。
我们可以在 SeaTunnel 的输出中找到一些任务的统计信息。
Easysearch 数据检查
本次测试使用 Easysearch 1.15.0,自带 UI 界面。我们通过自带界面查看下数据情况。
还有大家最爱的开发工具。
OK,本次测试就到这里了。这个 Batch 模式适合对存量数据做一次性的迁移,如果要对实时数据做实时同步,需要使用 Streaming 模式,我们下篇聊。