こんにちは!エンタープライズクラウド事業部の高橋です。
先月リリースされた、MySQL HeatWave Migration Assistantを使用して、オンプレミスのMySQL DatabaseをOCI上のMySQL HeatWaveに移行してみました。
このリリース情報は、Oracle AI Worldで発表されていた内容です。
MySQL HeatWave Migration Assistantとは
オンプレミスのデータベースを Oracle Cloud Infrastructure (OCI) の MySQL HeatWaveへ移行させることができるツールです。
GUI形式で、移行に必要なリソースの自動作成もまとめて行なってくれる便利なツールです。
「MySQL HeatWave Migration Assistant」は、「MySQL Workbench 8.0.45」の機能の一つになります。
検証内容
オンプレミスのMySQL 8.0のDatabaseをOCI上のMySQL HeatWaveへ移行します。
その後、DatabaseバージョンをMySQL 8.4.7にアップグレードできるか検証してみたいと思います!
検証の構成
今回はツールの検証のため、以下の構成を使用します。
オンプレミスのDBは準備できなかったため、擬似環境としてローカルのMac端末上にMySQL 8.0のDBを構築しています。
Mac端末上のMySQL DatabaseをOCI上のMySQL HeatWaveに移行します。

※上記図の「Local instance 3306」がMac端末上のMySQL Databaseにあたる
作業の流れ
①MySQL HeatWave Migration Assistantインストール
②OCI構成プロファイルの設定
③OCI上にコンパートメントおよび移行先VCNの作成
④MySQL HeatWave Migration Assistantでの移行実施
⑤移行結果の確認
⑥DBバージョンのアップグレード
前提
・OCIテナントやユーザーは既に作成済みのものを使用します。
・OCIのユーザーは管理権限を所持しています。
・ローカル端末に、MySQL8.0のDBを構築済みです。
構築DBの情報は以下です。
主キーありのテーブルと主キーなしのテーブルを検証用DB「migration_test_db」に作成し、ダミーデータを持たせています。

①MySQL HeatWave Migration Assistantインストール
以下URLから、「MySQL Workbench 8.0.45」をダウンロードします。
インストールしたい端末のOSにあわせたインストーラーを選択してダウンロードします。
https://dev.mysql.com/downloads/workbench/
使用する「MySQL HeatWave Migration Assistant」は、「MySQL Workbench 8.0.45」の機能の一つです。

今回はmacOSを選択しました。Windows OSにも対応しています。
インストーラーをダウンロード後、インストールを実施しました。
アプリを起動すると、以下の画面が表示されます。

これでインストールは完了です。
②OCI構成プロファイルの設定
「MySQL HeatWave Migration Assistant」は、OCIへの接続のため、ツールをインストールした端末のOCI構成プロファイルを使用します。
既に端末に設定済みの場合はスキップしてください。
1.APIキーの取得
既に取得済みのAPIキーがある場合は、本手順はスキップしてください。
OCIテナントへログインし、右上のユーザーアイコンをクリックします。

プロファイルが表示されるため、メールアドレスをクリックします。
「トークンおよびキー」から「APIキーの追加」を行います。

APIキーの追加画面で、「秘密キーのダウンロード」を行なってください。
APIキーの作成画面でOCI構成プロファイルの記載例も表示されるため、コピーしておくと後続手順が楽です。
2.OCI構成プロファイルの設定
ローカル端末のターミナルで以下コマンドを実行します。
mkdir -p ~/.oci
vi ~/.oci/config
以下に設定例を記載します。
「xxxxxxxxx」の箇所は、一つ前の手順で表示されたOCI構成プロファイルの記載例を参考に、環境毎に設定してください。
[DEFAULT]
user=ocid1.user.oc1..xxxxxxxxx
fingerprint=xxxxxxxxx
tenancy=ocid1.tenancy.oc1..xxxxxxxxxxx
region=ap-tokyo-1
key_file=[一つ前の手順で取得した秘密キーの配置先]
これでOCI構成プロファイルの設定は完了です。
③OCI上にコンパートメントおよび移行先VCNの作成
コンパートメントと移行先となるVCNを移行前に作成します。
「MySQL HeatWave Migration Assistant」で作成することも可能ですが、実際の移行ケースですと要件に合わせたネットワーク設定を行う必要があったり、既存VCNを使用することが多いと想定されるため、事前にVCNを作成しておきます。
1.コンパートメント作成
コンパートメントの作成画面で、検証用のコンパートメント「Migration-Assistant」を作成しています。

2.VCN作成
今回はツールの検証のため、インターネット経由で移行を行います。
VCNウィザードを起動し、接続タイプは「インターネット接続性を持つVCNの作成」を選択することで、サブネット等含めたVCNを作成します。

VCN名は「HeatWave-Migration-VCN」設定し、その他設定は特に変更しておりません。
コンパートメントは、一つ前の手順で作成したコンパートメントを指定します。

以下の画面で進捗バーが全て完了となること、右下「VCNの表示」をクリックし、作成したVCNが表示されることを確認します。

これでVCNの作成は完了です。
④MySQL HeatWave Migration Assistantでの移行実施
ここから本検証の本題になります。
「MySQL HeatWave Migration Assistant」で、移行に必要な「踏み台サーバ」「オブジェクト・ストレージ」「MySQL HeatWave」 を自動作成するため、事前作成は行なっていません。
1.MySQL HeatWave Migration Assistantを起動
最初の手順で設定した「MySQL Workbench」を起動し、画面下の 以下アイコン(緑の→雲)をクリックします。
![]()

※MySQL Connectionsに移行元サーバが表示されていない場合、「+」アイコンをクリックし、移行元サーバへの接続情報を設定してください。
起動すると、以下画面が表示されます。
移行元DBのパスワードを入力しOKをクリックします。

2.Migration Plan設定
以下の画面が開きます。
・OCI Configuration Profileには、「2.OCI構成プロファイルの設定」で設定した、プロファイル名を指定してください。

・OCI Compartment:「③OCI上にコンパートメントおよび移行先VCNの作成」で作成したコンパートメントを選択します。
・OCI Network:Use Existingを選択します。
※ここで作成したコンパートメントが指定できない場合、OCI構成プロファイルやユーザ権限に問題がないか等を確認してください。
・Network Compartment:「③OCI上にコンパートメントおよび移行先VCNの作成」で作成したコンパートメントを選択します。
・Virtual Cloud Network:「③OCI上にコンパートメントおよび移行先VCNの作成」で作成したVCNを選択します。
・Private Subnet:「③OCI上にコンパートメントおよび移行先VCNの作成」で作成したプライベート・サブネットを選択します。
・Public Subnet:「③OCI上にコンパートメントおよび移行先VCNの作成」で作成したパブリック・サブネットを選択します。

・Configuration Template:検証のため、小さいサイズを選択します。
・Disk Size:50GB
・Setup Type :Standalone
・HeatWave Shape:HeatWave.32GB
・HeatWave Nodes:1
・Display Name:移行先HeatWaveの名前を任意で設定してください。
・Contact Emails(optional):デフォルトで入力されますがオプションのため、任意で設定します。
・MySQL Admin Username:移行先HeatWaveの管理ユーザー名にしたい値を入力してください。
・Password:移行先HeatWaveの管理ユーザーパスワードにしたい値を入力してください。

右下のNextをクリックします。
3.Migration Type設定
Cold MigrationとHot Migrationのどちらかを選択します。
Hot Migrationの場合は継続的な移行を行うことができますが、移行先DBから移行元DBへの通信要件もあり、今回の検証だとローカル端末の制約があるため、Cold Migrationを使用します。
また、Hot Migrationの場合は、移行元DBのパスワードの要件もあるため注意が必要です。

4.Schema Compatibility Check
移行元DBのスキーマに問題がないかチェックが行われます。
以下の画面にもあるように、ERRORが表示された場合は、メッセージを確認して移行を継続可能か確認します。

上記は、今回のツールの検証には問題がないことを確認したため、継続します。
右下Nextをクリックします。
5.Preview Migration Planの確認
ここまでで設定した内容のプレビューが表示されます。
・DB System:移行先DBの情報が表示されます。
・Compute Instance(jump host):移行に使用するJumpサーバの情報が表示されます。
・Object Storage :移行に使用するオブジェクト・ストレージの情報が表示されます。
実行することで、3点のリソースが自動作成され、DBの移行が実行されます。

6.移行の実施
右下のStart Migration Processをクリックし、必要リソースの作成や移行が開始されます。

進捗バーが表示され、必要リソースの作成が進んでいることが確認できます。
完了後、以下の画面に「Congratulations!」と表示されることを確認します。

これで移行が完了しました!
移行先MySQL HeatWaveのプライベートIPアドレス、Jumpサーバへの接続コマンド、JumpサーバからMySQL HeatWaveへの接続コマンドが表示されます。
また、移行のため作成したJumpサーバやオブジェクトストレージは画面左下の「◻︎Delete jump host」「◻︎Delete bucket with exported data」にチェックをつけ、「Delete Selected OCI Resources」をクリックすることで削除ができます。
不要な場合は削除してください。
⑤移行結果の確認
移行先のOCIテナントにログインし、リソースを確認していきます。
1.インスタンス
Jumpサーバが「mysql-jump-host」という名前で作成されています。

2.オブジェクト・ストレージ
バケットも作成されています。

バケット内のオブジェクトも作成されており、移行に使用するデータが一時的配置されたことがわかります。
3.MySQL HeatWave
DBシステムを確認し、移行先のMySQL HeatWaveが作成されていることを確認できました。

この時、データベースのバージョンは移行元と同じバージョンとなっています。
移行先のMySQL HeatWaveに接続し、移行元と同じテーブル等が作成されていることを確認します。(MySQL HeatWaveへの接続手順は本題ではないため省略します。)
・Databaseの確認
以下コマンドを実行し、Databaseを一覧表示
SHOW DATABASES;
移行元の「migration_test_db」が作成されていることが確認できました。
・Tableの確認
以下コマンドを実行します。
USE migration_test_db;
SHOW TABLES;
移行元の「logs_no_pk 」「products」が作成されていることが確認できました。

続けて、以下コマンドを実行します。
SELECT * FROM products;
SELECT * FROM logs_no_pk;
テーブルにデータも移行されていることが確認できました。

続けて、以下コマンドを実行します。
DESCRIBE products;
DESCRIBE logs_no_pk;
スキーマも移行できていることが確認できました。

主キーなしだったテーブルにも自動的に主キーが登録されています。
⑥DBバージョンのアップグレード
移行したMySQL HeatWaveのバージョンは「8.0.44」とEOLまでの数ヶ月なため、バージョン「8.4.7」にアップグレードします。
移行したMySQL HeatWaveの詳細画面で「データベースのバージョン」の右側「編集」をクリックします。

「データベース・バージョンの編集」画面が開くため、アップグレードしたい「8.4.7」を選択し、右下「更新」をクリックします。

20〜30分程度待ち、状態が「アクティブ」に変わるまで待ちます。
状態が「アクティブ」となり、データベースのバージョンが「8.4.7」にアップグレードされたことが確認できました!

これで、移行とアップグレードまで完了です。
まとめ
「MySQL HeatWave Migration Assistant」を使用し、GUIでの操作によるオンプレミスからOCIへのDB移行が可能であることが確認できました。
ツールの強みとして、 移行に必要なOCI上のリソース(バケットやJumpサーバなど)を自動作成してくれるため、インフラ準備の工数削減が可能です。
また、「主キー」がないテーブルでも、移行時に自動付与してくれるため、移行のために移行元DBの修正をする工数も削減できます。
GUI形式で操作が容易で、必要な手順のステップや進捗が把握できるところもあり、使用しやすいツールだと感じました。
OCIへ移行後はOCIコンソールからバージョンアップが可能です。
EOLを迎えるオンプレミスサーバーがある場合、いきなり本番機を更新するのではなく、まずはOCIへ移行してアップグレード検証を行うような使い方も可能です。
OCIへの移行、およびEOL対応のアップグレード検証をご検討の際は、ぜひご相談いただければと存じます!
