天天看点

使用DataX进行数据同步

DataX 是一个异构数据源离线同步工具,可以实现数据源之间的数据同步。

ODPSWriter插件适合于TB,GB数量级的数据传输,如果需要传输PB量级的数据,可以选择dt task工具 ;

工具下载

  • 下载DataX

    wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

  • 解压DataX

    tar zxvf datax.tar.gz

  • 修改权限

    chmod R 755 datax

使用方法

通过json文件进行配置,直接通过datax\bin下的datax.py文件启动

因为datax.py中的print方式为python2的方式,所以使用python2启动脚本。

python datax.py ..\job\job.json

官方git地址:https://github.com/alibaba/DataX

配置样例

  1. 内存同步到控制台
{
    "job": {
        "setting": {
            "speed": {"channel": }
        },
        "content": [
            {
                "reader": {
                    "name": "streamreader",
                    "parameter": {
                        "sliceRecordCount": ,
                        "column": [ { "type": "long", "value": "10" }, { "type": "string", "value": "hello,你好,世界-DataX" } ] }
                },
                "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "encoding": "UTF-8",
                        "print": true }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 
               }
        }
    }
}
           
  1. Mysql之间的同步
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [              
                            "id",
                            "name"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://<主机>:<端口号>/<数据库>"],     #作为reader的jdbcUrl需要是数组的形式,可以传入多个。
                                "table": ["表名"]
                            }
                        ],
                        "password": "",
                        "username": ""
                    }

                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "column": [
                            "id",
                            "name"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://<主机>:<端口号>/<数据库>",
                                "table": ["表名"]
                            }
                        ],
                        "password": "",
                        "username": ""
                    }

                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 
           }
        }
    }
}
           
  1. MySQL同步到ODPS
{
    "job": {
        "setting": {
            "speed": {"byte": }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [ # 对应的列名 "id", "name" ],
                        "connection": [ { "jdbcUrl": ["jdbc:mysql://<主机>:<端口号>/<数据库>"], "table": ["表名"] } ],
                        "password": "",
                        "username": "" }
                },
               "writer": {
                    "name": "odpswriter",
                    "parameter": {
                        "project": "",
                        "table": "",
                        "column": ["id", "name"],
                        "accessId": "",
                        "accessKey": "",
                        "truncate": true,
                        "odpsServer": "http://service.odps.aliyun.com/api",
                        "tunnelServer": "http://dt.odps.aliyun.com",
                        "accountType": "aliyun" }
                }
            }
        ]
    }
}