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