背景

本文主要介绍如何使用阿里巴巴的开源工具Datax 实现从 MySQL 到 TSDB 的数据迁移。

DataX相关使用介绍请参阅 DataX 的 README 文档。

下面将首先介绍 DataX 工具本身,以及本次迁移工作涉及到的两个插件(MySQL Reader 和 TSDB Writer)。

DataX

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具 / 平台,实现包括 MySQL、Oracle、SqlServer、PostgreSQL、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

MySQL Reader

MySQL Reader 是 DataX 的一个插件,实现了从 MySQL 读取数据。

TSDB Writer

TSDB Writer 是 DataX 的一个插件,实现了将数据点写入到阿里巴巴自研 TSDB 数据库中。

Quick Start

步骤一:环境准备Linux

JDK(1.8 以上,推荐 1.8)

Python(推荐 Python 2.6.x)

MySQL(目前只支持兼容 5.x,其他版本暂不保证兼容)

TSDB(目前只支持兼容 2.4.x 及以上版本,其他版本暂不保证兼容)

步骤二:下载 DataX 及其插件

点击 链接 进行下载。

步骤三:利用 DataX 自带的迁移任务,检查迁移流程能否走通

这里,我们先以最简单的 Stream Reader 到 Stream Writer 为例。因为这两个插件不依赖任何的外部环境,特别适合用来测试流程是否能走通。简单介绍下这两个插件,其中 Stream Reader 会随机地产生字符串,而 Stream Writer 则会将接受到的字符串输出到控制台,以此模拟一个最简单的数据迁移过程。

工具部署

将下载后的安装包,解压至某个目录(作为 DATAX_HOME),即可运行迁移任务:

$ cd ${DATAX_HOME}

$ python bin/datax.py job/job.json

检查任务是否成功

下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:

任务启动时刻:2019-04-2611:18:07

任务结束时刻:2019-04-2611:18:17

任务总计耗时:10s

任务平均流量:253.91KB/s

记录写入速度:10000rec/s

读出记录总数:100000

读写失败总数:0

步骤四:配置和启动 MySQL 到 TSDB 的迁移任务

通过上述 Stream Reader 到 Stream Writer 的迁移任务,我们就可以确保整个 DataX 流程是没有问题的。下面就可以真正开始 MySQL Reader 到 TSDB Writer 迁移任务了。

配置迁移任务

配置一个从 MySQL 数据库同步抽取数据到 TSDB 的任务,命名为 mysql2tsdb.json,完整的配置信息如下(针对各个配置参数的详细说明,请看下一章节”参数说明”):

{

"job":{

"content":[

{

"reader":{

"name":"mysqlreader",

"parameter":{

"column":[

"name",

"type",

"create_time",

"price"

],

"connection":[

{

"jdbcUrl":[

"jdbc:mysql://127.0.0.1:3306/datax"

],

"table":[

"book"

]

}

],

"password":"yuzhouwan",

"splitPk":"id",

"username":"root"

}

},

"writer":{

"name":"tsdbwriter",

"parameter":{

"column":[

"name",

"type",

"create_time",

"price"

],

"columnType":[

"tag",

"tag",

"timestamp",

"metric_num"

],

"sourceDbType":"RDB",

"tsdbAddress":"localhost",

"tsdbPort":8242

}

}

}

],

"setting":{

"speed":{

"channel":1

}

}

}

}

启动 MySQL 2 TSDB 迁移任务$ cd ${DATAX_HOME}/..

$ ls

datax/datax.tar.gz mysql2tsdb.json

$ python datax/bin/datax.py mysql2tsdb.json

检查任务是否成功

下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:

任务启动时刻:2019-05-2118:25:16

任务结束时刻:2019-05-2118:25:27

任务总计耗时:11s

任务平均流量:3B/s

记录写入速度:0rec/s

读出记录总数:3

读写失败总数:0

参数说明

接下来,我们来看下各个配置项的含义:

MySQL Reader 相关名称

类型

是否必需

描述

默认值

举例

jdbcUrl

String

数据库的 JDBC 连接信息

jdbc:mysql://127.0.0.1:3306/datax

username

String

数据源的用户名

root

password

String

数据源指定用户名的密码

root

table

String

需要同步的表

book

column

Array

表中需要同步的列名集合

[]

["m"]

splitPk

String

如果指定 splitPk,表示用户希望使用 splitPk 代表的字段进行数据分片

id

TSDB Writer 相关名称

类型

是否必需

描述

默认值

举例

sourceDbType

String

目前支持 TSDB 和 RDB 两个取值。其中,TSDB 指 OpenTSDB、InfluxDB、Prometheus、TimeScale 等;而 RDB 指 MySQL、Oracle、PostgreSQL、DRDS 等

TSDB

RDB

column

Array

表中需要同步的列名集合

[]

["name","type","create_time","price"]

columnType

Array

关系型数据库中表字段,映射到 TSDB 中的类型。

支持的类型:

timestamp:该字段是个时间戳;

tag:该字段是个 tag;

metric_num:该 metric 的 value 是数值类型;

metric_string:该 metric 的 value 是字符串类型

[]

["tag","tag","timestamp","metric_num"]

tsdbAddress

String

TSDB 的 IP 地址

127.0.0.1

tsdbPort

int

TSDB 的端口

8242

batchSize

int

每次批量数据的条数(需要保证大于 0)

100

100

注意事项

确保与 TSDB 的网络是连通的

因为 TSDB Writer 写入数据的方式是调用 HTTP 接口(/api/put)来完成的,所以需要确保迁移任务的进程能正常访问到 TSDB 暴露出来的 HTTP 接口的。否则,会报错 Connect Exception 异常。

确保与 MySQL 的网络是连通的

因为 MySQL Reader 读取数据是通过 JDBC 来完成的,所以需要确保迁移任务的进程能正常访问到 MySQL 暴露出来的 JDBC 接口的。否则,会报错 Connect Exception 异常。

需要 column 字段顺序保持一致

需要保证 TSDB Writer 插件中的 column 字段顺序和 MySQL reader 插件中配置的 column 字段顺序保持一致。否则,数据会错乱。

FAQ

Q:是否支持调整迁移进程的 JVM 内存大小?

A:支持的。以”从 MySQL 到 TSDB 的数据迁移任务”为例,启动命令如下:

python datax/bin/datax.py mysql2tsdb.json-j"-Xms4096m -Xmx4096m"

Q:如何给 TSDB 设置网络白名单?

A:参考《时序数据库 TSDB 版 > 快速入门 > 设置网络白名单》。

Q:将迁移任务运行在 ECS 上的用户,如何配置 VPC,以及常见问题有哪些?

tsdb和mysql_从 MySQL 到 TSDB 的数据迁移相关推荐

  1. 数据库分片教程mysql_简述MySQL分片中快速数据迁移

    操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQL上,并完成记录, 要求最快的数据迁移做法,中断业务时间最短 思路一利用mysqldump: ...

  2. mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL

    推荐阅读:MySQL 数据库跨操作系统的最快迁移方法 mysql 备份与迁移 数据同步方法 操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQ ...

  3. MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

    数据迁移的几种方式 - MySQL数据库 本文关键字:MySQL.数据库.数据迁移.导入.导出 文章目录 数据迁移的几种方式 - MySQL数据库 一.数据迁移 1. 数据的生命周期 2. 数据迁移的 ...

  4. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

  5. mysql rrd_关于cactiEZ数据迁移操作思路

    原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任. 关于cactiEZ数据迁移操作思路 迁移背景:部署了一台备用cacti监控服务器,需要将原cact ...

  6. mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx ...

  7. mysql sqlserver schema_MySQL数据库数据迁移到SQLserver

    最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单.对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserv ...

  8. mysql游标表间数据迁移_FalseMySQL存储过程--gt;通过游标遍历和异常处理迁移数据到历史表-mysql-第二电脑网...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ 电脑技术网对<FalseMySQL存储过程-->通过 ...

  9. Pymysql数据迁移到mysql_Django -Mysql数据库利用pymysql数据迁移

    Django自带的有数据库sqlite,但是有很多小伙会想用mysql的数据库,但是在sqlite上已经写了部分数据,那一定就涉及到了数据迁移. 一.更换默认数据库 需要在Django的项目的sett ...

最新文章

  1. 长时间运行app,产生anr
  2. learning中的数学
  3. 使用async,await关键字进行API Access Token的获取
  4. polybase配置 sql_Hadoop 的 PolyBase 配置和安全
  5. android编译系统apk文件,VS2012中MonoForAndroid打包编译APK文件详细图文教程
  6. 圣三一学院计算机专业,360教育集团:爱尔兰都柏林大学圣三一学院计算机专业...
  7. aux 参数 linux,Linux下ps aux命令中STAT的参数含义(转)
  8. __name__ == ‘__main__‘的原理
  9. 华为热设计工程师待遇_沃得分享 | 华为校招青睐哪些江浙沪高校?
  10. 第 11 章 装饰者设计模式
  11. [Java] 蓝桥杯BASIC-29 基础练习 高精度加法
  12. Ubuntu18.04安装“迅雷“
  13. pdf 分形 张济忠_分形理论及其研究方法.pdf
  14. oppo r11s鸿蒙固件,OPPO R11s官方固件rom刷机包_OPPO R11s系统升级更新包下载
  15. 进程间通信方式有哪些?各自有哪些优缺点?
  16. 个人投资课 张潇雨_张潇雨《个人投资课》学习笔记
  17. win10,在proe/creo中鼠标中键不能放大缩小
  18. 列名 计算机网络 无效,80004005 及其它错误消息的疑难解答
  19. 博士论文-基于生成对抗网络的图像合成-阅读笔记
  20. ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互

热门文章

  1. 弹性理念应用于城市公园景观设计中的重要性
  2. 关于Linux群组问题
  3. 测试用例编写原则及规范
  4. 单片机8乘8点阵显示数字
  5. java中正则匹配字符串长度_Java中使用正则表达式校验字符串
  6. ldconfig mysql_ldconfig命令
  7. 计算机网络(十)IP地址的基础知识
  8. 什么样的护眼灯最有效?南卡护眼台灯对比明基深度评测
  9. php将图片保存在数组中方法,php 把数组保存为标准的数组格式,存储到文件中...
  10. boot spring 叶子暗的_抓住MySQL面试重点知识,让你征服面试官半小时