TiDB データソースを使用すると、データをオフラインで読み取ることができます。このトピックでは、DataWorks が TiDB のデータ同期をどのようにサポートするかについて説明します。
サポート対象の TiDB バージョン
オフライン読み取り:TiDB データベースバージョン 7.x および 8.x がサポートされています。
オフライン書き込み:サポートされていません。
リアルタイム読み取り/書き込み:サポートされていません。
TiDB は MySQL プロトコルと高い互換性を持ち、MySQL 5.7 および MySQL 8.0 の一般的な機能と構文をサポートしています。DataWorks は、オフラインデータ同期のために MySQL プロトコルを使用して TiDB からデータを読み取ります。TiDB と MySQL の互換性の詳細については、MySQL との互換性をご参照ください。
サポート対象のフィールドタイプ
サポートされているすべての 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 バージョン 7.x または 8.x が必要です。ご利用の TiDB データベースがこのバージョン要件を満たしていることを確認してください。現在のバージョンを確認するには、TiDB データベースで次の文を実行します。
SELECT TIDB_VERSION()\G
*************************** 1. row ***************************
TIDB_VERSION(): Release Version: v8.1.1
Edition: Community
Git Commit Hash: 821e491a20fbab36604b36b647b5bae26a2c1418
Git Branch: HEAD
UTC Build Time: 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)アカウント権限の設定
DataWorks がデータソースにアクセスするための専用の TiDB アカウントを作成します。
(任意) アカウントの作成。詳細については、ユーザーアカウント管理をご参照ください。
権限の設定。
TiDB からのオフラインデータ読み取りには、このアカウントに同期したいテーブルに対する読み取り (
SELECT) 権限が必要です。次のコマンドを実行してアカウントに権限を付与するか、直接
SUPER権限を付与できます。次の文では、'sync_account'を作成したアカウントに置き換えてください。-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password'; // 同期アカウントを作成し、パスワードを設定します。これにより、アカウントは任意のホストからデータベースにログインできます。パーセント記号 (%) は任意のホストを示します。 GRANT SELECT ON *.* TO 'sync_account'@'%'; // データベースに対する SELECT 権限を同期アカウントに付与します。*.*は、すべてのデータベースのすべてのテーブルに対する指定された権限をアカウントに付与します。また、ターゲットデータベースの特定のテーブルに対する権限をアカウントに付与することもできます。たとえば、test データベースの user テーブルに対する権限をアカウントに付与するには、GRANT SELECT ON test.user TO 'sync_account'@'%';文を実行します。説明REPLICATION SLAVE文はグローバル権限を付与します。この文を使用して、ターゲットデータベースの特定のテーブルに対する権限を同期アカウントに付与することはできません。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、パラメーターの意味を理解できます。
付録:TiDB スクリプトのデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマットの要件に基づいて、スクリプト内で関連するパラメーターを設定する必要があります。詳細については、「コードエディタでのタスクの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトのデモ
次のコードは、データを読み取るためのサンプルスクリプトです:
次の 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"
}
]
}
}
Reader スクリプトのパラメーター
スクリプトパラメーター名 | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。コードエディタはデータソースの追加をサポートしています。このパラメーターの値は、追加されたデータソースの名前と同じである必要があります。 | はい | なし |
table | データを同期するテーブルの名前。 次の例は、table パラメーターの高度な使用法を示しています:
| はい | なし |
column | 指定されたテーブルから同期する列。JSON 配列を使用してフィールドを記述します。すべての列を同期するには、このパラメーターを
| はい | なし |
splitPk | TiDB Reader がデータを抽出する際に splitPk を指定すると、システムは指定されたフィールドを使用してデータをパーティション分割します。これにより、データ同期のための同時タスクが可能になり、効率が向上します。
| いいえ | なし |
where | フィルター条件。多くのビジネスシナリオでは、現在日のデータを同期することがあります。これを行うには、where 条件を
| いいえ | なし |