RDBMS Reader插件通过JDBC连接远程RDBMS数据库,并执行相应的SQL语句将数据从RDBMS库中SELECT出来。目前支持达梦、DB2、PPAS、Sybase数据库的读取。RDBMS Reader是一个通用的关系数据库读插件,您可以通过添加、注册数据库驱动等方式增加各种关系型数据库的读支持。

背景信息

RDBMS Reader通过JDBC连接器连接到远程的RDBMS数据库,根据您配置的信息生成查询SQL语句并发送到远程RDBMS数据库,将该SQL执行返回的结果使用DataX自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。

对于您配置的Table、Column、Where等信息,RDBMS Reader将其拼接为SQL语句发送到RDBMS数据库。对于您配置的querySql信息,RDBMS直接将其发送到RDBMS数据库。

目前RDBMS Reader支持大部分通用的关系数据库类型如数字、字符等,但也存在部分类型没有支持的情况,请注意检查您的数据库类型。

准备工作

在添加关系型数据库驱动前,您需要已购买ECS服务器作为您的自定义资源组资源,建议购买规格如下:
  • 使用CentOS 6、CentOS 7或AliyunOS。
  • 如果您添加的ECS需要执行MaxCompute任务或同步任务,需要检查当前ECS的python版本是否是Python2.6或2.7的版本(CentOS 5的Python版本为2.4,其它OS自带2.6以上版本)。
  • 请确保ECS有访问公网能力,可以是否能ping通 www.aliyun.com 作为衡量标准。
  • 建议ECS的配置为8核16G。

添加自定义资源组

首先您可以参考新增调度资源添加自定义资源组:
  1. 创建项目后,单击对应项目的进入数据集成
  2. 选择数据集成页面里的资源组 > 新增资源组
  3. 遵照步骤提示完成Agent安装与初始化,待服务器为可用状态时,则说明自定义资源组完成。
    说明 如果刷新后还是停止状态,您可以重启alisa命令。切换到admin账号,执行下述命令:
    /home/admin/alisatasknode/target/alisatasknode/bin/serverct1 restart

添加MySQL驱动

我们以添加MySQL驱动为例,说明添加关系型数据库驱动操作步骤。

  1. 进入RDBMS Reader对应目录,${DATAX_HOME}为DataX主目录,即/home/admin/datax3/plugin/reader/rdbmsreader目录。
    
    [root@izbp1czjkv9fpzmsbv0qcdz rdbmsreader]# pwd
    /home/admin/datax3/plugin/reader/rdbmsreader
    [root@izbp1czjkv9fpzmsbv0qcdz rdbmsreader]# ls
    libs plugin.json rdbmsreader-0.0.1-SNAPSHOT.jar
  2. 在RDBMS Reader插件目录下找到plugin.json配置文件,在此文件中注册您具体的数据库驱动,如下面的"com.mysql.jdbc.Driver",放在drivers数组中,如下所示。RDBMS Reader插件在任务执行时会动态选择合适的数据库驱动连接数据库。
    [root@izbp1czjkv9fpzmsbv0qcdz rdbmsreader]# vim plugin.json
    {
        "name": "rdbmsreader",
        "class": "com.alibaba.datax.plugin.reader.rdbmsreader.RdbmsReader",
        "description": "useScene: prod. mechanism: Jdbc connection using the database, execute select sql, retrieve data from the ResultSet. warn: The more you know about the database, the less problems you encounter.",
        "developer": "alibaba",
        "drivers":["dm.jdbc.driver.DmDriver", "com.sybase.jdbc3.jdbc.SybDriver", "com.edb.Driver","com.mysql.jdbc.Driver"]
    }
  3. 在rdbmsreader插件目录下找到libs子目录,将您下载的mysql的jar包上传上去,如下图的mysql-connector-java-5.1.47.jar

配置RDBMS数据同步任务

目前通过RDBMS Reader插件只能在脚本模式中配置同步任务,配置示例如下所示:
{
"job": {
        "setting": {
            "speed": {
                "byte": 1048576
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "rdbmsreader",
                    "parameter": {
                        "username": "xxxxx",
                        "password": "yyyyyy",
                        "column": [
                            "*",   
                        ],
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [
                                    "a2"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://xxx.mysql.yy.aliyuncs.com:3306/xxx"  //直接
配置您的SQL地址                                ]
                            }
                        ],
                       
                        "where": ""
                    }
                },
                "writer": {  //writer部分根据您的
需要配置即可                    "name": "streamwriter",
                    "parameter": {
                        "print": true
                    }
                }
            }
        ]
    }
}