すべてのプロダクト
Search
ドキュメントセンター

DataWorks:TiDB

最終更新日:Mar 01, 2026

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 アカウントを作成します。

  1. (任意) アカウントの作成。詳細については、ユーザーアカウント管理をご参照ください。

  2. 権限の設定。

    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 パラメーターの高度な使用法を示しています:

  • 範囲を設定することで、シャーディングされたテーブルからデータを読み取ることができます。たとえば、'table_[0-99]' は、'table_0''table_1''table_2' から 'table_99' までのデータを読み取ることを指定します。

  • テーブル名の数値サフィックスが 'table_000''table_001''table_002' から 'table_999' のように同じ長さである場合、パラメーターを '"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]' に設定できます。

はい

なし

column

指定されたテーブルから同期する列。JSON 配列を使用してフィールドを記述します。すべての列を同期するには、このパラメーターを ["*"] に設定します。

  • 列のプルーニング:エクスポートする特定の列を選択できます。

  • 列の並べ替え:テーブルスキーマとは異なる順序で列をエクスポートできます。

  • 定数設定:MySQL SQL 構文に従う必要があります。例:["id","table","1","'test_constant'","'null'","to_char(a+1)","2.3","true"]

    • id は通常の列名です。

    • table は予約語でもある列名です。

    • 1 は整数定数です。

    • 'test_constant' は文字列定数です。単一引用符で囲む必要があることに注意してください。

    • null について:

      • "" は空文字列を示します。

      • null は NULL 値を示します。

      • 'null' は文字列 "null" を示します。

    • to_char(a+1) 関数は、文字列の長さを計算します。

    • 2.3 は浮動小数点数です。

    • true はブール値です。

  • column パラメーターは、同期する列のセットを明示的に指定する必要があります。空にすることはできません。

はい

なし

splitPk

TiDB Reader がデータを抽出する際に splitPk を指定すると、システムは指定されたフィールドを使用してデータをパーティション分割します。これにより、データ同期のための同時タスクが可能になり、効率が向上します。

  • splitPk にはテーブルのプライマリキーを使用します。プライマリキーは通常、均等に分散されているため、結果のシャードでデータホットスポットが発生するのを防ぐのに役立ちます。

  • 現在、splitPk は整数ベースのデータパーティション分割のみをサポートしています。文字列、浮動小数点数、日付などの他のデータ型はサポートしていません。サポートされていないデータ型を指定した場合、splitPk 機能は無視され、データは単一チャネルで同期されます。

  • splitPk を指定しない場合、またはその値が空の場合、データはテーブルから単一チャネルで同期されます。

いいえ

なし

where

フィルター条件。多くのビジネスシナリオでは、現在日のデータを同期することがあります。これを行うには、where 条件を gmt_create>$bizdate に設定します。

  • where 条件により、効率的な増分データ同期が可能になります。where 句を指定しない場合、またはキーや値が提供されない場合、すべてのデータが同期されます。

  • where 条件では limit 構文はサポートされていません。

いいえ

なし