写点什么

Migrate your data into databend with DataX

作者:Databend
  • 2023-02-17
    中国香港
  • 本文字数:1986 字

    阅读完需:约 7 分钟

Migrate your data into databend with DataX

现在互联网应用越来越复杂,每个公司都会有多种多样的数据库。通常是用最好的硬件来跑 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

git clone git@github.com:alibaba/DataX.gitcd  {DataX_source_code_home}mvn -U clean package assembly:assembly -Dmaven.test.skip=true
复制代码

1.2 Demo ( From MySQL to Databend )

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


mysql> create user 'mysqlu1'@'%' identified by 'databend';mysql> grant all on *.* to 'mysqlu1'@'%';mysql> create database db;mysql> create table db.tb01(id int, d double, t TIMESTAMP,  col1 varchar(10));mysql> insert into db.tb01 values(1, 3.1,now(), 'test1'), (1, 4.1,now(), 'test2'), (1, 4.1,now(), 'test2');
复制代码


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


databend> create database migrate_db;databend> create table migrate_db.tb01(id int null, d double null, t TIMESTAMP null,  col1 varchar(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


python datax.py ./mysql_demo.json 
复制代码


查看同步的结构


databend> select * from migrate_db.tb01;+------+------+----------------------------+-------+| id   | d    | t                          | col1  |+------+------+----------------------------+-------+|    1 |  3.1 | 2023-02-01 07:11:08.500000 | test1 ||    1 |  4.1 | 2023-02-01 07:11:08.501000 | test2 ||    1 |  4.1 | 2023-02-01 07:11:08.501000 | test2 |+------+------+----------------------------+-------+
复制代码

小结

上面的例子是通过 DataX 跑通一个 mysql 表的迁移到 Databend , 通过一个简单的例子也可以感受一下 DataX 大概的流程。


但 DataX 远比这个 Demo 强大。另外 DataX 强大之处可能通过参数来控制配置文件,这样比轻松地实现一个配置迁移, 甚至可以传入 SQL 这样来读取指定区间做数据的迁移。


关于 Databend


Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。


  • Databend 文档:https://databend.rs/

  • Twitter:https://twitter.com/Datafuse_Labs

  • Slack:https://datafusecloud.slack.com/

  • Wechat:Databend

  • GitHub :https://github.com/datafuselabs/databend

用户头像

Databend

关注

还未添加个人签名 2022-08-25 加入

还未添加个人简介

评论

发布
暂无评论
Migrate your data into databend with DataX_Databend_InfoQ写作社区