基于python的数据库同步工具_使用阿里巴巴开源数据库同步工具DATAX实现跨数据库同步...

使用阿里巴巴开源数据库同步工具DATAX实现跨数据库同步

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括

MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS

等各种异构数据源之间高效的数据同步功能。

先请配置DataX 环境变量

Linux、Windows

JDK(1.8)

Python(推荐Python2.6.X)

Apache Maven 3.x (Compile DataX)

下面演示dataX

配置示例:从MySQL读取数据 写入MYSQL

(liunx/centos7) 各位学习的童鞋可以自己安装一个VM安装一个liunx系统

演示条件

mysql_reader 47.93.226.82:3606

mysql_writer 47.93.226.82:3605

安装mysql (作者docker安装mysql )

docker run -p ip:ip --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d imageid

-v 是挂载目录

-p 是开放端口

一、工具下载以及部署

方法一、直接下载DataX工具包(如果仅是使用,推荐直接下载):DataX下载地址(http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz)

下载后解压至本地某个目录,修改权限为755,进入bin目录,即可运行样例同步作业:

$ tar zxvf datax.tar.gz

$ sudo chmod -R 755 {YOUR_DATAX_HOME}

$ cd {YOUR_DATAX_HOME}/bin

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

二、配置示例:从MySQL读取数据 写入MYSQL

{

"job": {

"content": [

{

"reader": {

"name": "mysqlreader",

"parameter": {

"column": ["id","real_name"],

"connection": [

{

"jdbcUrl": [

"jdbc:mysql://47.93.226.82:3306/test"

],

"table": ["t_ur_user_m"]

}

],

"password": "####",

"username": "dev@####"

}

},

"writer": {

"name": "mysqlwriter",

"parameter": {

"column": ["id","real_name"],

"connection": [

{

"jdbcUrl": "jdbc:mysql://47.93.226.82:3307/test?characterEncoding=utf-8",

"table": ["datax_user"]

}

],

"password": "####",

"username": "dev@####"

}

}

}

],

"setting": {

"speed": {

"channel": "2"

}

}

}

}

第三步:启动DataX

$ cd {YOUR_DATAX_DIR_BIN}

$ python datax.py ./mysql2odps.json

同步结束,显示日志如下:

...

2015-12-17 11:20:25.263 [job-0] INFO JobContainer -

任务启动时刻 : 2015-12-17 11:20:15

任务结束时刻 : 2015-12-17 11:20:25

任务总计耗时 : 10s

任务平均流量 : 205B/s

记录写入速度 : 5rec/s

读出记录总数 : 50

读写失败总数 : 0

三、配置定时任务(Linux环境):从MySQL读取数据 写入ODPS,通过crontab命令实现

前置条件:安装crond服务,并已启动

#查看crond服务是否启动,出现以下日志表示已启动

$/sbin/service crond status

crond (pid 30742) is running...

crond (pid 30742) is running...

第一步:创建作业的配置文件(json格式) 参考上节内容。这里假设已配置好MySQL到ODPS的配置文件mysql2odps.json

第二步:列出列出crontab文件,命令: crontab -l

(1)若出现以下日志,表示当前用户没有定时任务,用户需要新建crontab文件,并提交crontab文件,参考第三步。

$crontab -l

no crontab for xxx

(2)若出现以下日志,表示当前用户已经有正在运行的定时任务,用户只需用命令crontab -e 来编辑crontab文件,参考第四步。 shell $ crontab -l 0,10,20,35,44,50 python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.date +\%Y\%m\%d\%H\%M\%S 2>&1

第三步:若当前用户没有定时任务(之前从未创建过crontab任务)

(1)创建一个新的crontab文件,如取名crondatax

示例1:每天13点5分进行同步作业,并把运行日志输出到目录/home/hanfa.shf/下log.运行时间 文件中,如定时运行是在2016-3-26 13:10:13运行的,产生的日志文件名为:log.20160326131023

$ vim crondatax

#输入以下内容

5 13 * * * python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 2>&1

#/home/admin/datax3/bin/datax.py 表示你安装的DataX datax.py所在目录(请替换为您真实的绝对路径目录);

#/home/admin/mysql2odps.json 表示作业的配置文件目录(请替换为您真实的绝对路径目录);

#/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 表示日志输出位置,并以log.当前时间 命名(请替换为您真实的绝对路径目录)

(2)提交你刚刚创建的crontab文件 shell $ crontab crondatax #crondatax 你创建的crontab文件名 (3)重启crontab服务 shell $ sudo /etc/init.d/crond restart Stopping crond: [ OK ] Starting crond: [ OK ] (4)在13点5分过后,在日志目录会看到对应的日文件 shell $ ls -al /home/hanfa.shf/ -rw-r--r-- 1 hanfa.shf users 12062 Mar 26 13:05 log.20160326130501

第四步:若当前用户已有定时任务(想继续增加定时任务)

(1)编辑已有crontab文件

示例2:每10分钟运行一次同步任务,并把运行日志输出到目录/home/hanfa.shf/下log.运行时间 文件中,如定时运行是在2016-3-26 13:10:13运行的,产生的日志文件名为:log.20160326131023

$ crontab -e

#会进入已有crontab文件编辑界面,继续增加定时任务即可,本示例增加以下内容,并保存

0,10,20,30,40,50 * * * * python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 2>&1

(2)重启crontab服务

$ sudo /etc/init.d/crond restart Stopping crond: [ OK ] Starting crond: [ OK ] ``` (3)用crontab -l 命令检查是否添加成功

$ crontab -l

5 13 * * * python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%Y\%m\%d\%H\%M\%S` 2>&1

0,10,20,30,40,50 * * * * python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.

接下来请根据您所需要的插件完成配置,并完成同步。

所有数据源配置指南,请参考:DataX数据源指南

附录:

安装crond服务

yum install crontabs

服务操作说明:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

加入开机自动启动:

/sbin/chkconfig --level 35 crond on

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值