datax oracle mysql_从 MySQL 到 Lindorm时序引擎 的数据迁移

背景

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

DataX相关使用介绍请参阅 DataX 的

下面将首先介绍 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 的一个插件,实现了将数据点写入到Lindorm数据库时序引擎中。

Quick Start

环境准备。

Linux

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

Lindorm时序引擎(目前只支持兼容 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-26 11:18:07

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

任务总计耗时 : 10s

任务平均流量 : 253.91KB/s

记录写入速度 : 10000rec/s

读出记录总数 : 100000

读写失败总数 : 0

步骤四:配置和启动 MySQL 到 时序引擎 的迁移任务

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

Reader 到 TSDB Writer 迁移任务了。

配置迁移任务

配置一个从 MySQL 数据库同步抽取数据到 时序引擎 的任务,命名为 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 时序引擎 迁移任务$ cd ${DATAX_HOME}/..

$ ls

datax/ datax.tar.gz mysql2tsdb.json

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

检查任务是否成功

下面是任务结束后的汇总信息,看到如下内容,即可表示迁移任务已成功完成:任务启动时刻 : 2019-05-21 18:25:16

任务结束时刻 : 2019-05-21 18: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

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

TSDB

RDB

column

Array

表中需要同步的列名集合

[]

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

columnType

Array

关系型数据库中表字段,映射到 时序引擎 中的类型。支持的类型:timestamp:该字段是个时间戳;tag:该字段是个 tag;metric_num:该 metric 的 value 是数值类型;metric_string:该 metric 的 value 是字符串类型

[]

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

tsdbAddress

String

时序引擎 的 IP 地址

127.0.0.1

tsdbPort

int

时序引擎 的端口

8242

batchSize

int

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

100

100

注意事项

确保与 时序引擎 的网络是连通的

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

确保与 MySQL 的网络是连通的

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

Connect Exception 异常。

需要 column 字段顺序保持一致

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

FAQ

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

A:支持的。以"从 MySQL 到 时序引擎 的数据迁移任务"为例,启动命令如下:python datax/bin/datax.py mysql2tsdb.json -j "-Xms4096m -Xmx4096m"

Q:如何给 时序引擎 设置网络白名单?

A:参考《Lindorm数据库 时序引擎 版 > 快速入门 >

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何手动输入给数组赋值_你是否真的了解VBA数组呢?让我带你认识一下真正的数组...

大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解,什么是数组,如何定义数组,如何创建数组一、什么是数组 就是数组共享一个名字,有着多个元素按顺序排列的变量。在数组中,元素…

redhat9安装mysql_redhat 9.0 安装mysql

在官网上下载了MySQL-5.5.9-1.rhel5.i386.tar包 ,将文件以二进制的形式ftp到虚拟机rehat上解压文件到MySQY-5文件夹下:然后将路径切换到解压目录下运行 rpm -ivh *.rpm --force报如下错:rootlocalhost MySQL-5]# rpm -ivh *.rpm --forceerror…

为什么整数在python中表示d_python中整数的缓存机制

在python中,如下代码结果一定不会让你吃惊:Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32Type "copyright", "credits" or "license()" for more information.>&g…

MySQL中序列的作用_MySql中序列的应用和总结

Mysql中的序列主要用于主键,主键是递增的字段,不可重复。Mysql与Oracle不同的是,它不支持原生态的sequence,需要用表和函数的组合来实现类似序列的功能。1.首先创建序列的主表/*Navicat Premium Data TransferSource Server : MyS…

python内置模块重要程度排名_python常用内置模块

#持续更新#在使用内置模块的时候需要导入,例如import abc,则导入abc模块,当然模块也可以自己写,相当于一个类,后面放到类里说,这个因为环境闲置,有些无法执行,只能理解了#os系统操作…

路由器装上去没有网络_5G网络那么快,今后路由器没有存在的价值了?

从一些宣传来看,即将商用的5G网速确实很快,号称10Gbps,比有线宽带还要快。既然5G网速那么快了,还有必要装宽带和路由器吗?先来纠正一个误区,5G网络的理论速度与实际速度是有很大差别的!!目前很多宣传中所说的5G网速最…

python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量

最近接触Python爬虫,以爬取学校新闻网新闻标题、日期、点击量为例,记录一下工作进度目前,感觉Python爬虫的过程无非两步:Step1.获取网页url(利用Python库函数import urllib2)Step2.利用正则表达式对html中的字符串进行匹配、查找等…

python token发送请求_python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息...

python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息登录接口代码:在这里插入图片描述登陆后返回的结果是:在这里插入图片描述新增渠道接口:新增渠道接口需要在headers中添加登陆后返回的token才可…

python绘制散点图的步骤_python如何绘制散点图?

饼图:饼图显示静态数字以及类别如何表示整体构成的一部分。饼图以百分比表示数字,所有段的总和需要等于100%。plt.pie(df[Age], labels {"A", "B", "C","D", "E", "F","G…

numpy支持比python更多的数据类型_NumPy数据类型

NumPy - 数据类型NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。序号数据类型及描述1.bool_存储为一个字节的布尔值(真或假)2.int_默认整数,相当于 C 的long,通常为int32或int643.intc相当于 C 的int&#xff0…

suse11安装python_suse linux 安装python Eric4

1. Install Qt42. Build and install sip3. Build and install QScintilla24. Build and install PyQt45. Build and install QScintilla2 Python bindings6. Install eric4这个文件在eric4-4.4.9/README1.安装python2.62.安装qt4解压 qt-everywhere-opensource-src-4.7.1./con…

coap python3_node-coap入门(三)——Observe

示例调用v0.12.0版本的node-coap,目前只能在server端通过res.end()触发finish事件,client端目前还没实现响应API。但火狐copper插件取消订阅时,server端可以触发finish事件。发现client取消订阅API的读者若能与我交流分享,不甚感激…

怎么把程序内部坐标转为屏幕坐标_经纬度坐标转换成屏幕坐标

地理坐标定义规则:X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标。向左、向下的规则。 屏幕坐标定义规则:X轴向右递增,Y轴向下递增。可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y…

kmeans python_k-means python实践

#codingutf-8import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansimport sklearn.datasets as dsimport matplotlibmatplotlib.rcParams[font.sans-serif] [uSimHei]matplotlib.rcParams[axes.unicode_minus] False#生成测试数据#生成维度…

mysql max 命令大全_MySQL常用命令,34道练习题(持续更新中)。

1、使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2、创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3、选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)4、查…

python深度优先_python数据结构之图深度优先和广度优先实例详解

本文实例讲述了python数据结构之图深度优先和广度优先用法。分享给大家供大家参考。具体如下:首先有一个概念:回溯回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先…

mysql sum id 5_mysql怎么使用sum()求id字段的和?

mysql使用sum()求id字段的和的方法:利用“SELECT SUM(id) FROM 数据表名;”来求id字段的和,返回id字段值的总和;SUM()函数在计算时,忽略列值为NULL的行。(推荐教程:mysql视频教程)SUM() 函数返回数值列的总数。SQL SUM…

python问卷调查系统设计案例_从设计到施工,全面剖析超级玻璃屋面系统案例!...

【设计师的材料清单】戳图即可购买《设计师的材料清单》实体书或获取高清电子书转载整理自:弗思特(ID:FFTCCL)各位设计师大家好!随着人们对建筑外观及内部环境要求的不断提高具有大面积采光且轻盈的玻璃屋面系统在大型公共建筑设计中被广泛使…

mysql如何建外建_mysql如何建立外键

mysql如何建立外键一个主表blog博客表,DROP TABLE IF EXISTS blog;CREATE TABLE blog (id int(11) NOT NULL auto_increment,title varchar(11) default NULL,content varchar(11) default NULL,PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETgb2312;另一个表comment,评论表…

二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会

前记上周我投递出了简历,岗位是后端开发工程师。这周腾讯面试官给我进行了视频面试。面试过程中他问了二叉树的问题。二叉树相关算法题,在面试中出现的次数非常非常多,所以我面试之前也有所准备。今天结合面试问题详细讲一讲二叉树&#xff0…