Amazon Aurora(MySQL)からTiDB Cloud Dedicatedへデータを移行してみた

Amazon Aurora(MySQL)からTiDB Cloud Dedicatedへデータを移行してみた

2025.08.13

こんにちは、ゲームソリューション部のsoraです。
今回は、Amazon Aurora(MySQL)からTiDB Cloud Dedicatedへデータを移行してみたことについて書いていきます。

はじめに

以下の流れで進めていきます。

  • テスト用データの登録
  • 移行データ用のS3バケット作成
  • IAMロール作成
  • TiUP DumplingでAuroraからS3へエクスポート
  • TiDB CloudのImport機能でS3からTiDB Cloudへインポート
  • 動作確認

AuroraのエクスポートにはTiUP Dumpling、TiDB CloudのインポートにはTiDB CloudのImport機能を使用します。

今回のAWS構成は以下です。
AWSのEC2・Aurora・VPCエンドポイント、TiDB CloudのDedicatedクラスタは、事前に作成しているものを使用します。
sr-tidbcloud-aurora-trans-00

テスト用データの登録

Auroraにテスト用のデータを登録します。

CREATE DATABASE japan_prefecture_db;

USE japan_prefecture_db;

CREATE TABLE prefectures (
    id INT AUTO_INCREMENT PRIMARY KEY,
    prefecture VARCHAR(255),
    prefectural_capital VARCHAR(255)
);

INSERT INTO prefectures (prefecture, prefectural_capital) VALUES
('Hokkaido', 'Sapporo'),
('Aomori Prefecture', 'Aomori'),
('Iwate Prefecture', 'Morioka'),
('Miyagi Prefecture', 'Sendai'),
('Akita Prefecture', 'Akita'),
('Yamagata Prefecture', 'Yamagata'),
('Fukushima Prefecture', 'Fukushima'),
('Ibaraki Prefecture', 'Mito'),
('Tochigi Prefecture', 'Utsunomiya'),
('Gunma Prefecture', 'Maebashi'),
('Saitama Prefecture', 'Saitama'),
('Chiba Prefecture', 'Chiba'),
('Tokyo Metropolis', 'Shinjuku'),
('Kanagawa Prefecture', 'Yokohama'),
('Niigata Prefecture', 'Niigata'),
('Toyama Prefecture', 'Toyama'),
('Ishikawa Prefecture', 'Kanazawa'),
('Fukui Prefecture', 'Fukui'),
('Yamanashi Prefecture', 'Kofu'),
('Nagano Prefecture', 'Nagano'),
('Gifu Prefecture', 'Gifu'),
('Shizuoka Prefecture', 'Shizuoka'),
('Aichi Prefecture', 'Nagoya'),
('Mie Prefecture', 'Tsu'),
('Shiga Prefecture', 'Otsu'),
('Kyoto Prefecture', 'Kyoto'),
('Osaka Prefecture', 'Osaka'),
('Hyogo Prefecture', 'Kobe');

SELECT * FROM prefectures;
+----+----------------------+---------------------+
| id | prefecture           | prefectural_capital |
+----+----------------------+---------------------+
|  1 | Hokkaido             | Sapporo             |
|  2 | Aomori Prefecture    | Aomori              |
|  3 | Iwate Prefecture     | Morioka             |
|  4 | Miyagi Prefecture    | Sendai              |
|  5 | Akita Prefecture     | Akita               |
|  6 | Yamagata Prefecture  | Yamagata            |
|  7 | Fukushima Prefecture | Fukushima           |
|  8 | Ibaraki Prefecture   | Mito                |
|  9 | Tochigi Prefecture   | Utsunomiya          |
| 10 | Gunma Prefecture     | Maebashi            |
| 11 | Saitama Prefecture   | Saitama             |
| 12 | Chiba Prefecture     | Chiba               |
| 13 | Tokyo Metropolis     | Shinjuku            |
| 14 | Kanagawa Prefecture  | Yokohama            |
| 15 | Niigata Prefecture   | Niigata             |
| 16 | Toyama Prefecture    | Toyama              |
| 17 | Ishikawa Prefecture  | Kanazawa            |
| 18 | Fukui Prefecture     | Fukui               |
| 19 | Yamanashi Prefecture | Kofu                |
| 20 | Nagano Prefecture    | Nagano              |
| 21 | Gifu Prefecture      | Gifu                |
| 22 | Shizuoka Prefecture  | Shizuoka            |
| 23 | Aichi Prefecture     | Nagoya              |
| 24 | Mie Prefecture       | Tsu                 |
| 25 | Shiga Prefecture     | Otsu                |
| 26 | Kyoto Prefecture     | Kyoto               |
| 27 | Osaka Prefecture     | Osaka               |
| 28 | Hyogo Prefecture     | Kobe                |
+----+----------------------+---------------------+
28 rows in set (0.00 sec)

移行データ用のS3バケット作成

S3で移行データ用のバケットを作成します。
名前だけ設定して、デフォルトの設定のまま進めて作成します。

IAMロール作成

EC2からS3にアクセスする必要があるため、インスタンスプロファイルを作成します。

まずは以下のJSONでIAMポリシーを作成します。
{bucket-name}は先ほど作成したS3バケットの名前を指定します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::{bucket-name}",
        "arn:aws:s3:::{bucket-name}/*"
      ]
    }
  ]
}

上記のポリシーをアタッチしたIAMロールを作成します。
その後、作成したIAMロールをEC2インスタンスにアタッチします。

TiUP DumplingでAuroraからS3へエクスポート

EC2インスタンスでTiUPをインストールして、TiUP Dumplingを実行します。
出力先は先ほど作成したS3バケットを指定しています。

# TiUPのインストール
curl \
  --proto '=https' \
  --tlsv1.2 \
  -sSf \
  https://tiup-mirrors.pingcap.com/install.sh \
| sh

# bash_profileを再読み込み
source /home/ec2-user/.bash_profile

# TiUP Dumplingの実行(エクスポート先はS3)
tiup dumpling \
  --host {Auroraのエンドポイント} \
  --port 3306 \
  --user admin \
  --password '{Auroraのパスワード}' \
  --consistency none \
  --output 's3://{bucket-name}/tiup-dumpling'

実行後にS3バケットを確認してみると、以下のようにスキーマファイルを含むデータが格納されていることが確認できます。
sr-tidbcloud-aurora-trans-02

TiDB CloudのImport機能でS3からTiDB Cloudへインポート

次にTiDB CloudのImport機能を使用して、先ほどのS3バケットからTiDB Cloudへインポートします。

TiDB Cloudにて移行先クラスタを選択して、Importを選択します。
sr-tidbcloud-aurora-trans-03

今回はS3からデータインポートを行うため、Import data from Cloud Storageを選択します。
sr-tidbcloud-aurora-trans-04

インポートする前に、TiDB CloudからS3へ接続するためのIAMロールを作成する必要があります。

Folder URIに先ほど作成したS3バケットのURIを入力した後に、Role ARNの下にNot sure what is Role ARN? Click here to create new one with AWS CloudFormation.と記載されているので、こちらをクリックしてCloudFormationでIAMロールを作成します。
sr-tidbcloud-aurora-trans-05

クリックすると手順が表示されるため、AWS Console with CloudFormation TemplateをクリックしてCloudFormationのテンプレートを使用したIAMロールの作成に進みます。
sr-tidbcloud-aurora-trans-06

スタック作成画面に遷移するため、Role Nameのみ入力して、チェックボックスにチェックを入れてスタックの作成ボタンで実行します。
(画面遷移したとき、リージョンがオレゴンになっていたため、東京に変更してから実行しました。)

上記手順にてIAMロールが作成できたため、作成されたIAMロールのARNをコピーして、TiDB Cloudの画面に戻ります。

TiDB Cloudの画面でIAM Role ARNを入力して、Confirmボタンをクリックします。
すると、Role ARNに作成されたIAMロールのARNが入力されるため、Connectボタンをクリックしてインポートを開始します。

最終的な設定内容は以下です。

  • Included Schema Files:Yes
  • Data Format:SQL
  • Folder URI:{S3バケットのURI}
  • Bucket Access:AWS Role ARN
  • Role ARN:{IAMロールのARN}

その後、画面遷移するためStart Importボタンをクリックします。
sr-tidbcloud-aurora-trans-07

Import Task Detailが表示されるため、タスクが完了するのを待ちます。
sr-tidbcloud-aurora-trans-08

タスクが完了すると以下のように表示されます。
sr-tidbcloud-aurora-trans-09

これでデータの移行が完了しました。

動作確認

TiDB CloudのDedicatedクラスタにて、移行したデータを確認します。
TiDB CloudのSQL Editorから以下のクエリを実行してみると、データが移行されていることが確認できました。

USE japan_prefecture_db;
SELECT * FROM prefectures;

sr-tidbcloud-aurora-trans-10

最後に

今回は、Amazon Aurora(MySQL)からTiDB Cloud Dedicatedへデータを移行してみたことを記事にしました。
どなたかの参考になると幸いです。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.