SeaTunnel同步SQLserver数据至ClickHouse

发布时间:2024-01-02 13:28:40


d5d5c0c3affbd8d322dc6747ed3af622.jpeg

ClickHouse是一种OLAP类型的列式数据库管理系统,ClickHouse完美的实现了OLAP和列式数据库的优势,因此在大数据量的分析处理应用中ClickHouse表现很优秀。

SeaTunnel是一个分布式、高性能、易扩展、用于海量数据同步和转化的数据集成平台。用户只需要配置作业信息,就能完成数据的同步。提交作业后,源连接器负责并行读取数据并将数据发送到下游转换或直接发送到接收器,接收器将数据写入目标。

 SeaTunnel任务配置及启动 

SQL sever CDC支持stream流处理模式,本示例使用默认启动模式 INITIAL,先同步历史数据,后增量同步。先将SQL server的TestDB数据库下test表中的10000条历史数据,同步到ClickHouse数据库下default.test中,之后增量同步新数据至ClickHouse中。

SQLserver建表语句,如下:

CREATE TABLE `test` ( `id` int(11) NOT NULL, `name` varchar(100) DEFAULT NULL, `quantity` int(11) DEFAULT NULL, PRIMARY KEY (`id`) )

向SQLserver中插入数据,格式如下:

insert into test values(1,'banana',1);

在ClickHouse中建表语句,如下:

CREATE TABLE default.test ( `id` Int32, `name` String, `quantity` Int32 ) ENGINE = MergeTree PRIMARY KEY id ORDER BY id

1、启用SQL server CDC

SQL server CDC启用

#启用数据库

USE MyDB GO EXEC sys.sp_cdc_enable_db GO

#为表启用

USE MyDB GO EXEC sys.sp_cdc_enable_table @source_schema=N'dbo', @source_name=N'MyTable', @role_name= NULL,@supports_net_changes = 1 GO

#验证表CDC 是否启动

SELECT is_tracked_by_cdc FROM sys.tables WHERE name='MyTable'

2ce3915f527b7b9750e826231ad03653.jpeg

2、下载连接器以及jdbc

编辑plugin_config:

vi seatunnel-2.x.x/config/plugin_config

添加所需要的connector如:

--connectors-v2--
connector-cdc-sqlserver
connector-clickhouse
connector-fake connector-console
--end--

执行以下命令下载所需插件(2.3.3即下载的插件版本):

sh bin/install-plugin.sh 2.3.3

调用安装脚本的时候会在maven的中央仓库下载对应的jar包,下载较慢,可以手动下载。

手动下载连接器:

下载连接器connector-cdc-sqlserver-2.x.x.jar,并放至 '$SEATNUNNEL_HOME/connectors/seatunnel/'目录下。

连接器下载地址:

https://repo.maven.apache.org/maven2/org/apache/seatunnel/

下载SQLserver jdbc并放至 '$SEATNUNNEL_HOME/plugins/jdbc/'目录下

3、编写配置文件

在'$SEATNUNNEL_HOME/config'目录下,新建配置文件

配置文件内容示例如下:

env {
execution.parallelism = 1
job.mode = "STREAMING"
checkpoint.interval = 2000
}
source{
SqlServer-CDC {
username = "sa"
password = "Abc123456"
database-names = ["TestDB"]
table-names = ["TestDB.dbo.test"]
base-url="jdbc:sqlserver://localhost:1433;databaseName=TestDB"
}
}
sink {
Clickhouse {
host = "localhost:8123"
database = "default"
table = "test"
username = "default"
password = "123456"
}
}

4、启动任务

在'$SEATNUNNEL_HOME'目录下,使用启动命令:

./bin/seatunnel.sh --config ./config/sqlservertock.template -e local

此命令将以 local (本地模式) 运行您的SeaTunnel作业。由于是流处理模式,任务会一直执行。

进入ClickHouse查看数据写入情况select * from default.test,可以看到10000条历史数据已经同步至ClickHouse了。

f1e61e72745c6a8dd20600931b10714d.jpeg

SeaTunnel支持SQLserver CDC的实时数据同步,继续向SQLserver中插入数据。

a0c2014d66ad82298bf6c818a2310bc8.jpeg

可以看到这条数据会同步至ClickHouse。

bba6d5f7090c43deb4458d24632bd89c.jpeg


本章我们运用数据集成平台SeaTunnel实现了SQLserver到ClickHouse的数据同步,通过SQLserver CDC实现了历史数据同步以及增量同步。使用SeaTunnel仅需要编写配置文件并下载对应的连接器即可,配置化、低代码、易维护是SeaTunnel最显著的特点。

欢迎关注万山数据微信公众号,接下来我们将介绍更多数据库到ClickHouse的数据同步流程。


文章来源:https://blog.csdn.net/zjyy1987/article/details/135337581
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。