TiDB CloudのMigration機能を使って、Aurora(MySQL)からTiDB Cloud Dedicatedへデータ同期してみた

TiDB CloudのMigration機能を使って、Aurora(MySQL)からTiDB Cloud Dedicatedへデータ同期してみた

2025.09.14

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

はじめに

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

  • Aurora(MySQL)へのテスト用データの登録
  • Aurora(MySQL)とTiDB CloudをVPCピアリングで接続
  • TiDB CloudのMigration機能でAurora(MySQL)からTiDB Cloudへデータ同期
  • 動作確認
    • データが移行されていることの確認
    • Aurora(MySQL)へのデータ追加後に、データ同期されてTiDB Cloudにもデータ追加されていることの確認

データ移行・同期には、TiDB CloudのMigration機能を使用します。
https://docs.pingcap.com/ja/tidbcloud/migrate-from-mysql-using-data-migration/

今回のAWS構成は以下です。
AWSのEC2・Aurora(MySQL)、TiDB CloudのDedicatedクラスタは、事前に作成しているものを使用します。
sr-tidbcloud-cons-dm-01

Aurora(MySQL)へのテスト用データの登録

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

			
			# MySQLクライアントのインストール
sudo dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo dnf -y install mysql mysql-community-client

# Auroraへの接続
mysql -h [Auroraエンドポイント] -u [user] -p[パスワード]

# データの投入
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)


		

Aurora(MySQL)が存在するVPCとTiDB CloudをVPCピアリングで接続

Aurora(MySQL)からTiDB Cloudへの接続設定を行います。
今回は、VPCピアリングで接続します。

また、PrivateLink接続を利用する場合は、以下のブログをご確認ください。
https://dev.classmethod.jp/articles/tidb-dedicated-ec2-privatelink/

TiDB Cloudのコンソールから、対象プロジェクトまたは対象クラスタのSettings > NetworkingにてCreate VPC Peeringから作成します。

sr-tidbcloud-cons-dm-02

Aurora(MySQL)のあるアカウントやVPCの情報を入力して、Createをクリックします。

sr-tidbcloud-cons-dm-03

その後、AWSにてVPC > ピアリング接続にてTiDB Cloudからのリクエストが確認できるため、アクション > リクエストを承諾でリクエストを承諾します。

sr-tidbcloud-cons-dm-04
sr-tidbcloud-cons-dm-05

承諾後に少し待ってからTiDB Cloudのコンソールを確認すると、VPCピアリング接続が確立されていることを確認できます。

sr-tidbcloud-cons-dm-06

これでVPCピアリング接続はできるようになったため、次にルートテーブルとセキュリティグループの設定をします。
Aurora(MySQL)のサブネットのルートテーブルにて、TiDB CloudのDedicatedクラスタのVPC CIDRを送信先とする場合に、ピアリング接続をターゲットとするように設定を追加します。
Aurora(MySQL)のセキュリティグループにて、TiDB CloudのDedicatedクラスタのCIDRからの3306ポートの通信を許可します。

TiDB CloudのMigration機能でAurora(MySQL)からTiDB Cloudへデータ同期

接続設定が完了したため、TiDB Cloudのコンソールで対象のクラスタを選択して、Data > MigrationからCreate Migration JobでMigration Jobを作成します。

sr-tidbcloud-cons-dm-07

Migration Job作成画面で、ソースとなるAurora(MySQL)の情報を入力して、Validate Connection and Nextをクリックします。
今回はSSL/TLSは無効にして実行します。(キャプチャした画面では有効になっています。)

sr-tidbcloud-cons-dm-08

接続準備について表示されますが、今回はVPCピアリング接続であり、アクセスリストへの追加は不要のため、そのままAlready done, continueをクリックします。

sr-tidbcloud-cons-dm-09

次に、移行・同期するデータを選択します。
今回は、すでに存在しているデータの移行とデータの同期にチェックを入れて、その他の設定はそのままで進めます。
Select Objects to Migrateについて、今回はすべてのデータとしていますが、対象を個別に指定することも可能です。

sr-tidbcloud-cons-dm-10
sr-tidbcloud-cons-dm-11

上記にてNextをクリックして進めようとしたところ、エラーになりました。
これはAurora(MySQL)でbinlogが有効になっていないことによるエラーです。

sr-tidbcloud-cons-dm-12

Aurora(MySQL)のデフォルトのクラスタパラメータグループではbinlogは無効なため、新規にクラスタパラメータグループを作成して、以下のパラメータ設定を変更します。

  • binlog_backup(1→0)
    • 変更理由:aurora_enhanced_binlogを有効化する際に競合するため
  • binlog_replication_globaldb(1→0)
    • 変更理由:aurora_enhanced_binlogを有効化する際に競合するため
  • aurora_enhanced_binlog(0→1)
    • Aurora用に最適化されたbinlog実装
  • binlog_format(ROW)
    • binlogのフォーマット
    • ROW: 変更された行のデータそのものを記録
    • STATEMENT: 実行されたSQL文を記録
    • MIXED: 状況に応じて自動選択

上記のクラスタパラメータグループを作成してクラスタに適用し、インスタンスを再起動して反映させたうえで再度チェックすると、うまくいきました。

sr-tidbcloud-cons-dm-13

最後にRCUsの設定とJob設定の確認画面が表示されます。
RCUsは2RCUs・4RCUs・8RCUs・16RCUsから選択できますが、今回は最小の2RCUsに設定しました。(キャプチャした画面では4RCUsになっています。)
Create Job and StartをクリックするとJobが実行されます。

sr-tidbcloud-cons-dm-14

少し待つと、Jobが完了していることが確認できました。

sr-tidbcloud-cons-dm-15

動作確認

データが移行されていることの確認

TiDB CloudのコンソールにてSQL Editor機能で確認すると、Aurora(MySQL)に追加したテーブルやデータを確認することができました。

sr-tidbcloud-cons-dm-16

データが同期されていることの確認

次にデータが同期されていることを確認していきます。
まず、Aurora(MySQL)にて以下のようにデータを1行追加します。

			
			mysql> INSERT INTO prefectures (prefecture, prefectural_capital) VALUES
    -> ('Nara Prefecture', 'Nara');
Query OK, 1 row affected (0.12 sec)

mysql> 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                |
| 29 | Nara Prefecture      | Nara                |
+----+----------------------+---------------------+
29 rows in set (0.01 sec)

		

その後にTiDB Cloudにて確認してみると、以下のように追加したデータが確認できました。

sr-tidbcloud-cons-dm-17

補足(Migration Jobについて)

Migration Jobについて、RCUsの変更や同期の停止も可能です。
同期を含むJobを停止した後、同期元でデータを追加してから再度Resumeで同期を含むJobを再開すると、変更が入ったデータも反映されます。

sr-tidbcloud-cons-dm-18
sr-tidbcloud-cons-dm-19

最後に

今回は、TiDB CloudのMigration機能を使って、Aurora(MySQL)からTiDB Cloud Dedicatedへデータ同期してみたことを記事にしました。
どなたかの参考になると幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事