Databend 是一个非常先进的基于对象存储云原生数仓1可以提强大的计算分析及存储能力。让 MySQL DBA 非常眼馋。今天想把 MySQL 的 wubx 库从 MySQL 全量迁移到 Databend 中。 借助工具: dumpling2
Dumpling3 是支持以 SQL 文本或者 CSV 格式将 MySQL/TiDB 数据导出的工具。设计初衷是为了替代Mydumper4, 所以基本用法可以参考 Mydumper, 当然在实现中没有完全照搬 Mydumper, 因此存在与 Mydumper 不同的用法。更多帮助:github.com/pingcap/tid…
遗憾的 TiDB 没有提供 dumpling 的单独下载,只提供了大的 package:pingcap.com/zh/product-… 内含:dumpling 二进制包,下载安装就省略了。
现在 MySQL 中 wubx 库是 sysbench 生成的数据,10 个表,每个表 1000 万数据。迁移目标:DatabendDatabend 安装部署参考:databend.rs/doc/deploy
dumpling -uwubx -pwubxwubx -P3306 -h 192.168.2.10 --filetype csv -t 8 -o ./ -F 256M -B wubx
命令说明:
-u mysql 用户名
-p mysql 密码
-P mysql 端口
-h mysql 机器 ip
--filetype csv 指定使用 CSV 格式导出(非常重要)
-t 8 使用 8 进程导出
-o ./ 指定导出来的文件存放位置
-F 导出文件的大小
-B wubx 指定导出的数据库
命令运行后导出来文件如下:
因为 Databend 对 MySQL 的语法并没有完全兼容,这里需要去除 schema 上的一定义:
针对 sbtest 表处理可以比较爆力的:
sed -i 's/ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci//g' *.sql
处理完表结构如下:
- cat wubx.sbtest1-schema.sql
- /*!40101 SET NAMES binary*/;
- CREATE TABLE `sbtest1` (
- `id` int NOT NULL,
- `k` int NOT NULL DEFAULT '0',
- `c` char(120) NOT NULL DEFAULT '',
- `pad` char(60) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`)
- );
好了,后续的我们开始使用 streaming_load 来加载数据了。
这里导入数据的核心是利用了 databend streaming load 功能,具体参考:databend.rs/doc/load-da… 首先在 databend 中创建 wubx 数据库
echo "create database wubx"|mysql -h 127.0.0.1 -P3307 -uroot
因为表的数量较多,这里使用了一个脚本cat im.sh
- #!/bin/bash
- t=''
- getTable(){
- str=${1#*.}
- t=${str%%-*}
- }
-
- for i in `ls *-schema.sql`
- do
- getTable $i
- echo $t
- cat $i | mysql -h127.0.0.1 -P3307 -uroot wubx
- time ls *$t*.csv |xargs -P 8 -I{} curl -H "insert_sql:insert into wubx.$t format CSV" -H "skip_header:1" -F "upload=@{}" -XPUT http://root:@localhost:8000/v1/streaming_load
- done
脚本比较粗糙,可以根据实际情况调整。运行脚本就可以完成数据加载。
到这里数据已经加载到 Databend 中了, 如果是你用的真实数据,你可以运行一下统计分析类数据测试一下了。顺便说一下,如果你为了体验 databend 的 join 功能。可以把新 planner 打开
set enable_planner_v2=1;
利用 show settings 确认 enable_planner =1 就可以使用 Databend 的 join 功能。目前 join 差不多 1-2 周就可以对外默认开放,大家在使用不足的方也可以在 github 上反馈一下。
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
Databend 文档:databend.rs/
Twitter:twitter.com/Datafuse_La…
Slack:datafusecloud.slack.com/
Wechat:Databend
GitHub :github.com/datafuselab…
文章首发于公众号:Databend