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

Data Transmission Service:PolarDB for MySQLクラスターからElasticsearchクラスターへのデータの移行

最終更新日:Oct 31, 2024

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

前提条件

  • ターゲットElasticsearchクラスターが作成されます。 詳細については、「クイックスタート」をご参照ください。

  • ターゲットElasticsearchクラスターの使用可能なストレージ容量が、ソースPolarDB for MySQLクラスターのデータの合計サイズよりも大きいこと。

制限事項

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

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

カテゴリ

説明

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

  • ソースデータベースが属するサーバーには、十分なアウトバウンド帯域幅が必要です。 そうしないと、データ移行速度が低下します。

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

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

  • 増分データを移行する必要がある場合は、バイナリロギング機能を有効にし、loose_polar_log_binパラメーターをonに設定する必要があります。 それ以外の場合、事前チェック中にエラーメッセージが返され、データ移行タスクを開始できません。 バイナリログ機能を有効にし、loose_polar_log_binパラメーターを設定する方法の詳細については、「バイナリログの有効化」および「パラメーターの変更」をご参照ください。

    説明
    • PolarDB for MySQLクラスターのバイナリログ機能を有効にすると、バイナリログによって占有されているストレージ容量に対して課金されます。

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

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

  • ソースPolarDB for MySQLクラスターの読み取り専用ノードは移行できません。

その他の制限

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

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

  • データ移行中にオブジェクトに対してDDL操作を実行するためにpt-online-schema-changeなどのツールを使用しないことを推奨します。 そうしないと、データ移行が失敗する可能性があります。

  • DTSはROUND(COLUMN,PRECISION) 関数を使用して、FLOATまたはDOUBLEデータ型の列から値を取得します。 精度を指定しない場合、DTSはFLOATデータ型の精度を38桁に設定し、DOUBLEデータ型の精度を308桁に設定します。 業務要件を満足する精度が設定されていることを確認する必要があります。

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

  • PolarDB for MySQLクラスターとElasticsearchクラスターのデータ型は1対1で対応していません。 初期スキーマ移行中に、DTSはソースデータベースのデータ型をターゲットデータベースのデータ型に変換します。 詳細については、「スキーマ同期のためのデータ型マッピング」をご参照ください。

使用上の注意

DTSは、CREATE DATABASE IF NOT EXISTS 'test' ステートメントをソースデータベースで実行し、バイナリログファイルの位置を前に移動します。

課金

移行タイプ

インスタンス設定料金

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

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

無料です。

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

増分データ移行

有料。 詳細については、「Billing overview」をご参照ください。

移行タイプ

  • スキーマ移行

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

  • 完全なデータ移行

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

  • 増分データ移行

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

増分データ移行中に移行できるSQL操作

操作タイプ

SQL文

DML

挿入、更新、および削除

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

データベース

必要な権限

関連ドキュメント

PolarDB for MySQLクラスター

移行するオブジェクトの読み取り権限

データベースアカウントの作成と管理

手順

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

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

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

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

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

    説明

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

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

    セクション

    パラメーター

    説明

    非該当

    タスク名

    タスクの名前。 タスク名は自動生成されます。 タスクを識別するために、有益な名前を指定することを推奨します。 一意のタスク名を指定する必要はありません。

    ソースデータベース

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

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

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

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

    データベースタイプ

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

    アクセス方法

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

    インスタンスリージョン

    ソースPolarDB for MySQLクラスターが存在するリージョン。

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

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

    PolarDBクラスターID

    ソースPolarDB for MySQLクラスターのID。

    データベースアカウント

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

    データベースパスワード

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

    宛先データベース

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

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

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

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

    データベースタイプ

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

    アクセス方法

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

    インスタンスリージョン

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

    インスタンスID

    ターゲットElasticsearchクラスターのID。

    データベースアカウント

    Elasticsearchクラスターのデータベースアカウント。 デフォルト値: elastic

    データベースパスワード

    データベースアカウントのパスワードは、Elasticsearchクラスターの作成時に指定されたものです。

  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クラスターで作成されたインデックスは、PolarDB for MySQLクラスターのテーブルと同じ名前を使用します。

    • データベースName_Table名

      DatabseName_TableNameを選択した場合、Elasticsearchクラスターで作成されたインデックスの名前は、Database name_Table nameの形式で指定されます。

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

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

    ソースオブジェクト

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

    説明

    移行するオブジェクトとして、テーブルまたはデータベースを選択できます。 移行するオブジェクトとしてテーブルを選択した場合、DTSはビュー、トリガー、ストアドプロシージャなどの他のオブジェクトを移行先データベースに移行しません。

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

    • 移行先インスタンスに移行するオブジェクトの名前を変更するには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。 詳細については、「単一オブジェクトの名前のマッピング」をご参照ください。

    • 一度に複数のオブジェクトの名前を変更するには、[選択済みオブジェクト] セクションの右上隅にある [一括編集] をクリックします。 詳細については、「一度に複数のオブジェクト名をマップする」をご参照ください。

    説明
    • インデックス名、タイプ名、列名などのWHERE条件を指定してデータをフィルタリングするには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。 表示されるダイアログボックスで、条件を指定します。 詳細については、「フィルター条件の指定」をご参照ください。

    • 特定のデータベースまたはテーブルで実行されたSQL操作を選択するには、[選択済みオブジェクト] セクションでオブジェクトを右クリックします。 表示されるダイアログボックスで、移行するSQL操作を選択します。 移行できるSQL操作の詳細については、このトピックの「増分データ移行中に移行できるSQL操作」をご参照ください。

  6. [次へ: 詳細設定] をクリックします。

    パラメーター

    説明

    Set Alerts

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

    ソースオブジェクト

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

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

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

    シャード設定

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

    文字列インデックス

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

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

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

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

    タイムゾーン

    DATETIMEやTIMESTAMPなどの日付と時刻のデータ型のタイムゾーン。 ターゲットElasticsearchクラスターへのデータ移行中に、タイムゾーンを選択できます。

    説明

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

    ETLの設定

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

    順方向および逆方向タスクのハートビートテーブル sql を削除

    DTSインスタンスの実行中に、ハートビートテーブルのSQL操作をソースデータベースに書き込むかどうかを指定します。 有効な値:

    • Yes: ハートビートテーブルにSQL操作を書き込みません。 この場合、DTSインスタンスのレイテンシが表示され得る。

    • No: ハートビートテーブルにSQL操作を書き込みます。 この場合、ソースデータベースの物理バックアップやクローニングなどの機能が影響を受ける可能性があります。

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

    パラメーター

    説明

    _routingを設定します。

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

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

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

    説明

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

    _idの値

    • 主キー列

      複数の列が1つの複合主キーにマージされます。

    • ビジネスキー

      ビジネスキーを選択する場合は、ビジネスキー列も指定する必要があります。

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

    ポインタを 次:タスク設定の保存と事前チェック に移動し、[OpenAPIパラメーターのプレビュー] をクリックして、関連するAPI操作を呼び出してDTSタスクを設定するときに指定するパラメーターを表示できます。

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

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

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

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

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

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

  10. 読んで同意するデータ伝送サービス (従量課金) サービス規約チェックボックスを選択します。

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

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

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

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