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