RDBMS (リレーショナルデータベース管理システム) Reader は、リレーショナルデータベースからデータを読み取るための一般的なプラグインです。 RDBMS Reader が特定のリレーショナルデータベースからデータベースを読み取れるよう、対応するタイプのドライバーを追加または登録できます。 このトピックでは、RDBMS Reader 用のリレーショナルデータベースドライバーを追加する方法について説明します。

始める前に

Elastic Compute Service (ECS) インスタンスは、カスタムリソースグループのリソースとして購入されます。 次の要件を満たす ECS インスタンスを購入することを推奨します。
  • ECS インスタンスは、CentOS V6、CentOS V7、または AliOS を実行します。
  • ECS インスタンスで MaxCompute ノードまたは同期ノードを実行する場合、ECS インスタンスは Python V2.6 または V2.7 を実行します。 CentOS V5 は Python V2.4 を使用します。 他のオペレーティングシステムは、Python バージョン V2.6 以降を使用します。
  • これにより、ECS インスタンスはインターネットにアクセスできます。 ECS インスタンスがインターネットにアクセスできるかどうかを確認するには、ECS インスタンスで www.aliyun.com に ping を実行します。 Web サイトに ping が実行できる場合、ECS インスタンスはインターネットにアクセスできます。
  • ECS インスタンスを 8 コア の CPU と 16 GB のメモリで構成することを推奨します。

このタスクについて

RDBMS Reader は、Java Database Connectivity (JDBC) を介してリモート RDBMS データベースに接続し、構成に基づいて SELECT 文を生成し、その文をデータベースに送信します。 RDBMS データベースがその文を実行し、結果を返します。 RDBMS Reader は、返されたデータを、Data Integration でサポートされているカスタムデータ型の抽象データセットにアセンブルし、データセットをライターに渡します。 詳細については、「RDBMS Reader の設定」をご参照ください。

カスタマイズリソースグループの追加

  1. DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、対象のワークスペースを見つけて、[アクション] 列の[Data Integration] をクリックします。
    DataWorks のモジュールにログインしている場合は、左上隅の DataWorks アイコンをクリックして、 [すべての製品] > [Data Integration] を選択して、[Data Integration] ページに移動します。
  2. 左側のナビゲーションウィンドウで、[カスタムリソースグループ] をクリックします。 [カスタムリソースグループ] ページが表示されます。
  3. 右上隅の [リソースグループの追加] をクリックします。
  4. 表示されるダイアログボックスでパラメーターを設定し、エージェントをインストールして初期化します。 詳細については、「カスタムリソースグループの追加」をご参照ください。
    サーバーのステータスが [実行中] の場合、カスタムリソースグループが追加されます。
    サーバーのステータスがまだの場合、[停止中] ダイアログボックスを更新した後、管理者アカウントに切り替え、次のコマンドを実行して alisa を再起動します。
    /home/admin/alisatasknode/target/alisatasknode/bin/serverct1 restart

MySQL ドライバーの追加

  1. RDBMS Reader のディレクトリに移動します。 ${DATAX_HOME} は、Data Integration のホームディレクトリを示します。 RDBMS Reader は /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 を plugin.json ファイルのドライバー配列に追加します。
    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. ダウンロードした MySQL JAR パッケージを rdbmsreader ディレクトリの libs のディレクトリに追加します。
    たとえば、次の図の mysql-connector-java-5.1.47.jarパッケージを追加できます。MySQL JAR パッケージ

同期ノードを構成します。

現在、コードエディターで同期ノードを構成するには、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"  // MySQL データベースに接続する JDBC URL
                               ]
                            }
                        ],

                        "where": ""
                    }
                },
                "writer": {  // 必要に応じてライターを設定します。 
                   "name": "streamwriter",
                    "parameter": {
                        "print": true
                    }
                }
            }
        ]
    }
}