不介绍datax-web的使用,所有的数据同步操作都在datax中完成。
1.下载官方代码,自己部署成功之后,进入对应的项目根目录下到这里:
bin存放的是执行脚本,
conf存放配置文件
job存放的是任务的json,json需要自己创建,格式见下面:
lib存放的是项目的jar包
目前支持大部分的关系型数据库和一些分布式数据库还有其他具体见datax源码;
其他的比如时序数据库需要自己开发插件;
我们可以通过命令来打印出官方需要的json格式,自己在给出的json中填入目标数据库的链接和账户密码,以及需要同步的字段:
python datax.py -r mysqlreader -w mysqlwriter
可以看到json
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [],
"connection": [
{
"jdbcUrl": [],
"table": []
}
],
"password": "",
"username": "",
"where": ""
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [],
"connection": [
{
"jdbcUrl": "",
"table": []
}
],
"password": "",
"preSql": [],
"session": [],
"username": "",
"writeMode": ""
}
}
}
],
"setting": {
"speed": {
"channel": ""
}
}
}
}
上面的json是mysql同步到mysql的job需要的json格式。
如果是oracle同步到mysql,只需要吧命令中的mysql改成oracle即可。
python datax.py -r oraclereader -w mysqlwriter
上面的json,reader部分的column代表需要同步的列,writer部分的column代表的是需要同步到的列,
jdbcurl,username和password不用多说。
下面是我的json:(把test_DataX1 中的 列id,name,password,creeate_time和operator同步到test_DataX2中的对应id,username,passwd,createtime,operatorname中)
{
"job": {
"setting": {
"speed": {
"channel": 3,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "root!",
"column": [
"`id`",
"`name`",
"`password`",
"`create_time`",
"`operator`"
],
"splitPk": "",
"connection": [
{
"table": [
"test_DataX1"
],
"jdbcUrl": [
"jdbc:mysql://ip:3306/dataxweb?useSSL=false"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "root",
"password": "root!",
"column": [
"`id`",
"`username`",
"`passwd`",
"`createtime`",
"`operatorname`"
],
"connection": [
{
"table": [
"test_DataX2"
],
"jdbcUrl": "jdbc:mysql://ip:3306/dataxweb?useSSL=false"
}
]
}
}
}
]
}
}
original表数据:
goal表数据:
到bin目录下执行命令:
python datax.py ../job/testMysql2Mysql.json
看到结果:
看表数据: