📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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_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アドレスを、ソースデータベースとターゲットデータベースの両方の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をクリックします。

    Create replication instance

  3. インスタンス名、ARN、および説明を入力してください。

  4. インスタンス構成を入力してください。

    • Instance class:適切なインスタンスクラスを選択してください。パフォーマンスを向上させるには、 dms.t3.largeまたはそれより高いインスタンスクラスを使用することをお勧めします。
    • Engine version:デフォルト設定を使用します。
    • マルチAZ :ビジネスニーズに応じて、シングルAZまたはマルチAZを選択してください。
  5. ストレージはAllocated storage (GiB)フィールドで設定します。デフォルト設定を使用してください。

  6. 接続性とセキュリティを設定します。

    • Network type - new: IPv4を選択してください。
    • IPv4 用仮想プライベートクラウド (VPC) :必要な VPC を選択してください。ネットワーク構成を簡素化するため、アップストリームデータベースと同じ VPC を使用することをお勧めします。
    • Replication subnet group:レプリケーションインスタンスに使用するサブネットグループを選択してください。
    • Public accessible:デフォルト設定を使用します。
  7. 必要に応じて、Advanced settingsメンテナンス、およびタグを設定します。 Create replication instanceをクリックして、インスタンスの作成を完了します。

ステップ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. ソースデータベースのエンドポイントを作成するには、 Create endpointをクリックします。

    Click Create endpoint

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

    Select RDS DB instance

  5. 以下の情報を設定してください。

    • Endpoint identifier:後続のタスク構成で識別しやすくするために、ソースエンドポイントにラベルを作成します。
    • 記述的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN に分かりやすい名前を作成します。
    • Source engine: MySQLを選択してください。
    • Access to endpoint database:Provide access information manuallyを選択します。
    • Server name:データプロバイダーのデータサーバー名を入力してください。データベースコンソールからコピーできます。アップストリームがAmazon RDSまたはAmazon Auroraの場合は、名前が自動的に入力されます。ドメイン名のないセルフホスト型MySQLの場合は、IPアドレスを入力してください。
    • ソースデータベースのポート番号ユーザー名パスワードを入力してください。
    • セキュリティソケットレイヤー(SSL)モード:必要に応じてSSLモードを有効にできます。

    Fill in the endpoint configurations

  6. Endpoint settingsKMS keyタグにはデフォルト値を使用してください。Test endpoint connection (optional)セクションでは、ネットワーク構成を簡素化するために、ソースデータベースと同じVPCを選択することをお勧めします。対応するレプリケーションインスタンスを選択し、 Run testをクリックします。ステータスが成功である必要があります。

  7. Create endpointをクリックします。

    Click Create endpoint

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

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

    Copy the public and private network IP addresses

  2. TiDB Cloudコンソールで、My TiDBページに移動し、対象のリソース名をクリックしてから、右上隅の[接続]をクリックすると、 TiDB Cloudデータベースの接続情報が表示されます。

  3. ダイアログのステップ 1: トラフィック フィルタの作成で、 編集をクリックし、AWS DMS コンソールからコピーしたパブリック IP アドレスとプライベート IP アドレスを入力して、 Update Filterをクリックします。AWS DMS レプリケーション インスタンスのパブリック IP アドレスとプライベート IP アドレスを TiDB クラスタのトラフィック フィルタに同時に追加することをお勧めします。そうしないと、状況によっては AWS DMS が TiDB クラスタに接続できない場合があります。

  4. Download CA certをクリックします。ダイアログの[ステップ3:SQLクライアントで接続する]で、接続文字列内の-u-h 、および-P情報を後で使用するためにメモしておきます。

  5. ダイアログのVPC Peeringタブをクリックし、 Step 1: Set up VPCの下にあるAddをクリックして、TiDBクラスターとAWS DMSのVPCピアリング接続を作成します。

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

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

    • Endpoint typeTarget endpointを選択してください。
    • Endpoint identifier:エンドポイントの名前を入力してください。
    • 記述的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN に分かりやすい名前を作成します。
    • Target engine: MySQLを選択してください。

    Configure the target endpoint

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

    • Server name: 記録した-h情報である TiDB クラスターのホスト名を入力してください。
    • ポート:記録した-P情報と同じTiDBクラスタのポート番号を入力してください。TiDBクラスタのデフォルトポートは4000です。
    • User name: TiDB クラスターのユーザー名を入力してください。これは、記録した-u情報です。
    • パスワード:TiDBクラスタのパスワードを入力してください。
    • セキュリティソケットレイヤー(SSL)モードVerify-caを選択します。
    • Add new CA certificateをクリックして、前の手順でTiDB CloudコンソールからダウンロードしたCAファイルをインポートします。

    Fill in the target endpoint information

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

    Upload CA

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

  11. Create endpointをクリックします。

    Click Create endpoint

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

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

    Create task

  2. 以下の情報を設定してください。

    • Task identifier: タスクの名前を入力してください。覚えやすい名前を使用することをお勧めします。
    • 記述的な Amazon リソース名 (ARN) - オプション: デフォルトの DMS ARN に分かりやすい名前を作成します。
    • Replication instance:先ほど作成したAWS DMSインスタンスを選択します。
    • Source database endpoint:先ほど作成したソースデータベースエンドポイントを選択してください。
    • Target database endpoint:先ほど作成したターゲットデータベースエンドポイントを選択してください。
    • Migration type:必要に応じて移行タイプを選択してください。この例では、 既存データの移行と進行中の変更の複製を選択します。

    Task configurations

  3. 以下の情報を設定してください。

    • Editing modeウィザードを選択してください。
    • ソーストランザクションのカスタムCDC停止モード:デフォルト設定を使用します。
    • Target table preparation mode:必要に応じてDo nothingまたはその他のオプションを選択してください。この例では、 Do nothingを選択します。
    • フルロード完了後にタスクを停止する:デフォルト設定を使用する。
    • LOB列をレプリケーションに含めるLimited LOB modeを選択します。
    • LOBの最大サイズ(KB) :デフォルト値の32を使用します。
    • Turn on validation:必要に応じて選択してください。
    • Task logs: 今後のトラブルシューティングのために、 Turn on CloudWatch logsを選択してください。関連する設定については、デフォルト設定を使用してください。

    Task settings

  4. Table mappingsのセクションで、移行するデータベースを指定します。

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

    Table mappings

  5. 右下隅のCreate taskをクリックしてください。

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

    Tasks status

移行中に問題や障害が発生した場合は、 CloudWatchのログ情報を確認して問題のトラブルシューティングを行ってください。

Troubleshooting

関連項目

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