DataWorks は、オフラインモードで TiDB データソースからデータを読み取るための TiDB Reader を提供します。このトピックでは、TiDB データソースからデータを同期する機能について説明します。
サポートされている TiDB バージョン
バッチデータ読み取り:TiDB 7.x および TiDB 8.x データベースがサポートされています。
バッチデータ書き込み:TiDB データベースバージョンはサポートされていません。
リアルタイムデータの読み取りと書き込み:TiDB データベースバージョンはサポートされていません。
TiDB は MySQL プロトコルと、MySQL 5.7 および MySQL 8.0 で一般的に使用される機能と構文と高度に互換性があります。オフラインモードでの TiDB データソースからのデータ同期は、MySQL プロトコルに基づいて実装されています。 TiDB と MySQL の互換性の比較については、MySQL Compatibility を参照してください。
サポートされているデータ型
各 TiDB バージョンのすべてのデータ型については、Data Types を参照してください。次の表は、TiDB の主要なデータ型のサポート状況を示しています。
データ型 | バッチデータ読み取り用の TiDB Reader |
TINYINT | サポートされています |
SMALLINT | サポートされています |
MEDIUMINT | サポートされています |
INTEGER | サポートされています |
BIGINT | サポートされています |
FLOAT | サポートされています |
DOUBLE | サポートされています |
DECIMAL | サポートされています |
CHAR | サポートされています |
VARCHAR | サポートされています |
JSON | サポートされています |
TEXT | サポートされています |
TINYTEXT | サポートされています |
MEDIUMTEXT | サポートされています |
LONGTEXT | サポートされています |
VARBINARY | サポートされています |
BINARY | サポートされています |
BLOB | サポートされています |
TINYBLOB | サポートされています |
MEDIUMBLOB | サポートされています |
LONGBLOB | サポートされています |
ENUM | サポートされています |
SET | サポートされています |
BOOLEAN | サポートされています |
BIT | サポートされています |
DATE | サポートされています |
DATETIME | サポートされています |
TIMESTAMP | サポートされています |
TIME | サポートされています |
YEAR | サポートされています |
データ同期前に TiDB 環境を準備する
DataWorks を使用して TiDB データソースからデータを同期する前に、TiDB 環境を準備する必要があります。これにより、データ同期タスクを構成し、TiDB データソースから期待どおりにデータを同期できるようになります。以下の情報は、TiDB データソースからのデータ同期のために TiDB 環境を準備する方法について説明しています。
準備 1:TiDB データベースのバージョンを確認する
Data Integration では、TiDB データベースのバージョンが 7.x または 8.x である必要があります。 データを同期する TiDB データベースのバージョンが要件を満たしているかどうかを確認する必要があります。次のステートメントを実行して、TiDB データベースのバージョンを確認できます。
SELECT TIDB_VERSION()\G
/*
1 行目 ***************************
TIDB_VERSION(): リリースバージョン: v8.1.1
エディション: Community
Git コミットハッシュ: 821e491a20fbab36604b36b647b5bae26a2c1418
Git ブランチ: HEAD
UTC ビルド時間: 2024-08-27 19:16:25
GoVersion: go1.21.10
Race Enabled: false
Check Table Before Drop: false
Store: tikv
1 row in set (0.00 sec)
*/準備 2:必要な権限を持つアカウントを準備する
DataWorks が TiDB データベースにアクセスするためのアカウントを計画および作成することをお勧めします。このようなアカウントを準備するには、次の手順を実行します。
オプション。アカウントを作成します。詳細については、TiDB User Account Management を参照してください。
アカウントに必要な権限を付与します。
バッチデータ読み取り:アカウントには
SELECT権限が必要です。次のステートメントを実行して、アカウントに権限を付与できます。または、アカウントに
SUPER権限を付与することもできます。ステートメントのデータ同期用アカウントを、作成したアカウントに置き換えます。-- CREATE USER 'データ同期用アカウント'@'%' IDENTIFIED BY 'パスワード'; //データ同期に使用できるアカウントを作成し、パスワードを指定します。このようにして、任意のホストからアカウントとパスワードを使用してデータベースにアクセスできます。 % はホストを示します。 GRANT SELECT ON *.* TO 'データ同期用アカウント'@'%'; // アカウントに SELECT 権限を付与します。*.*は、すべてのデータベースのすべてのテーブルに対する上記の権限がアカウントに付与されていることを示します。データベース内の特定のテーブルに対する上記の権限をアカウントに付与することもできます。たとえば、test データベースの user テーブルに対する上記の権限をアカウントに付与するには、次のステートメントを実行します:GRANT SELECT ON test.user TO 'データ同期用アカウント'@'%';。説明REPLICATION SLAVE権限はグローバル権限です。データベース内の特定のテーブルに対するこの権限をアカウントに付与することはできません。
データソースを追加する
データソースを追加および管理する の手順に従って、DataWorks で同期タスクを開発する前に、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールのパラメータのヒントを表示して、パラメータの意味を理解できます。
付録:コードとパラメータ
コードエディタを使用してバッチ同期タスクを構成する
コードエディタを使用してバッチ同期タスクを構成する場合は、統一スクリプト形式の要件に基づいて、スクリプトに関連パラメータを構成する必要があります。詳細については、コードエディタを使用してバッチ同期タスクを構成する を参照してください。以下の情報は、コードエディタを使用してバッチ同期タスクを構成する際に、データソースに対して構成する必要のあるパラメータについて説明しています。
TiDB Reader のコード
次のコードは、TiDB データソースからデータを読み取る同期タスクを構成する方法の例を示しています。
JSON 例のコメントは、いくつかの主要なパラメータの定義を示すためだけに使用されます。パラメータを構成する際は、コメントを削除してください。
{
"type": "job",
"version": "2.0",
"steps":
[
{
"stepType": "tidb",
"parameter":
{
"column":
[
"id",
"name"
],
"where": "",
"splitPk": "id",
"connection":
[
{
"selectedDatabase": "test_database",
"datasource": "test_datasource",
"table":
[
"test_table"
]
}
]
},
"name": "Reader", // リーダーの名前
"category": "reader"
},
{
"stepType": "odps",
"parameter":
{
},
"name": "Writer", // ライターの名前
"category": "writer"
}
],
"setting":
{
"errorLimit":
{
"record": "0"
},
"speed":
{
"throttle": false,
"concurrent": 3
}
},
"order":
{
"hops":
[
{
"from": "Reader",
"to": "Writer"
}
]
}
}
TiDB Reader のコードのパラメータ
パラメータ | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディタを使用してデータソースを追加できます。 | はい | デフォルト値なし |
table | データを読み取るテーブルの名前。 table パラメータに対して高度な構成を行い、テーブル範囲を指定できます。例:
| はい | デフォルト値なし |
column | データを読み取る列の名前。JSON 配列で名前を指定します。デフォルト値は
| はい | デフォルト値なし |
splitPk | TiDB Reader がデータを読み取るときにデータシャーディングに使用されるフィールド。このパラメータを構成すると、このパラメータの値に基づいてデータシャーディングが実行され、並列スレッドを使用してデータを読み取ることができます。これにより、データ同期の効率が向上します。
| いいえ | デフォルト値なし |
where | WHERE 句。たとえば、このパラメータを
| いいえ | デフォルト値なし |