SeaTunnel 迁移 MySQL 数据到 Easysearch 之批量导入(Batch)
SeaTunnel是一款开源的高性能数据集成平台,支持批量(Batch)和实时(Streaming)两种数据同步模式。本文通过Docker方式测试了其批量模式,成功将MySQL数据迁移到Easysearch。测试使用配置文件定义数据源和目标,SeaTunnel运行后自动退出并输出统计信息。Easysearch验证显示数据同步成功。文章提到实时同步模式将在后续探讨,适合需要实时数据同步的场景。
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 = 1
job.mode = "BATCH"
}
source{
Jdbc {
url = "jdbc:mysql://192.168.215.2:3306/test"
driver = "com.mysql.cj.jdbc.Driver"
connection_check_timeout_sec = 100
username = "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 = false
tls_verify_hostname = false
index = "${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 模式,我们下篇聊。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)