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

Data Transmission Service:ApsaraDB RDS for MySQLインスタンスからElasticsearchクラスターへのデータの移行

最終更新日:Oct 31, 2024

このトピックでは、data Transmission Service (DTS) を使用して、ApsaraDB RDS for MySQLインスタンスからElasticsearchクラスターにデータを移行する方法について説明します。

前提条件

  • 移行先のElasticsearchクラスターが作成されました。 詳細については、「Elasticsearchクラスターの作成」をご参照ください。

  • ターゲットElasticsearchクラスターの使用可能なストレージ容量が、ソースApsaraDB RDS for MySQLインスタンスのデータの合計サイズよりも大きいこと。 これにより、完全なデータ移行が成功します。

制限

説明
  • スキーマの移行中に、DTSは外部キーをソースデータベースからターゲットデータベースに移行します。

  • 完全データ移行および増分データ移行中、DTSはセッションレベルで外部キーに対する制約チェックおよびカスケード操作を一時的に無効にします。 データ移行中にソースデータベースに対してカスケード更新および削除操作を実行すると、データの不整合が発生する可能性があります。

カテゴリ

説明

ソースデータベースの制限

  • 移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先クラスターに重複データレコードが含まれる可能性があります。

  • 移行するオブジェクトとしてテーブルを選択し、テーブルまたは列の名前の変更など、移行先クラスターのテーブルを変更する必要がある場合は、1つのデータ移行タスクで最大5,000のテーブルを移行できます。 タスクを実行して5,000を超えるテーブルを移行すると、リクエストエラーが発生します。 この場合、複数のタスクを構成してテーブルをバッチで移行するか、タスクを構成してデータベース全体を移行することをお勧めします。

  • ApsaraDB RDS for MySQLインスタンスでバイナリログ機能を有効にする必要があります。 binlog_formatパラメーターはrowに設定し、binlog_row_imageパラメーターはfullに設定する必要があります。 詳細については、「ApsaraDB RDS For MySQLインスタンスのパラメーターの表示」をご参照ください。 それ以外の場合、事前チェック中にエラーメッセージが返され、データ移行タスクを開始できません。

  • 増分データ移行のみを実行する場合、ソースインスタンスのバイナリログを24時間以上保存する必要があります。 スキーマ移行と増分データ移行を実行する場合、ソースインスタンスのバイナリログを少なくとも7日間保存する必要があります。 そうしないと、DTSはバイナリログの取得に失敗し、タスクが失敗する可能性があります。 例外的な状況では、データの不整合または損失が発生します。 スキーマの移行が完了したら、保持期間を24時間以上に設定できます。 上記の要件に基づいて、バイナリログの保持期間を設定してください。 それ以外の場合、DTSのサービスレベル契約 (SLA) はサービスの信頼性またはパフォーマンスを保証しません。 ApsaraDB RDS For MySQLインスタンスのバイナリログファイルの詳細については、「バイナリログファイルの管理」をご参照ください。

  • 操作の制限: スキーマの移行中は、DDL操作を実行してデータベースまたはテーブルのスキーマを変更しないでください。 それ以外の場合、データ移行タスクは失敗します。

その他の制限

  • ソースインスタンスのテーブルに列を追加する場合は、Elasticsearchクラスターのテーブルに対応するインデックスのマッピングを変更します。 次に、ソーステーブルでDDL操作を実行し、データ移行タスクを一時停止してから、タスクを再度開始します。

  • データを移行する前に、移行元インスタンスと移行先クラスターのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 完全データ移行中、DTSはソースインスタンスとターゲットクラスターの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。

  • 完全データ移行中、同時INSERT操作により、移行先クラスターのテーブルが断片化されます。 完全なデータ移行が完了すると、移行先クラスターの使用済みテーブルスペースのサイズが移行元インスタンスのサイズよりも大きくなります。

  • DTSは、過去7日以内に失敗したデータ移行タスクを再開しようとします。 ワークロードを宛先クラスターに切り替える前に、失敗したタスクを停止またはリリースします。 また、REVOKEステートメントを実行して、移行先クラスターへのアクセスにDTSが使用するアカウントの書き込み権限を取り消すこともできます。 それ以外の場合、失敗したタスクが再開された後、ソースインスタンスのデータがターゲットクラスターのデータを上書きします。

  • 移行するテーブルに空の文字列が含まれている場合、テーブル内の空の文字列を含むデータは、LONGタイプのデータとしてElasticsearchクラスターに書き込まれます。 この場合、データ移行タスクは失敗します。

  • 移行するテーブルに、逆に格納された緯度と経度の値が含まれている場合、テーブル内のデータがElasticsearchクラスターに書き込まれるとエラーが発生します。

課金

移行タイプ

インスタンス設定料金

インターネットトラフィック料金

スキーマ移行とフルデータ移行

無料です。

インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。

増分データ移行

有料。 詳細については、「課金の概要」をご参照ください。

移行タイプ

  • スキーマ移行

    DTSは、選択したオブジェクトのスキーマをソースデータベースからターゲットデータベースに移行します。

  • 完全なデータ移行

    DTSは、必要なオブジェクトの履歴データをソースデータベースからターゲットデータベースに移行します。

  • 増分データ移行

    完全データ移行が完了すると、DTSは増分データをソースデータベースからターゲットデータベースに移行します。 増分データ移行により、データ移行中に自己管理型アプリケーションのサービスを中断することなく、データをスムーズに移行できます。

増分移行可能なSQL操作

操作タイプ

SQL文

DML

挿入、更新、および削除

データ型マッピング

MySQLデータベースとElasticsearchクラスターのデータ型には1対1の対応がありません。 初期スキーマ移行中に、DTSはソースデータベースのデータ型を移行先クラスターのデータ型に変換します。 詳細については、「異種データベース間のデータ型マッピング」をご参照ください。

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

Elasticsearch

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

index

削除

type

table

ドキュメント

row

フィールド

column

mapping

schema

データベースアカウントに必要な権限

データベース

スキーマ移行

完全なデータ移行

増分データ移行

関連ドキュメント

ApsaraDB RDS for MySQLインスタンス

SELECT権限

SELECT権限

REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW、およびSELECT権限

アカウントの作成

Elasticsearchクラスター

移行するオブジェクトに対する読み取りおよび書き込み権限。 Elasticsearchクラスターのデフォルトのデータベースアカウントはelasticです。

手順

  1. [データ移行タスク] ページに移動します。

    1. データ管理 (DMS) コンソールにログインします。

    2. 上部のナビゲーションバーで、ポインタをDTS上に移動します。

    3. DTS (DTS) > データ移行 を選択します。

    説明
  2. データ移行タスクの右側にあるドロップダウンリストから、データ移行インスタンスが存在するリージョンを選択します。

    説明

    新しいDTSコンソールを使用する場合は、左上隅にデータ移行インスタンスが存在するリージョンを選択する必要があります。

  3. [タスクの作成] をクリックします。 [データ同期タスクの作成] ページで、ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。

    セクション

    パラメーター

    説明

    非該当

    タスク名

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

    ソースデータベース

    既存のDMSデータベースインスタンスの選択

    使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    移行元ディスクのタイプを設定します。 [MySQL] を選択します。

    アクセス方法

    ソースデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。

    インスタンスリージョン

    ソースApsaraDB RDS for MySQLインスタンスが存在するリージョンです。

    Alibaba Cloudアカウント全体でのデータの複製

    Alibaba Cloudアカウント間でデータを移行するかどうかを指定します。 この例では、[いいえ] が選択されています。

    RDSインスタンスID

    ソースApsaraDB RDS for MySQLインスタンスのID。

    データベースアカウント

    ソースApsaraDB RDS for MySQLインスタンスのデータベースアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。

    データベースパスワード

    データベースインスタンスへのアクセスに使用されるパスワード。

    暗号化

    データベースへの接続を暗号化するかどうかを指定します。 ビジネス要件に基づいて、[非暗号化] または [SSL暗号化] を選択できます。 このパラメーターをSSL暗号化に設定する場合、DTSタスクを設定する前に、ApsaraDB RDS for MySQLインスタンスのSSL暗号化を有効にする必要があります。 詳細については、「クラウド証明書を使用したSSL暗号化の有効化」をご参照ください。

    宛先データベース

    既存のDMSデータベースインスタンスの選択

    使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    ターゲットデータベースのタイプ。 [Elasticsearch] を選択します。

    アクセス方法

    ターゲットデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。

    インスタンスリージョン

    ターゲットElasticsearchクラスターが存在するリージョン。

    インスタンスID

    移行先のElasticsearchクラスターのID。

    データベースアカウント

    Elasticsearchクラスターへの接続に使用されるアカウント。 このアカウントは、Elasticsearchクラスターの作成時に指定したUsernameパラメーターです。 Elasticsearchクラスターのデフォルトのデータベースアカウントはelasticです。

    データベースパスワード

    データベースインスタンスへのアクセスに使用されるパスワード。

  4. ページの下部で、[接続のテストと続行] をクリックします。

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

    警告

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

  5. 同期するオブジェクトと詳細設定を設定します。

    パラメーター

    説明

    移行タイプ

    • フルデータ移行のみを実行するには、[スキーマ移行][フルデータ移行] を選択します。

    • データ移行中のサービスの継続性を確保するには、[スキーマ移行][フルデータ移行] 、および [増分データ移行] を選択します。

    説明

    増分データ移行を選択しない場合、データ移行中にソースデータベースにデータを書き込まないことを推奨します。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。

    競合テーブルの処理モード

    • エラーの事前チェックと報告: ターゲットデータベースに、ソースデータベースのテーブルと同じ名前を使用するテーブルが含まれているかどうかを確認します。 ソースデータベースとターゲットデータベースに同じテーブル名のテーブルが含まれていない場合は、事前チェックに合格します。 それ以外の場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。

      説明

      ソースデータベースとターゲットデータベースに同じ名前のテーブルが含まれていて、ターゲットデータベース内のテーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して、ターゲットデータベースに移行されるテーブルの名前を変更できます。 詳細については、「マップオブジェクト名」をご参照ください。

    • エラーを無視して続行: ソースデータベースとターゲットデータベースの同じテーブル名の事前チェックをスキップします。

      警告

      エラーを無視して続行 を選択すると、データの不整合が発生し、ビジネスが次の潜在的なリスクにさらされる可能性があります。

      • ソースデータベースとターゲットデータベースが同じスキーマを持ち、データレコードがターゲットデータベースの既存のデータレコードと同じプライマリキーを持つ場合、次のシナリオが発生する可能性があります。

        • 完全データ移行中、DTSはデータレコードを移行先データベースに移行しません。 ターゲットデータベースの既存のデータレコードが保持されます。

        • 増分データ移行中に、DTSはデータレコードを移行先データベースに移行します。 ターゲットデータベースの既存のデータレコードが上書きされます。

      • ソースデータベースとターゲットデータベースのスキーマが異なる場合、特定の列のみが移行されるか、データ移行タスクが失敗します。 作業は慎重に行ってください。

    インデックス名

    • [テーブル名] を選択した場合、ターゲットElasticsearchクラスターで作成されたインデックスは、ApsaraDB RDS for MySQLインスタンスのテーブルと同じ名前を使用します。

    • [Database Name_Table名] を選択した場合、ターゲットElasticsearchクラスターで作成されたインデックスは、Database name_Table名の形式で連結されます。

    説明

    インデックス名マッピングルールは、すべてのテーブルに対して有効です。

    宛先インスタンスでのオブジェクト名の大文字化

    ターゲットインスタンスのデータベース名、テーブル名、および列名の大文字化。 デフォルトでは、DTSデフォルトポリシーが選択されています。 他のオプションを選択して、オブジェクト名の大文字化がソースまたはターゲットデータベースの大文字化と一致していることを確認できます。 詳細については、「ターゲットインスタンスのオブジェクト名の大文字化の指定」をご参照ください。

    ソースオブジェクト

    [ソースオブジェクト] セクションから1つ以上のオブジェクトを選択し、Rightwards arrowアイコンをクリックして [選択済みオブジェクト] セクションにオブジェクトを追加します。

    [選択済みオブジェクト]

    移行されたフィールドの名前を変更するには、[選択されたオブジェクト] セクションでテーブルの名前を右クリックします。 表示されるダイアログボックスで、ターゲットElasticsearchクラスターのテーブルのインデックス名とタイプ名を指定し、[OK] をクリックします。 詳細については、「単一オブジェクトの名前のマッピング」をご参照ください。

    説明

    データをフィルタリングするSQL条件を指定します。 指定された条件を満たすデータレコードのみが移行先クラスターに移行されます。 詳細については、「フィルター条件の設定」をご参照ください。

  6. 次へ:詳細設定をくりっくして詳細設定を設定します。

    パラメーター

    説明

    Set Alerts

    データ移行タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、移行の待ち時間が指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:

    失敗した接続のリトライ時間範囲の指定

    失敗した接続のリトライ時間範囲。 データ移行タスクが失敗した場合、DTSはすぐに再試行時間内に接続を確立します。 有効な値: 10 ~ 1440 単位は分です。 デフォルト値: 120 パラメーターを30より大きい値に設定することを推奨します。 DTSが指定された再試行時間範囲内にソースインスタンスと宛先クラスターに再接続すると、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。

    説明
    • 同じソースインスタンスまたはターゲットクラスターを持つ複数のデータ移行タスクに対して異なる再試行時間範囲を設定した場合、後で設定された値が優先されます。

    • DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットクラスターがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。

    シャード設定

    ターゲットElasticsearchクラスターのインデックスのシャード構成に基づくプライマリシャードとレプリカシャードの数。

    文字列インデックス

    ターゲットElasticsearchクラスターのインデックスに文字列をコンパイルするために使用されるメソッド。

    • analyzed: インデックス作成前に文字列が分析されます。 特定のアナライザーを選択する必要があります。 アナライザーの種類の詳細については、「組み込みアナライザーリファレンス」をご参照ください。

    • not analyze: 文字列は元の値でインデックスされます。

    • no: 文字列はインデックス付けされません。

    タイムゾーン

    DATETIMEやTIMESTAMPなどの日時データ型のタイムゾーン。移行先のElasticsearchクラスターへのデータ移行時に選択できます。

    説明

    移行先クラスターの日付と時刻のデータ型にタイムゾーンが必要ない場合は、日付と時刻のデータ型にドキュメントタイプを指定する必要があります。

    DOCID

    パラメーターのデフォルト値は、Elasticsearchクラスターのテーブルのプライマリキーです。 テーブルにプライマリキーがない場合、パラメーターの値は、Elasticsearchによって自動的に生成されるID列になります。

    ETLの設定

    抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETLとは何ですか? 」をご参照ください。有効な値:

  7. ページの下部で、[次へ]: [データベースフィールドとテーブルフィールドの設定] をクリックします。 表示されるページで、移行先Elasticsearchクラスターに移行するテーブルの_ルーティングポリシーと_id値を設定します。

    カテゴリ

    説明

    _routingを設定します。

    ターゲットElasticsearchクラスターの特定のシャードにドキュメントを保存するかどうかを指定します。 詳細については、「 _routing」をご参照ください。

    • [はい] を選択した場合、ルーティングのカスタム列を指定できます。

    • [いいえ] を選択した場合、_id値がルーティングに使用されます。

    説明

    ターゲットElasticsearchクラスターのバージョンが7. xの場合、[いいえ] を選択する必要があります。

    _routing列

    ルーティングに使用される列。

    説明

    このパラメーターは、Set _routingパラメーターがYesに設定されている場合にのみ必要です。

    _idの値

    ドキュメントのIDを格納するために使用される列。

  8. ページの下部で、[次へ: タスク設定の保存と事前チェック] をクリックします。

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

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。

    • 事前チェック中にアイテムに対してアラートがトリガーされた場合:

      • アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。

      • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  9. 成功率100% になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。

  10. [インスタンスの購入] ページで、データ移行インスタンスのインスタンスクラスパラメーターを設定します。 下表にパラメーターを示します。

    セクション

    パラメーター

    説明

    新しいインスタンスクラス

    リソースグループ

    データ移行インスタンスが属するリソースグループ。 デフォルト値: Default resource group 詳細については、「リソース管理とは 」をご参照ください。

    インスタンスクラス

    DTSは、移行速度が異なるインスタンスクラスを提供します。 ビジネスシナリオに基づいてインスタンスクラスを選択できます。 詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。

  11. データ伝送サービス (従量課金) サービス規約を読んで選択します。

  12. [購入して開始] をクリックします。 表示されるメッセージで、 [OK] をクリックします。

    [データ移行] ページでタスクの進行状況を確認できます。