これはアーカイブされた TiDB のドキュメントであり、更新は行われていません。最新の LTS バージョンのドキュメントを表示する

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の Dedicated Tier クラスターです。アップストリーム データベースとダウンストリーム データベースの両方が同じリージョンにあります。

前提条件

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

  • ソース データベースが Amazon RDS または Amazon Auroraの場合、 binlog_formatパラメータをROWに設定する必要があります。データベースがデフォルトのパラメーター グループを使用する場合、 binlog_formatパラメーターはデフォルトでMIXEDであり、変更できません。この場合、たとえばnewsetのように新しいパラメータ グループを作成するにし、そのbinlog_formatROWに設定する必要があります。そして、 デフォルトのパラメータ グループを変更するからnewset 。パラメータ グループを変更すると、データベースが再起動されることに注意してください。
  • ソース データベースが TiDB と互換性のある照合順序を使用していることを確認してください。 TiDB の utf8mb4 文字セットのデフォルトの照合順序はutf8mb4_binです。しかし、MySQL 8.0 では、デフォルトの照合順序はutf8mb4_0900_ai_ciです。アップストリームの MySQL がデフォルトの照合順序 ion を使用している場合、TiDB はutf8mb4_0900_ai_ciと互換性がないため、AWS DMS は TiDB にターゲット テーブルを作成できず、データを移行できません。この問題を解決するには、移行前にソース データベースの照合順序をutf8mb4_binに変更する必要があります。 TiDB がサポートする文字セットと照合順序の完全なリストについては、 文字セットと照合順序を参照してください。
  • TiDB には、デフォルトで次のシステム データベースが含まれています: INFORMATION_SCHEMAPERFORMANCE_SCHEMAmysqlsys 、およびtest 。 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

ステップ 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. [**割り当てられたストレージ (GiB)]**フィールドでストレージを構成します。デフォルト構成を使用します。

  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 アドレスを入力できます。
    • ソース データベースのPortUsername 、およびPasswordを入力します。
    • セキュリティ 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データベース接続情報を取得します。

    Get the TiDB Cloud database connection information

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

    Update the TiDB Cloud traffic filter

  4. [ **TiDB クラスター CA のダウンロード]**をクリックして、CA 証明書をダウンロードします。以降の TiDB との接続のために、次のスクリーンショットで強調表示されている-u-h 、および-Pの情報を記録します。

    Download TiDB cluster CA

  5. TiDB クラスターと AWS DMS の VPC ピアリング接続を作成します。

    Create VPC Peering

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

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

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

    Configure the target endpoint

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

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

    Fill in the target endpoint information

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

    Upload CA

  10. Endpoint settingsKMS key 、およびTagsにはデフォルト値を使用します。 [ Test endpoint connection (optional)]セクションで、ソース データベースと同じ VPC を選択します。対応するレプリケーション インスタンスを選択し、[テストの実行] をクリックします。ステータスは成功である必要があります。

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

    Click Create endpoint

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

  1. AWS DMS コンソールで、 データ移行タスクページに移動します。お住まいの地域に切り替えます。次に、ウィンドウの右上隅にある [タスクの作成] をクリックします。

    Create task

  2. 次の情報を構成します。

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

    Task configurations

  3. 次の情報を構成します。

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

    Task settings

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

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

    Table mappings

  5. 右下隅にある [**タスクの作成] を**クリックします。

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

    Tasks status

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

Troubleshooting

こちらもご覧ください