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

前提条件

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

  • ソースデータベースが 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 がデフォルトの照合順序を使用する場合、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. [割り当てられたstorage(GiB)]フィールドでstorageを構成します。デフォルトの構成を使用します。

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

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

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

  1. AWS DMS コンソールで、作成したばかりのレプリケーション インスタンスをクリックします。次のスクリーンショットに示すように、パブリック ネットワーク IP アドレスとプライベート ネットワーク 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 アドレスとプライベート ネットワーク 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. [TiDB クラスター CA のダウンロード]をクリックして CA 証明書をダウンロードします。ダイアログの「ステップ 3: SQL クライアントに接続する」で、後で使用できるように接続文字列の-u-h 、および-Pの情報をメモします。

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

  6. 対応する情報を設定します。 VPC ピア接続のセットアップを参照してください。

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

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

    Configure the target endpoint

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

    • サーバー名: TiDB クラスターのホスト名を入力します。これは、記録した-h情報です。
    • Port : 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 ログをオンにするを選択します。関連する構成にはデフォルト設定を使用します。

    Task settings

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

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

    Table mappings

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

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

    Tasks status

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

Troubleshooting

こちらも参照

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

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.