DataXのMysql Readerプラグインの使用紹介

14651 ワード

DataXのMysql Readerプラグインの使用紹介
一、原理紹介
MysqlReaderはJDBC接続でデータベースにリモート接続し、ユーザー構成のパラメータに基づいてSELECT SQL文を生成したり、ユーザー独自のSQL文に基づいてSQL文を実行してデータベースのターゲット情報を取得し、DataXカスタムデータタイプパッケージ結果集を採用して、Writerプラグインで処理します。
    簡単に言えば、 Mysql ReaderはJDBCでデータベースを接続し、SELECT SQLで結果集を取得します。
二、配置例の紹介
この文章は主にmysqlのデータベースを取得する方法を紹介します。Writerの配置については紹介しません。DataXの利点はReaderプラグインとWriterプラグインの間にあるので、DataXフレームを通して異常処理、データ変換、合併、フロー制御などの核心問題を一括して維持することができます。
1.設定パラメータによりSELECT SQLを生成する例
{ "job": { "setting": { "speed": { "channel": 3 }, "errorLimit": { "percentage": 0.02 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "root", "column": [ "id", "student_name", 
  
                          "score"
                        ],
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [
                                    "student_score"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/test"
                                ]
                            }
                        ]
                    }
                },
               "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "print":true
                    }
                }
            }
        ]
    }
}



2. SQL

{
    "job": {
        "setting": {
            "speed": {
                 "record":100
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "root",
                        "connection": [
                            {
                                "querySql": [
                                    "select id,student_name,score from student_score where score > 60;"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://127.0.0.1:3306/test111",
                                    "jdbc:mysql://127.0.0.1:3333/test",
                                    "jdbc:mysql://127.0.0.1:3306/test"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "print": false,
                        "encoding": "UTF-8"
                    }
                }
            }
        ]
    }
}

3.

1. speed 

:DataX , ( )、 , 。

json   : "speed": { "channel": 5, "byte": 1048576, "record": 10000 }
  • "channel",
  • "byte",
  • "record",

2. errorLimit

:DataX , , , ,Job 。

json   :"errorLimit": {"record": 10,"percentage": 0.01}
  • "record",
  • "percentage",
MysqlReader

1. jdbcUrl

  • : JDBC , JSON , 。 JSON , IP , ,MysqlReader ip , IP。 ,MysqlReader 。 ,jdbcUrl connection 。 ,JSON JDBC 。

    jdbcUrl Mysql , 。 Mysql 。

  • :  

  • :  


2. username

  • :  

  • :  

  • :  


3. password

:  
  • :  

  • :  


4. table

  • : 。 JSON , 。 , schema ,MysqlReader 。 ,table connection 。

  • :  

  • :  


5. column

  • : , JSON 。 * , ['*']。

    , 。

    , schema 。

    , Mysql SQL : ["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id ,`table` ,1 ,'bazhen.csy' ,null ,to_char(a + 1) ,2.3 ,true 。

  • :  

  • :  


6. splitPk

  • :MysqlReader , splitPk, splitPk ,DataX , 。

    splitPk , , 。

  splitPk 、 、 。ユーザーが の サポートタイプを すると、Mysql Readerがエラーを します。

  splitPk   ,     splitPk  splitPk   ,DataX             。
:いいえ  デフォルト:   7.where
: 、Mysql Readerは されたcolumn、table、where に ってSQLをつづり わせ、このSQLに づいてデータを します。 のビジネスシーンでは、その のデータを させることが く、where をgmt_に できます。create>$bizdateです。 :where をlimit 10に してはいけません。limitはSQLの なwhere ではありません。
where               。     where  ,     where key  value,DataX         。
:いいえ  デフォルト:なし  8.querySql
: のビジネスシーンにおいて、whereのこの はフィルタリングされた を するのに りないので、ユーザはこの によってSQLをカスタマイズしてフィルタリングすることができる。ユーザがこの を すると、DataXシステムは、テーブルjoin にデータを して、select a,b from tableを して、この の を してデータをフィルタリングします。aジョインテーブルb on table_a.id=table_b.id       querySql ,MysqlReader table、column、where querySql はテーブル、column、whereより きい。

  • :いいえ 
  • デフォルト:なし  4.タイプ
    のMysql ReaderはほとんどのMysqlタイプをサポートしていますが、 のタイプがサポートされていない もありますので、タイプを してください。
    Mysql ReaderのMysqlタイプに する リストを に します。
    DataX タイプ
    Mysqlデータタイプ
    Long
    int,int,smaallint,mediumint,int,bigint
    Double
    float,double,decimal
    String
    varrchar、char、tinytext、text、mediumtext、longtext、year
    Date
    date、date time、timestamp、time
    ボロア
    bit,book
    Bytes
    tinylob、mediumblob、blob、longblob、varbinary
    してください:tinyint(1) DataX year DataX bit DataX 5.
    5.1マスタ データ
    な とは、Mysqlが なスレーブを して され、メインライブラリから にbinlogを じてデータを することをいう。 な データの には の があるため、 に、ネットワーク などの の により、 のデータはメインライブラリとは きく なるため、 から されるデータは の の なイメージではない。
    この に して、preSql を しました。この は されるべきです。
    5.2
    Mysqlはデータ においてRDBMSシステムに しており、 に い のデータ インターフェースを することができる。 えば、 タスクが している 、この が のデータ み にデータを き むと、MysqlReaderは に データを き むことができなくなります。これはデータベース のスナップショット によって されます。データベーススナップショットの については、MVCC Wikipediaを してください。
    はMysql Reader スレッドモデルにおけるデータ の であり、Mysql Readerはユーザー に って データを して することができるので、 にデータ を できない。Mysql ReaderがsplitPkによるデータカットを った 、 の タスクを してデータ を する。 の タスクの には の に さないため、 の タスクには があります。したがって、このデータは データスナップショット ではありません。
    マルチスレッドの スナップショット に しては、 には できず、 の からしか できず、 の は されています。いくつかの をユーザーに します。ユーザーは で できます。
    スレッド を すると、データスライスは われなくなります。 は が いことですが、 をよく できます。 のデータ み をオフにして、 のデータが データであることを します。 えば、ロックテーブル、ストック をオフにします。 はオンライン に する があります。5.3データベースコード
    Mysql の は に であり、 されたコードをライブラリ、テーブル、フィールドレベルまで め、すべて なる が である。 は、フィールド、テーブル、ライブラリ、インスタンスより いです。データベースユーザーにこのような したコードを することを めません。ライブラリレベルでUTF-8に したほうがいいです。
    Mysql Readerの の はJDBCを ってデータ を い、JDBCは に の に し、 の で を った。したがって、Mysql Readerは、ユーザーがコードを する がなく、 にコードを してトランスコードすることができます。
    Mysqlの の き み と されたコードが しないという に して、Mysql Readerは できなくなり、 も できなくなりました。
    5.4 データ
    MysqlReaderはJDBC SELECT を ってデータ を しているので、SELECT...WHERE...を って データ を うことができます。 は です。
    データベースがオンラインアプリケーションでデータベースに き む 、modifyフィールドを りつぶしてタイムスタンプを します。 、 、 ( )を みます。このような に して、Mysql Readerは、WHERE が タイムスタンプに うだけでよい。 たに データを するには、Mysql Readerは、WHERE の に、 の で の IDでいいです。 のフィールド なしにデータが され、 された 、MysqlReaderも データ ができず、フルデータのみ することができます。
    5.5 Sql
    Mysql ReaderはquerySql をユーザーに して でSELECT を します。Mysql Reader はquerySqlに していかなる をしません。この はDataXユーザー が で します。

    mysql データはselect でデータを するため、 ワードによるselectクエリのエラーを けるために、フィールド ごとに を けることを します。
    `
    :https://github.com/alibaba/DataX