AWS DMSを使用してAurora MySQLからTiDB Serverlessにデータを移行してみた

2024.04.10

ゲームソリューション部の えがわ です。

AWS DMS(Data Migration System)を使用してAurora MySQLからTiDB Serverlessにデータを移行してみました。
Auroraのスナップショットから移行した記事はこちらです。

環境

  • TiDB Serverless (v7.1.1)
  • Aurora MySQL(8.0.mysql_aurora.3.04.1)

注意点

以下の説明は本筋ではないため割愛しています。

  • IAMロール
  • KMS
  • セキュリティグループ

事前準備

Aurora MySQL(移行元)のデータ

移行元のAuroraのデータは以前と同様のものを使用します。

TiDB Serverless(移行先)のクラスター

TiDB Serverlessを用意します。今回は作成したばかりのクラスターを使用します。

VPCエンドポイントを作成

PrivateLinkでTiDBとDMSインスタンスを接続するため、サブネットにエンドポイントを作成します。

TiDBの接続情報はTiDBのコンソール画面から確認できます。
後に使用するためCA certをダウンロードしておきます。

EndpointドロップダウンをPrivateに変更することで、Service NameAvailability Zone IDが表示されます。VPCエンドポイントの作成時に使用するので控えておきましょう。
パスワードを発行していない場合は、Reset Passwordで新規パスワードを発行します。

上記の接続情報を使用してサブネットにエンドポイントを作成するため、VPC -> エンドポイントに遷移します。
注意点として、TiDBと同じAZに配置する必要があります。

サブネットグループを作成

サブネットグループを作成します。

データベースの移行に使用するネットワークの一部として、使用する予定の 仮想プライベートクラウド (VPC) のサブネットを指定する必要があります。ここでの VPC は、Amazon VPC サービスに基づいている必要があります。サブネットとは、指定されたアベイラビリティーゾーンにある VPC 内の IP アドレス範囲です。これらのサブネットは、VPC AWS が配置されているリージョンのアベイラビリティーゾーンに分散できます。AWS DMS コンソールでレプリケーションインスタンスまたはインスタンスプロファイルを作成すると、選択したサブネットを使用できます。レプリケーションサブネットグループを作成し、使用するサブネットを定義できます。少なくとも 2 つのアベイラビリティーゾーンにあるサブネットを指定する必要があります。

2つ以上のサブネットを指定しグループを作成します。

レプリケーションインスタンスを作成

レプリケーションインスタンスを作成します。

ソース、ターゲットエンドポイントを作成

移行元(Aurora MySQL)のエンドポイントを作成します。

次に移行先(TiDB Serverless)のエンドポイントを作成します。
接続情報はTiDBのコンソール画面から確認できます。
CA証明書は先ほどダウンロードした証明書を使用してください。

接続テスト

レプリケーションインスタンスを使用して接続確認を行います。

ソースエンドポイント

ターゲットエンドポイント

どちらも接続が確認できました。

接続に失敗する場合はセキュリティグループ、VPCエンドポイントを見直してください。

移行してみる

事前準備が完了したので、移行作業に移っていきます。

データベース移行タスク

データベース移行タスクを作成します。

テーブルマッピング

ソース名に移行するデータベース名を指定します。
ワイルドカードだとmysqlsysなどのシステムデータベースもTiDBに移行しようとしエラーとなります。

スキーマ名は、Amazon RDS インスタンスのデータベース名です。ソース名のデフォルト値は「%」です。これは、Amazon RDS 内のすべてのデータベースが TiDB に移行されることを意味します。これにより、Amazon RDS のmysqlやsysなどのシステム データベースが TiDB クラスターに移行され、タスクが失敗します。したがって、特定のデータベース名を入力するか、すべてのシステム データベースをフィルターで除外することをお勧めします。

作成時に自動的に行うにチェックを入れている場合はタスクが自動的に開始しますので完了まで待ちます。

移行作業が完了しましたので、TiDBのコンソールで確認してみます。

無事にデータベースの移行が完了しました!

最後に

AWS DMSで簡単にAurora MySQLからTiDB Serverlessに移行することができました。
DMS, スナップショットどちらでも移行できるのはうれしいですね!
本記事がどなたかの参考になれば幸いです。