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

Time Series Database:MySQL データベースから TSDB データベースへのデータの移行

最終更新日:Jan 14, 2025

このトピックでは、DataX を使用して MySQL データベースから Lindorm 時系列データベース (TSDB) データベースにデータを移行する方法について説明します。DataX は、Alibaba Group によって開発されたオープンソースツールです。

背景情報

このトピックでは、DataX を使用して MySQL データベースから TSDB データベースにデータを移行する方法について説明します。DataX は、Alibaba Group によって開発されたオープンソースツールです。

DataX の使用方法の詳細については、「README」をご参照ください。

このセクションでは、DataX、MySQL Reader、および TSDB Writer について説明します。MySQL Reader と TSDB Writer は、データの移行に使用されるプラグインです。

DataX

DataX は、Alibaba Group 内でオフラインデータの同期に広く使用されているツールです。DataX を使用すると、さまざまな種類の異なるデータソース間でデータを効率的に同期できます。DataX は、MySQL、Oracle、SQL Server、PostgreSQL、Hadoop Distributed File System (HDFS)、Hive、AnalyticDB for MySQL、HBase、Tablestore (OTS)、MaxCompute、および PolarDB-X データソースをサポートしています。MaxCompute の以前の名前は Open Data Processing Service (ODPS) です。

MySQL Reader

MySQL Reader は、DataX によって提供されるプラグインです。MySQL Reader を使用して、MySQL データベースからデータをクエリできます。

TSDB Writer

TSDB Writer は、DataX によって提供されるプラグインです。TSDB Writer を使用して、Alibaba Cloud によって開発された TSDB データベースにデータポイントを書き込むことができます。

クイックスタート

手順 1:環境を構成する

  • Linux

  • Java Development Kit (JDK) 1.8 以降を使用します。JDK 1.8 を使用することをお勧めします。

  • Python 2.6.x を使用することをお勧めします。

  • DataX は MySQL 5.x のみに対応しています。MySQL のバージョンが 5.x 以外の場合、互換性の問題が発生する可能性があります。

  • DataX は TSDB 2.4.x 以降のみに対応しています。以前のバージョンの TSDB を使用すると、互換性の問題が発生する可能性があります。

手順 2:DataX と関連プラグインをダウンロードする

手順 3:DataX によって提供される組み込みスクリプトを使用して、データが想定どおりに移行できるかどうかをテストする

テストでは、Stream Reader と Stream Writer プラグインが使用されます。Stream Reader と Stream Writer は使いやすく、外部依存関係を必要としません。このように、Stream Reader と Stream Writer を使用して、データが想定どおりに移行できるかどうかをテストできます。Stream Reader と Stream Writer を使用して、単純なデータ移行のプロセスをシミュレートできます。Stream Reader はランダムな文字列を生成します。Stream Writer は文字列を受信し、CLI に出力します。

DataX をインストールする

インストールパッケージを DATAX_HOME に展開します。次に、datax.py スクリプトを実行して移行タスクを開始します。

cd ${DATAX_HOME}
python bin/datax.py job/job.json

データが想定どおりに移行されたかどうかを確認する

データが想定どおりに移行された場合に返される概要情報の例を次に示します。

タスクの開始時刻                    : 2019-04-26 11:18:07
タスクの終了時刻                    : 2019-04-26 11:18:17
実行時間                    :                 10秒
平均トラフィック                    :          253.91KB/秒
書き込み速度                    :          10000レコード/秒
取得レコード数                    :              100000
読み取りおよび書き込みの失敗                    :                   0

サンプルコードの詳細については、「データ移行のクイックスタート」をご参照ください。

手順 4:MySQL データベースから TSDB データベースにデータを移行するタスクを構成して開始する

手順 3 では、Stream Reader と Stream Writer を使用すると、データが想定どおりに移行されます。移行結果から、DataX を使用してデータを移行できることがわかります。この場合、MySQL Reader と TSDB Writer を使用して、MySQL データベースから TSDB データベースにデータを移行できます。

データ移行タスクを構成する

mysql2tsdb.json という名前のタスクを構成して、MySQL データベースから TSDB データベースにデータを移行します。次のサンプルコードを使用してタスクを構成できます。パラメータの詳細については、「パラメータ」セクションをご参照ください。

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price"
            ],
            "connection": [
              {
                "jdbcUrl": [
                  "jdbc:mysql://127.0.0.1:3306/datax"
                ],
                "table": [
                  "book"
                ]
              }
            ],
            "password": "yuzhouwan",
            "splitPk": "id",
            "username": "root"
          }
        },
        "writer": {
          "name": "tsdbwriter",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price"
            ],
            "columnType": [
              "tag",
              "tag",
              "timestamp",
              "metric_num"
            ],
            "sourceDbType": "RDB",
            "tsdbAddress": "localhost",
            "tsdbPort": 8242
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}

MySQL データベースから TSDB データベースにデータを移行するタスクを開始する

cd ${DATAX_HOME}/..
 ls
  datax/  datax.tar.gz  mysql2tsdb.json
python datax/bin/datax.py mysql2tsdb.json

データが想定どおりに移行されたかどうかを確認する

データが想定どおりに移行された場合に返される概要情報の例を次に示します。

タスクの開始時刻                    : 2019-05-21 18:25:16
タスクの終了時刻                    : 2019-05-21 18:25:27
実行時間                    :                 11秒
平均トラフィック                    :                3B/秒
書き込み速度                    :               0レコード/秒
取得レコード数                    :                   3
読み取りおよび書き込みの失敗                    :                   0

サンプルコードの詳細については、「MySQL データベースから TSDB データベースへのデータの移行」をご参照ください。

パラメータ

次の表にパラメータを示します。

MySQL Reader のパラメータ

パラメータ

タイプ

必須

説明

デフォルト値

jdbcUrl

String

はい

Java Database Connectivity (JDBC) が MySQL データベースへの接続に使用するデータベース URL。

なし

jdbc:mysql://127.0.0.1:3306/datax

username

String

はい

MySQL データベースへの接続に使用するユーザー名。

なし

root

password

String

はい

MySQL データベースへの接続に使用するパスワード。

なし

root

table

String

はい

移行するデータを含むテーブル。

なし

book

column

Array

はい

移行する列の名前。

[]

["m"]

splitPk

String

いいえ

テーブルシャーディングに使用されるシャードキー。 splitPk 値を構成すると、指定された値に基づいてテーブルがシャーディングされます。

なし

id

TSDB Writer のパラメータ

パラメータ

タイプ

必須

説明

デフォルト値

sourceDbType

String

いいえ

有効な値は TSDB と RDB です。TSDB 値は、OpenTSDB、InfluxDB、Prometheus、TimescaleDB など、時系列データを処理するシステムを指定します。RDB 値は、MySQL、Oracle、PostgreSQL、PolarDB-X など、互いに関連するデータポイントを処理するシステムを指定します。

TSDB

RDB

column

Array

はい

移行する列の名前。

[]

["name","type","create_time","price"]

columnType

Array

はい

列が移行された後の TSDB データベースの列のデータ型。有効な値:timestamp、tag、metric_num、metric_string。値 timestamp は、列にタイムスタンプが含まれていることを指定します。値 tag は、列にタグが含まれていることを指定します。値 metric_num は、列に数値データ型のデータが含まれていることを指定します。値 metric_string は、列に文字列データ型のデータが含まれていることを指定します。

[]

["tag","tag","timestamp","metric_num"]

tsdbAddress

String

はい

TSDB データベースの IP アドレス。

なし

127.0.0.1

tsdbPort

int

はい

TSDB データベースによって使用されるポート。

なし

8242

batchSize

int

いいえ

同時に移行するデータレコードの数。値は 0 より大きい整数である必要があります。

100

100

移行タスクの各プロセスが TSDB データベースにアクセスできることを確認してください。

TSDB Writer は HTTP エンドポイント /api/put を呼び出してデータを書き込みます。データを移行する必要がある場合は、移行タスクの各プロセスが TSDB データベースによって提供される HTTP エンドポイントにアクセスできることを確認してください。そうでない場合、接続例外が報告されます。

移行タスクの各プロセスが MySQL データベースにアクセスできることを確認してください。

MySQL Reader は JDBC を使用してデータを読み取ります。データを移行する必要がある場合は、移行タスクの各プロセスが MySQL データベースによって提供される JDBC API にアクセスできることを確認してください。そうでない場合、接続例外が報告されます。

TSDB Writer と MySQL Reader で構成されている列名の順序は一致している必要があります。

TSDB Writer で構成されている列名の順序は、MySQL Reader で構成されている列名の順序と同じである必要があります。そうでない場合、データは想定どおりに処理されません。

FAQ

移行プロセスの Java Virtual Machine (JVM) メモリサイズを変更できますか?

はい、移行プロセスの JVM メモリサイズを変更できます。MySQL データベースから TSDB データベースにデータを移行するタスクの JVM メモリサイズを変更する場合は、次のコマンドを実行します。

python datax/bin/datax.py mysql2tsdb.json -j "-Xms4096m -Xmx4096m"

TSDB データベースのホワイトリストに IP アドレスを追加するにはどうすればよいですか?

TSDB ドキュメントの説明に基づいて、TSDB データベースのホワイトリストに IP アドレスを追加できます。[クイックスタート] > [IP アドレスホワイトリストの設定] を選択して、説明を表示できます。

移行タスクが Elastic Compute Service (ECS) インスタンスで実行されている場合、仮想プライベートクラウド (VPC) をどのように構成すればよいですか?また、発生する可能性のある一般的な問題は何ですか?

TSDB ドキュメントの「ECS セキュリティグループのユースケース」と「VPC に関する FAQ」のトピックから、VPC を構成し、発生する可能性のある一般的な問題について学ぶことができます。