DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。
正好业务数据库使用的sqlserver,一部分表需要全量同步到mysql。
datax 也刚刚好满足需求。
说干就干,上配置代码:
{
"job": {
"content": [
{
"reader": {
"name": "sqlserverreader",
"parameter": {
"connection": [
{
"jdbcUrl": ["jdbc:sqlserver://127.0.0.1:1433;DatabaseName=bigdata"],
"table": ["${readTable}"]
}
],
"password": "***",
"username": "sa",
"column": ["*"]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": ["*"],
"connection": [
{
"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/bigdata",
"table": ["${writeTable}"]
}
],
"password": "****",
"preSql": ["truncate table ${writeTable}"],
"session": [],
"username": "root",
"writeMode": "insert"
}
}
}
],
"setting": {
"speed": {
"channel": "5"
}
}
}
}
这是一个通用的job json 配置文件。
那么我们就需要创建一个sh 脚本,方便调度系统调度
vi sqlserver2mysql.sh
python /opt/servers/datax/bin/datax.py /opt/servers/datax/job/sqlserver2mysql.json -p "-DreadTable=$1 -DwriteTable=$2" --jvm="-Xms8G -Xmx8G"
执行
sh sqlserver2mysql.sh readtable writetable
readtable 为sqlserver 表
writetable 为mysql 表
如果出现错误,可以联系我解决。
也可以使用dolpinscheduler shell 任务加入调度
我使用的dolpinscheduler 3.0.0-beta-1 的datax 节点 没有尝试,后续看朋友们是否需要,再补充。