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

Data Transmission Service:ECS インスタンス上の自己管理 MySQL データベースから Elasticsearch にデータを同期する

最終更新日:Nov 21, 2025

Alibaba Cloud Elasticsearch は、オープンソースの Elasticsearch およびその商用機能 (Security、Machine Learning、Graph、APM など) と完全に互換性があります。データ分析やデータ検索などのシナリオ向けに設計されており、エンタープライズレベルのアクセス制御、セキュリティ監視とアラート、および自動レポート生成をサポートしています。Data Transmission Service (DTS) を使用して、ECS インスタンス上の自己管理 MySQL データベースから Elasticsearch にデータを同期し、データセットを迅速に構築できます。

前提条件

  • バージョン 5.5、5.6、6.3、6.7、または 7.x の Elasticsearch インスタンスが作成されていること。詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」をご参照ください。

  • 自己管理 MySQL データベースのバージョンが 5.1、5.5、5.6、5.7、または 8.0 であること。

注意事項

  • DTS は、初期完全データ同期中にソースおよび宛先 RDS インスタンスの読み取りおよび書き込みリソースを使用します。これにより、RDS インスタンスの負荷が増加する可能性があります。インスタンスのパフォーマンスが好ましくない場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなることがあります。たとえば、ソース RDS インスタンスで多数の低速 SQL クエリが実行される場合、テーブルにプライマリキーがない場合、または宛先 RDS インスタンスでデッドロックが発生する場合など、DTS は大量の読み取りおよび書き込みリソースを占有します。データ同期の前に、データ同期がソースおよび宛先 RDS インスタンスのパフォーマンスに与える影響を評価してください。オフピーク時にデータを同期することをお勧めします。たとえば、ソースおよび宛先 RDS インスタンスの CPU 使用率が 30% 未満の場合にデータを同期できます。

  • DTS はデータ定義言語 (DDL) 操作を同期しません。データ同期中にソースデータベースのテーブルで DDL 操作が実行された場合は、同期オブジェクトからテーブルを削除し、Elasticsearch インスタンスからテーブルのインデックスを削除してから、テーブルを同期オブジェクトに再度追加する必要があります。詳細については、「同期オブジェクトの削除」および「同期オブジェクトの追加」をご参照ください。

  • 同期するテーブルに列を追加するには、まず Elasticsearch インスタンスで対応するテーブルのマッピングを変更します。次に、ソース MySQL データベースで対応する DDL 操作を実行します。最後に、DTS インスタンスを一時停止して再起動します。

  • MySQL インスタンスから Elasticsearch インスタンスに同期されたデータに空の文字が含まれている場合、データは Elasticsearch インスタンスに書き込まれる前に LONG 型に変換されます。これにより、タスクが失敗します。

  • MySQL インスタンスから Elasticsearch インスタンスに同期されたデータに位置情報が含まれており、緯度と経度が逆に格納されている場合、データが Elasticsearch インスタンスに書き込まれるときにエラーが発生します。

  • 開発およびテスト仕様の Elasticsearch インスタンスはサポートされていません。

課金

同期タイプタスク構成料金
スキーマ同期と完全データ同期無料です。
増分データ同期課金されます。詳細については、「課金の概要」をご参照ください。

サポートされる SQL 操作

INSERT、DELETE、UPDATE

データ型のマッピング

  • ソースデータベースと Elasticsearch インスタンスがサポートする型が異なるため、データ型の直接マッピングが常に可能であるとは限りません。初期スキーマ同期中、DTS は Elasticsearch インスタンスでサポートされている型に基づいてデータ型をマッピングします。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。

    説明

    DTS は、スキーマ移行中に mapping パラメーターの dynamic を設定しません。パラメーターの動作は、Elasticsearch インスタンスの設定によって異なります。ソースデータが JSON 形式の場合、テーブル内のすべての行で同じキーの値が同じデータ型であることを確認してください。そうしないと、DTS で同期エラーが発生する可能性があります。詳細については、「dynamic」をご参照ください。

  • 次の表に、Elasticsearch とリレーショナルデータベースのマッピングを示します。

    Elasticsearch

    リレーショナルデータベース

    インデックス

    データベース

    タイプ

    テーブル

    ドキュメント

    フィールド

    マッピング

    スキーマ

準備

自己管理 MySQL データベースのデータベースアカウントを作成し、バイナリログを構成する

手順

  1. データ同期インスタンスを購入します。詳細については、「購入手順」をご参照ください。

    説明

    インスタンスを購入する際、ソースインスタンスを [MySQL] に、宛先インスタンスを [Elasticsearch] に、同期トポロジを [一方向同期] に設定します。

  2. DTS コンソールにログインします。

    説明

    Data Management (DMS) コンソールにリダイレクトされた場合は、にある old アイコンimage をクリックして、以前のバージョンの DTS コンソールに移動できます。

  3. 左側のナビゲーションウィンドウで、[データ同期] をクリックします。

  4. [同期タスク] ページの上部で、宛先インスタンスが存在するリージョンを選択します。

  5. データ同期インスタンスを見つけ、[アクション] 列の [タスクの設定] をクリックします。

  6. ソースインスタンスと宛先インスタンスを構成します。

    配置源和目标实例信息

    カテゴリ

    構成

    説明

    N/A

    タスク名

    DTS は自動的にタスク名を生成します。簡単に識別できるように、わかりやすい名前を指定します。名前は一意である必要はありません。

    ソースインスタンス

    インスタンスタイプ

    [パブリック IP を持つ自己管理データベース] を選択します。

    インスタンスリージョン

    データ同期インスタンスを購入したときに選択したソースインスタンスのリージョン。このパラメーターは変更できません。

    ECS インスタンス ID

    自己管理 MySQL データベースがデプロイされている ECS インスタンスの ID を選択します。

    データベースタイプ

    値は [MySQL] に固定されており、変更できません。

    ポート

    自己管理 MySQL データベースのサービスポートを入力します。

    データベースアカウント

    自己管理 MySQL データベースのデータベースアカウントを入力します。

    説明

    アカウントには、すべての同期オブジェクトに対する REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、および SELECT 権限が必要です。

    データベースパスワード

    データベースアカウントのパスワードを入力します。

    宛先インスタンス

    インスタンスタイプ

    値は [Elasticsearch] に固定されており、変更できません。

    インスタンスリージョン

    データ同期インスタンスを購入したときに選択した宛先インスタンスのリージョン。このパラメーターは変更できません。

    Elasticsearch

    Elasticsearch インスタンスの ID を選択します。

    データベースアカウント

    Elasticsearch インスタンスへの接続に使用するデータベースアカウントを入力します。デフォルト値は elastic です。

    データベースパスワード

    データベースアカウントのパスワードを入力します。

  7. ページの右下隅にある [ホワイトリストと次への設定] をクリックします。

    ソースまたはターゲットデータベースが ApsaraDB RDS for MySQLApsaraDB for MongoDB インスタンスなどの Alibaba Cloud データベースインスタンスである場合、DTS は DTS サーバーの CIDR ブロックをインスタンスの IP アドレスホワイトリストに自動的に追加します。ソースまたはターゲットデータベースが Elastic Compute Service (ECS) インスタンスでホストされている自己管理データベースである場合、DTS は DTS サーバーの CIDR ブロックを ECS インスタンスのセキュリティグループルールに自動的に追加します。ECS インスタンスがデータベースにアクセスできることを確認する必要があります。自己管理データベースが複数の ECS インスタンスでホストされている場合は、DTS サーバーの CIDR ブロックを各 ECS インスタンスのセキュリティグループルールに手動で追加する必要があります。ソースまたはターゲットデータベースがデータセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供されている自己管理データベースである場合は、DTS がデータベースにアクセスできるように、DTS サーバーの CIDR ブロックをデータベースの IP アドレスホワイトリストに手動で追加する必要があります。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。

    警告

    DTS サーバーの CIDR ブロックがデータベースまたはインスタンスのホワイトリスト、または ECS セキュリティグループルールに自動または手動で追加されると、セキュリティリスクが発生する可能性があります。したがって、DTS を使用してデータを同期する前に、潜在的なリスクを理解して認め、ユーザー名とパスワードのセキュリティの強化、公開されるポートの制限、API 呼び出しの認証、ホワイトリストまたは ECS セキュリティグループルールの定期的な確認と不正な CIDR ブロックの禁止、Express Connect、VPN Gateway、または Smart Access Gateway を使用したデータベースの DTS への接続など、予防措置を講じる必要があります。

  8. インデックス名、既存のテーブルの処理モード、および同期オブジェクトを構成します。

    配置同步对象信息

    構成

    説明

    インデックス名

    • [テーブル名]

      [テーブル名] を選択した場合、宛先 Elasticsearch インスタンスに作成されるインデックスの名前はテーブル名と同じになります。この例では、インデックス名は customer です。

    • データベース名_テーブル名

      [DatabaseName_TableName] を選択した場合、宛先 Elasticsearch インスタンスに作成されるインデックスの名前は DatabaseName_TableName の形式になります。この例では、インデックス名は dtstestdata_customer です。

    既存のテーブルの処理モード

    • [事前チェックしてエラーを報告]: 宛先データベースに同じ名前のインデックスが含まれているかどうかを確認します。同じ名前のインデックスが存在しない場合、チェック項目は合格します。同じ名前のインデックスが存在する場合、事前チェック中にエラーが報告され、データ同期タスクは開始されません。

      説明

      宛先データベースで同じ名前のインデックスを削除または名前変更できない場合は、宛先インスタンスの同期オブジェクトに新しい名前を指定して、名前の競合を回避できます。

    • [無視して続行]: 宛先データベースで同じ名前のインデックスのチェックをスキップします。

      警告

      [無視して続行] を選択すると、データの不整合が発生し、ビジネスにリスクが生じる可能性があります。例:

      • マッピングが一貫しており、宛先データベースのレコードがソースデータベースのレコードと同じプライマリキー値を持つ場合、宛先データベースのレコードは初期データ同期中に保持されます。増分データ同期中、レコードは上書きされます。

      • マッピングに一貫性がない場合、初期データ同期が失敗したり、一部の列のデータしか同期できなかったり、同期が失敗したりする可能性があります。

    同期オブジェクトの選択

    [ソースオブジェクト] ボックスで、同期するオブジェクトをクリックし、向右小箭头 アイコンをクリックして [選択したオブジェクト] ボックスに移動します。

    同期オブジェクトとしてデータベースとテーブルを選択できます。

    マッピング名の変更

    オブジェクト名マッピング機能を使用して、宛先インスタンスに同期されるオブジェクトの名前を変更できます。詳細については、「オブジェクト名マッピング」をご参照ください。

    DMS オンライン DDL 中に一時テーブルをレプリケートする

    DMS を使用してソースデータベースでオンライン DDL 操作を実行する場合、オンライン DDL 操作によって生成された一時テーブルを同期するかどうかを指定できます。

    • [はい]: DTS は、オンライン DDL 操作によって生成された一時テーブルのデータを同期します。

      説明

      オンライン DDL 操作で大量のデータが生成されると、データ同期タスクが遅延する可能性があります。

    • [いいえ]: DTS は、オンライン DDL 操作によって生成された一時テーブルのデータを同期しません。ソースデータベースの元の DDL データのみが同期されます。

      説明

      [いいえ] を選択すると、宛先データベースのテーブルがロックされる可能性があります。

    ネットワーク不安定時のリトライ期間

    デフォルトでは、DTS がソースまたは宛先データベースへの接続に失敗した場合、DTS は次の 720 分 (12 時間) 以内に再試行します。必要に応じて再試行時間を指定できます。指定された時間内に DTS がソースおよび宛先データベースに再接続すると、DTS はデータ同期タスクを再開します。それ以外の場合、データ同期タスクは失敗します。

    説明

    DTS が接続を再試行すると、DTS インスタンスに対して課金されます。ビジネスニーズに基づいて再試行時間を指定することをお勧めします。ソースインスタンスと宛先インスタンスがリリースされた後、できるだけ早く DTS インスタンスをリリースすることもできます。

  9. [選択したオブジェクト] ボックスで、同期するテーブルにポインターを合わせ、[編集] をクリックします。宛先 Elasticsearch インスタンスのテーブルのインデックス名、タイプ名、およびその他の情報を設定します。

    设置索引名称等信息

    構成

    説明

    インデックス名

    詳細については、「用語」をご参照ください。

    警告
    • インデックス名とタイプ名には、特殊文字としてアンダースコア (_) のみを含めることができます。

    • 同じ構造を持つ複数のソーステーブルを単一の宛先オブジェクトに同期するには、この手順を繰り返して、これらのテーブルに同じインデックス名とタイプ名を設定する必要があります。そうしないと、タスクが失敗したり、データが失われたりする可能性があります。

    タイプ名

    フィルター条件

    SQL フィルター条件を設定して、同期するデータをフィルターできます。フィルター条件を満たすデータのみが宛先インスタンスに同期されます。詳細については、「SQL 条件を使用したデータのフィルター」をご参照ください。

    パーティション

    パーティションを設定するかどうかを選択します。[はい] を選択した場合は、[パーティションキー列][パーティション数] も設定する必要があります。

    _routing の設定

    _routing 設定は、ドキュメントを宛先 Elasticsearch インスタンスの特定のシャードに格納するようにルーティングできます。詳細については、「_routing」をご参照ください。

    • ルーティングにカスタム列を使用するには、[はい] を選択します。

    • ルーティングに _id を使用するには、[いいえ] を選択します。

    説明

    宛先 Elasticsearch インスタンスのバージョンが 7.x の場合は、[いいえ] を選択する必要があります。

    _id 値

    • [テーブルのプライマリキー列]

      複合プライマリキーは単一の列にマージされます。

    • ビジネスキー

      [ビジネスキー] を選択した場合は、対応する [ビジネスキー列] も設定する必要があります。

    パラメーターの追加

    必要な [フィールドパラメーター][フィールドパラメーター値] を選択します。フィールドパラメーターとその値の詳細については、Elasticsearch の公式ドキュメントをご参照ください。

    説明

    DTS は、選択可能なパラメーターのみをサポートします。

  10. ページの右下隅にある [事前チェック] をクリックします。

    説明
    • データ同期タスクを開始する前に、DTS は事前チェックを実行します。タスクが事前チェックに合格した後にのみ、データ同期タスクを開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある 提示 アイコンをクリックして詳細を表示できます。

      • 詳細に基づいて問題をトラブルシューティングした後、新しい事前チェックを開始します。

      • 問題をトラブルシューティングする必要がない場合は、[失敗した項目を無視] して [新しい事前チェックを開始] します。

  11. 次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます: [事前チェックに合格しました]。その後、データ同期タスクが開始されます。

  12. 初期同期が完了し、データ同期タスクが [同期中] 状態になるまで待ちます。

    [同期タスク] ページでデータ同期タスクのステータスを表示できます。View the status of a data synchronization task

同期されたインデックスとデータを表示する

データ同期タスクが [同期中] 状態になったら、Elasticsearch インスタンスに接続します。この例では、Elasticsearch-Head プラグインが使用されます。次に、作成されたインデックスと同期されたデータが要件を満たしていることを確認します。

説明

結果が要件を満たさない場合は、インデックスとそのデータを削除し、データ同期タスクを再構成できます。

查看Elasticsearch数据