このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください

AWS DMS を使用して MySQL 互換データベースからTiDB Cloudに移行する

PostgreSQL、Oracle、SQL Server などの異種データベースをTiDB Cloudに移行する場合は、AWS Database Migration Service (AWS DMS) を使用することをお勧めします。

AWS DMS は、リレーショナルデータベース、データウェアハウス、NoSQL データベース、その他の種類のデータストアの移行を容易にするクラウドサービスです。AWS DMS を使用して、データをTiDB Cloudに移行できます。

このドキュメントでは、Amazon RDS を例に、AWS DMS を使用してTiDB Cloudにデータを移行する方法を説明します。この手順は、セルフホスト型 MySQL データベースまたは Amazon AuroraからTiDB Cloudへのデータ移行にも適用されます。

この例では、データソースは Amazon RDS で、データの送信先はTiDB Cloud内のTiDB Cloud Dedicated クラスターです。上流データベースと下流データベースは同じリージョンにあります。

前提条件

移行を開始する前に、必ず次の内容をお読みください。

  • ソースデータベースが Amazon RDS または Amazon Auroraの場合、 binlog_formatパラメータをROWに設定する必要があります。データベースがデフォルトのパラメータグループを使用している場合、 binlog_formatパラメータはデフォルトでMIXED設定されており、変更できません。この場合、 新しいパラメータグループを作成する (例えばnewset )に設定し、 binlog_format ROWに設定する必要があります。次に、 デフォルトのパラメータグループを変更するnewsetに設定します。パラメータグループを変更すると、データベースが再起動されることに注意してください。
  • ソースデータベースが TiDB と互換性のある照合順序を使用していることを確認してください。TiDB の utf8mb4 文字セットのデフォルトの照合順序はutf8mb4_binです。ただし、MySQL 8.0 ではデフォルトの照合順序はutf8mb4_0900_ai_ciです。アップストリーム MySQL がデフォルトの照合順序を使用している場合、TiDB はutf8mb4_0900_ai_ciと互換性がないため、AWS DMS は TiDB にターゲットテーブルを作成できず、データを移行できません。この問題を解決するには、移行前にソースデータベースの照合順序をutf8mb4_binに変更する必要があります。TiDB でサポートされている文字セットと照合順序の完全なリストについては、 文字セットと照合順序参照してください。
  • TiDB には、デフォルトでINFORMATION_SCHEMAPERFORMANCE_SCHEMAmysqlsystestのシステムデータベースが含まれています。AWS DMS 移行タスクを作成する際は、移行オブジェクトを選択する際にデフォルトの%ではなく、これらのシステムデータベースを除外する必要があります。そうしないと、AWS DMS はこれらのシステムデータベースをソースデータベースからターゲット TiDB に移行しようとし、タスクが失敗します。この問題を回避するには、具体的なデータベース名とテーブル名を入力することをお勧めします。
  • AWS DMS のパブリックおよびプライベートネットワーク IP アドレスを、ソースデータベースとターゲットデータベースの両方の IP アクセスリストに追加してください。そうしないと、一部のシナリオでネットワーク接続に失敗する可能性があります。
  • VPC ピアリングまたはプライベートエンドポイント接続使用して AWS DMS と TiDB クラスターを接続します。
  • データ書き込みパフォーマンスを向上させるには、AWS DMS と TiDB クラスターに同じリージョンを使用することをお勧めします。
  • AWS DMS dms.t3.large (2 vCPU、8 GiBメモリ)以上のインスタンスクラスの使用をお勧めします。インスタンスクラスが小さい場合、メモリ不足(OOM)エラーが発生する可能性があります。
  • AWS DMS はターゲットデータベースにawsdms_controlデータベースを自動的に作成します。

制限

  • AWS DMS はDROP TABLEレプリケーションをサポートしていません。
  • AWS DMS は、テーブルとプライマリキーの作成を含む基本的なスキーマ移行をサポートしています。ただし、AWS DMS はTiDB Cloudにセカンダリインデックス、外部キー、ユーザーアカウントを自動的に作成しません。必要に応じて、セカンダリインデックス付きのテーブルを含むこれらのオブジェクトを TiDB に手動で作成する必要があります。詳細については、 AWS Database Migration Service の移行計画参照してください。

ステップ1. AWS DMSレプリケーションインスタンスを作成する

  1. AWS DMSコンソールのレプリケーションインスタンスページに移動し、対応するリージョンに切り替えます。AWS DMSはTiDB Cloudと同じリージョンを使用することをお勧めします。このドキュメントでは、上流データベースと下流データベース、そしてDMSインスタンスはすべてus-west-2リージョンにあります。

  2. レプリケーションインスタンスの作成をクリックします。

    Create replication instance

  3. インスタンス名、ARN、説明を入力します。

  4. インスタンス構成を入力します。

    • インスタンスクラス: 適切なインスタンスクラスを選択します。パフォーマンスを向上させるには、 dms.t3.large以上のインスタンスクラスを使用することをお勧めします。
    • エンジン バージョン: デフォルト構成を使用します。
    • マルチ AZ : ビジネス ニーズに応じて、シングル AZまたはマルチ AZを選択します。
  5. 「割り当て済みstorage(GiB)」フィールドでstorageを設定します。デフォルト設定を使用します。

  6. 接続とセキュリティを構成します。

    • ネットワーク タイプ - 新規: IPv4を選択します。
    • IPv4用仮想プライベートクラウド(VPC) :必要なVPCを選択してください。ネットワーク構成を簡素化するため、上流データベースと同じVPCを使用することをお勧めします。
    • レプリケーション サブネット グループ: レプリケーション インスタンスのサブネット グループを選択します。
    • パブリックアクセス可能: デフォルトの設定を使用します。
  7. 必要に応じて、 「詳細設定」「メンテナンス」「タグ」を設定します。 「レプリケーションインスタンスの作成」をクリックして、インスタンスの作成を完了します。

ステップ2. ソースデータベースエンドポイントを作成する

  1. AWS DMSコンソールで、先ほど作成したレプリケーションインスタンスをクリックします。次のスクリーンショットに示すように、パブリックネットワークとプライベートネットワークのIPアドレスをコピーします。

    Copy the public and private network IP addresses

  2. Amazon RDS のセキュリティグループルールを設定します。この例では、AWS DMS インスタンスのパブリック IP アドレスとプライベート IP アドレスをセキュリティグループに追加します。

    Configure the security group rules

  3. [エンドポイントの作成]をクリックして、ソース データベース エンドポイントを作成します。

    Click Create endpoint

  4. この例では、 「RDS DB インスタンスを選択」をクリックし、ソース RDS インスタンスを選択します。ソースデータベースがセルフホスト型 MySQL の場合は、この手順をスキップし、次の手順で情報を入力できます。

    Select RDS DB instance

  5. 次の情報を設定します。

    • エンドポイント識別子: 後続のタスク構成で識別できるように、ソース エンドポイントのラベルを作成します。
    • 説明的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN のフレンドリ名を作成します。
    • ソースエンジン: MySQLを選択します。
    • エンドポイント データベースへのアクセス:アクセス情報を手動で提供するを選択します。
    • サーバー名: データプロバイダーのデータサーバー名を入力します。データベースコンソールからコピーできます。アップストリームがAmazon RDSまたはAmazon Auroraの場合は、名前は自動的に入力されます。ドメイン名のないセルフホスト型MySQLの場合は、IPアドレスを入力できます。
    • ソース データベースのポートユーザー名、およびパスワードを入力します。
    • セキュリティ Socket Layer (SSL) モード: 必要に応じて SSL モードを有効にすることができます。

    Fill in the endpoint configurations

  6. エンドポイント設定KMSキータグはデフォルト値を使用してください。 「エンドポイント接続のテスト(オプション)」セクションでは、ネットワーク設定を簡素化するため、ソースデータベースと同じVPCを選択することをお勧めします。対応するレプリケーションインスタンスを選択し、 「テスト実行」をクリックします。ステータスは成功である必要があります。

  7. [エンドポイントの作成]をクリックします。

    Click Create endpoint

ステップ3. ターゲットデータベースエンドポイントを作成する

  1. AWS DMSコンソールで、先ほど作成したレプリケーションインスタンスをクリックします。次のスクリーンショットに示すように、パブリックネットワークとプライベートネットワークのIPアドレスをコピーします。

    Copy the public and private network IP addresses

  2. TiDB Cloudコンソールで、 クラスターページに移動し、ターゲット クラスターの名前をクリックして、右上隅の[接続]をクリックし、 TiDB Cloudデータベースの接続情報を取得します。

  3. ダイアログの「ステップ1:トラフィックフィルターの作成」「編集」をクリックし、AWS DMSコンソールからコピーしたパブリックネットワークとプライベートネットワークのIPアドレスを入力して、 「フィルターの更新」をクリックします。AWS DMSレプリケーションインスタンスのパブリックIPアドレスとプライベートIPアドレスをTiDBクラスターのトラフィックフィルターに同時に追加することをお勧めします。そうしないと、一部のシナリオでAWS DMSがTiDBクラスターに接続できない可能性があります。

  4. 「CA証明書のダウンロード」をクリックしてCA証明書をダウンロードします。ダイアログの「ステップ3:SQLクライアントに接続」 -P -u -hをメモしておいてください。後で使用するためです。

  5. ダイアログの[VPC ピアリング]タブをクリックし、 [ステップ 1: VPCのセットアップ] の[追加]をクリックして、TiDB クラスターと AWS DMS の VPC ピアリング接続を作成します。

  6. 該当する情報を設定しますVPC ピアリング接続の設定を参照してください。

  7. TiDB クラスターのターゲット エンドポイントを構成します。

    • エンドポイント タイプ:ターゲット エンドポイントを選択します。
    • エンドポイント識別子: エンドポイントの名前を入力します。
    • 説明的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN のフレンドリ名を作成します。
    • ターゲットエンジン: MySQLを選択します。

    Configure the target endpoint

  8. AWS DMSコンソールで、 [エンドポイントの作成]をクリックしてターゲット データベース エンドポイントを作成し、次の情報を構成します。

    • サーバー名: 記録した-h情報である TiDB クラスターのホスト名を入力します。
    • ポート: TiDBクラスタのポート番号(記録した-P情報)を入力します。TiDBクラスタのデフォルトポートは4000です。
    • ユーザー名: TiDB クラスターのユーザー名を入力します。これは、記録した-u情報です。
    • パスワード: TiDB クラスターのパスワードを入力します。
    • セキュリティ Socket Layer (SSL) モード: Verify-caを選択します。
    • 「新しい CA 証明書の追加」をクリックして、前の手順でTiDB Cloudコンソールからダウンロードした CA ファイルをインポートします。

    Fill in the target endpoint information

  9. CA ファイルをインポートします。

    Upload CA

  10. エンドポイント設定KMSキータグはデフォルト値のままにしておきます。 「エンドポイント接続のテスト(オプション)」セクションで、ソースデータベースと同じVPCを選択します。対応するレプリケーションインスタンスを選択し、 「テスト実行」をクリックします。ステータスは「成功」である必要があります。

  11. [エンドポイントの作成]をクリックします。

    Click Create endpoint

ステップ4. データベース移行タスクを作成する

  1. AWS DMS コンソールでデータ移行タスクページ目に移動します。リージョンを切り替え、ウィンドウの右上隅にある「タスクの作成」をクリックします。

    Create task

  2. 次の情報を設定します。

    • タスク識別子: タスクの名前を入力します。覚えやすい名前を使用することをお勧めします。
    • 説明的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN のフレンドリ名を作成します。
    • レプリケーションインスタンス: 先ほど作成した AWS DMS インスタンスを選択します。
    • ソース データベース エンドポイント: 作成したソース データベース エンドポイントを選択します。
    • ターゲット データベース エンドポイント: 作成したターゲット データベース エンドポイントを選択します。
    • 移行タイプ:必要に応じて移行タイプを選択します。この例では、 「既存のデータを移行し、進行中の変更を複製する」を選択します。

    Task configurations

  3. 次の情報を設定します。

    • 編集モード:ウィザードを選択します。
    • ソース トランザクションのカスタム CDC 停止モード: デフォルト設定を使用します。
    • ターゲットテーブルの準備モード:必要に応じて「何もしない」またはその他のオプションを選択します。この例では「何もしない」を選択します。
    • 完全なロードが完了したらタスクを停止します。デフォルト設定を使用します。
    • レプリケーションに LOB 列を含める:制限付き LOB モードを選択します。
    • 最大 LOB サイズ (KB) : デフォルト値32 を使用します。
    • 検証をオンにする: 必要に応じて選択します。
    • タスクログ:今後のトラブルシューティングのために「CloudWatch Logs を有効にする」を選択します。関連設定はデフォルト設定のままにしてください。

    Task settings

  4. テーブル マッピングセクションで、移行するデータベースを指定します。

    スキーマ名は、Amazon RDS インスタンス内のデータベース名です。ソース名のデフォルト値は「%」で、これは Amazon RDS 内のすべてのデータベースが TiDB に移行することを意味します。これにより、Amazon RDS 内のmysqlsysなどのシステムデータベースが TiDB クラスターに移行され、タスクが失敗します。そのため、特定のデータベース名を入力するか、すべてのシステムデータベースを除外することをお勧めします。例えば、次のスクリーンショットの設定では、 franktest名前のデータベースとそのデータベース内のすべてのテーブルのみが移行されます。

    Table mappings

  5. 右下隅の「タスクの作成」をクリックします。

  6. データ移行タスクページ目に戻り、お住まいの地域に切り替えてください。タスクのステータスと進捗状況を確認できます。

    Tasks status

移行中に問題や障害が発生した場合は、 クラウドウォッチのログ情報を確認して問題のトラブルシューティングを行うことができます。

Troubleshooting

参照

このページは役に立ちましたか?