现在互联网应用越来越复杂,每个公司都会有多种多样的数据库。通常是用最好的硬件来跑 OLTP,乃至还在 OLTP 中进行分库分表来满意事务,这样关于一些剖析,聚合,排序操作非常费事。这也有了异构数据库的数据同步需求,今日要点给大家介绍两个利器 :异构数据搬迁:DataX 结合云原生数仓 Databend 完成异构数据库数据兼并及剖析。

Datax 是一个异构数据源离线同步东西 ,致力于完成包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间稳定高效的数据同步功用。

Databend 是一个开源、弹性、负载感知的现代云数仓库,赋能企业降本增效。在之前的文章中介绍了怎么快速布置 Databend。

下面咱们经过一个简略操练,让你学习使用 DataX , 别的经过几个进阶案例给你展示一下 DataX 的魅力。

本文中仅以 DataX 的 mysqlreader plugin 为例进行实验,databendwriter 支持所有 Addax 提供的 reader plugin。

DataX 根本使用

1.1 装置编译DataX

gitclonegit@github.com:alibaba/DataX.git
cd{DataX_source_code_home}
mvn-Ucleanpackageassembly:assembly-Dmaven.test.skip=true

1.2 Demo ( From MySQL to Databend )

在 MySQL Server 中建立搬迁用户。(本例中待搬迁的表为 db.tb01)

mysql>createuser'mysqlu1'@'%'identifiedby'databend';
mysql>grantallon*.*to'mysqlu1'@'%';
mysql>createdatabasedb;
mysql>createtabledb.tb01(idint,ddouble,tTIMESTAMP,col1varchar(10));
mysql>insertintodb.tb01values(1,3.1,now(),'test1'),(1,4.1,now(),'test2'),(1,4.1,now(),'test2');

在 Databend 中建立对应的表结构。(将 MySQL 的 db.tb01 数据搬迁至 Databend 的 migrate_db.tb01)

databend>createdatabasemigrate_db;
databend>createtablemigrate_db.tb01(idintnull,ddoublenull,tTIMESTAMPnull,col1varchar(10)null);

进行如下的dataX 装备

{
"job":{
"content":[
{
"reader":{
"name":"mysqlreader",
"parameter":{
"username":"mysqlu1",
"password":"databend",
"column":[
"id","d","t","col1"
],
"connection":[
{
"jdbcUrl":[
"jdbc:mysql://127.0.0.1:3307/db"
],
"driver":"com.mysql.jdbc.Driver",
"table":[
"tb01"
]
}
]
}
},
"writer":{
"name":"databendwriter",
"parameter":{
"username":"databend",
"password":"databend",
"column":[
"id","d","t","col1"
],
"preSql":[
],
"postSql":[
],
"connection":[
{
"jdbcUrl":"jdbc:databend://localhost:8000/migrate_db",
"table":[
"tb01"
]
}
]
}
}
}
],
"setting":{
"speed":{
"channel":1
}
}
}
}

运转 DataX

pythondatax.py./mysql_demo.json

查看同步的结构

databend>select*frommigrate_db.tb01;
+------+------+----------------------------+-------+
|id|d|t|col1|
+------+------+----------------------------+-------+
|1|3.1|2023-02-0107:11:08.500000|test1|
|1|4.1|2023-02-0107:11:08.501000|test2|
|1|4.1|2023-02-0107:11:08.501000|test2|
+------+------+----------------------------+-------+

小结

上面的比如是经过 DataX 跑通一个 mysql 表的搬迁到 Databend , 经过一个简略的比如也能够感受一下 DataX 大约的流程。

但 DataX 远比这个 Demo 强壮。别的 DataX 强壮之处可能经过参数来控制装备文件,这样比轻松地完成一个装备搬迁, 乃至能够传入 SQL 这样来读取指定区间做数据的搬迁。

关于 Databend

Databend 是一款开源、弹性、低成本,根据对象存储也能够做实时剖析的新式数仓。等待您的重视,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

  • Databend 文档:databend.rs/

  • Twitter:twitter.com/Datafuse\_L…

  • Slack:datafusecloud.slack.com/

  • Wechat:Databend

  • GitHub :github.com/datafuselab…