はじめに
皆さん、2025/11/25 に公開された MySQL HeatWave Migration Assistant(以降、Migration Assistant) をご存知でしょうか。
MySQL HeatWave Migration Assistant
https://dev.mysql.com/doc/workbench/en/heatwave-migration-assistant.html
本ツールを使用すると、オンプレミス環境の MySQL を Oracle Cloud Infrastructure (以降、OCI) の MySQL HeatWave DB システム(以降、MDS)に簡単に移行することができます。
今回は実際に本ツールを検証し、前半は使い方、後半は筆者がハマってしまった注意点やエラーを対処方法とともに記載しておきますので、ぜひ皆様の参考になれば幸いです。
MySQL HeatWave Migration Assistantとは
MySQL Workbench 8.0.45 で追加された新機能で、無料でオンプレ環境のMySQLをOCI上のMDSへ移行するツールです。ただし、サポートOSはMicrosoft Windows および macOS のみです。
また、移行元DBとして MySQL 5.6, 5.7, 8.0, 8.4 LTS, 9.x (Perconaを含む)をサポートしています。
本ツールは、ボタンをクリックしていくだけでOCIへリフトアップできるというもので、以下のGOODなポイントがあります。
- 無料で使える
- 移行で必要となるOCI上のオブジェクト(VCN/コンピュートインスタンス/MDS/オブジェクトストレージ)を自動生成してくれる
- マイグレーション完了後、生成した不要なOCIオブジェクトの自動削除もできる
- GUI画面で操作が完結し、マイグレーションの進行状況が確認できる
検証環境
前提条件
検証の前提条件は以下の通りです。
- Windows OSにMySQL Workbench 8.0.45がインストール済みである
- オンプレミス環境の MySQL Server があり、MySQL Workbenchからアクセスできること
- OCI CLI がWinodws OS上で使用できること
検証環境
今回検証に使用した環境は以下の通りです
- OS:Windows 11
- MySQL Workbench:8.0.45
- 移行元DB:MySQL8.0.33
Migration Assistantを使用してマイグレーションを行うと、構成図は以下のようになります。
右側のOCIのオブジェクト(コンピュートインスタンス/ MDS /オブジェクトストレージ)についてはツール内で自動作成されます。

Migration Assistantでのマイグレーションに必要な要件
Migration Assistant を使用してマイグレーションする際に必要な要件は以下の通りです。
-
移行元のMySQLバージョンは MySQL 5.6 以降(5.6/5.7/8.0/8.4/9.x) であること
- ドキュメントに記載はありませんが、MySQL 5.6/5.7では以下のパッチバージョンでないとマイグレーション処理の途中でエラーが発生し動作しません。
- MySQL 5.6 : MySQL 5.6.42以降
- MySQL 5.7 : EE版であれば5.7.10以降、CE版だと5.7.28以降
- ドキュメントに記載はありませんが、MySQL 5.6/5.7では以下のパッチバージョンでないとマイグレーション処理の途中でエラーが発生し動作しません。
-
使用するOCIアカウントが管理者アカウントでない場合、以下の権限を設定しておく必要があります。
詳細は公式ドキュメントをご確認ください。1234567891011121314Allow group GroupName to inspect mysql-family in tenancyAllow group GroupName to inspect compartments in tenancyAllow group GroupName to inspect vcns in tenancyAllow group GroupName to inspect subnets in tenancyAllow group GroupName to use vnics in tenancyAllow group GroupName to use subnets in tenancyAllow group GroupName to use network-security-groups in tenancyAllow group GroupName to inspect instance-family in tenancyAllow group GroupName to manage mysql-configurations in compartment CompartmentNameAllow group GroupName to manage mysql-family in compartment CompartmentNameAllow group GroupName to manage instance-family in compartment CompartmentNameAllow group GroupName to manage buckets in compartment CompartmentNameAllow group GroupName to manage object-family in compartment CompartmentName
マイグレーションの流れ
Migration Assistant による大まかな移行の流れです。
- マイグレーションの事前設定
- OCI上に 踏み台サーバ(コンピュートインスタンス)、移行先MDSを自動生成
- 踏み台サーバからソース元DBのスナップショットを取得し、OCI 上のオブジェクトストレージへアップロード
- 移行先 MDS へスナップショットをインポート
- (ホットマイグレーションを選択した場合)インバウンドレプリケーションによるスナップショット取得以降の更新データの同期
最初の手順である「マイグレーションの事前設定」を行うだけで、以降の処理は自動で行われます。ここからは実際の画面を使った移行手順をご紹介します。
1. Migration Assistantの起動
MySQL Workbenchのホーム画面の MySQL Connections セクションより、移行したいDBの connection の緑ボタンをクリックします。(画像の赤枠部分をクリック)

そもそも connection がない場合、MySQL Connectionsセクション横の+ボタンをクリックして、 DB接続 を作成してください。
2.Target Selection の設定
移行先のMDSや踏み台サーバを作成するコンパートメントやVCNを選択します。
このタイミングで新規にコンパートメントやVCNを作成することもできますが、ここでは既存のVCNを選択します。

続いて、移行先MDSの設定として以下の項目を入力します。
-
Configuration Template
- 踏み台サーバのコンピュートインスタンス、MDSの構成テンプレート(ECPU / メモリー/NW)を選択します。踏み台サーバとMDSは同じスペックになります。
- Always Freeも選択できますが、移行元DBのバージョンによっては後述するエラーに注意が必要です。
-
Data Size
- MDSのストレージサイズ
-
Setup Type
- スタンドアロン もしくは 高可用性構成(HA)を選択
-
HeatWave Shape / HeatWave Nodes
- Heatwaveクラスターの構成やクラスターノード数
-
Display Name
- MDSのインスタンス名
-
MySQL Admin Username / Password / Confirm Password
- MDSの管理者ユーザー名、パスワード(デフォルトはMySQL WorkbenchのDB接続で設定したユーザ名とパスワード)
-
Contact Emails (任意)
- 作成するMDSに関する管理メールを受信するメールアドレス(空欄でよいと思います)

Nextボタンをクリックし次に進みます。
3.Migration Type の設定
マイグレーション方式を以下の2つから選択します。
- コールドマイグレーション
- 移行元DBのスナップショットを取得し、MDSへインポートする方法です。
- 移行中に移行元DBに加えられたデータ更新はMDSには反映されないため、移行中はアプリケーションの書き込みを停止する必要があります。
- MySQL 5.6/5.7はこちらのみ選択可能です。
- ホットマイグレーション
- 移行元DBのスナップショットを取得しMDSへインポート、その後移行中に更新されたデータをインバウンドレプリケーションによりデータ同期を行う方法です。
- レプリケーションチャネルを自動作成しインバウンドレプリケーションを設定するため、VCNから移行元DBホストのポート3306に接続できるようにしておく必要があります。

移行元DBのスナップショットのエクスポート / MDSへのインポート は、内部的にMySQL Shellのダンプユーティリティを使用しますが並列度(threads)などのパラメータ調整はできません。
ここではコールドマイグレーションを選択し、Nextボタンをクリックし次に進みます。
4. Schema Compability Checks の設定
MDSにはいくつかの制限があり、移行データの互換性をチェックします。
互換性がない移行データについてはMySQL Shellのダンプユーティリティのオプションを指定してデータ移行を行います。
下記画像では、MDSではユーザに設定できる権限に制限があり、root権限をもつユーザを「strip_restricted_grantsオプションで移行する(特定の権限を除外して移行)」 か 「Exclude Object(移行対象から除外)とする」か選択します。

設定ができたら、Nextボタンをクリックし次に進みます。
5. Preview Migration Plan の確認
これまで選択したマイグレーションの設定が表示されるので、Start Migration Processボタンをクリックすると自動でマイグレーションが開始されます。

以降はマイグレーションが完了するまで、表示されるプログレスバーで進捗状況を見守ることになります。

6. マイグレーション完了
無事マイグレーションが完了すると、Congratulations!と表示されます。
OCI上の踏み台サーバやMDSに接続するためのコマンドが表示されるので、Windows OS / macOS 上から踏み台サーバ経由でMDSに接続したい場合などはコピーして控えておくと良いです。

また、ページ下部にマイグレーションで自動作成された踏み台サーバやオブジェクトストレージを削除するかどうか、チェックボックスで選択することができます。
不要なオブジェクトがある場合は、チェックを入れて「Delete Selected OCI Resources」ボックスをクリックしてください。

Migration Assistantを使ったマイグレーション手順は以上です。
事前設定するだけで、非常に簡単にOCIのMDSへ移行することができました。
ツール使用時の注意点
ここからは筆者がツール検証時に実際に遭遇したエラーや注意点を記載します。
1. 似たような機能である Migration Wizardと勘違いしない
左側のメニューバーの Migration Wizard機能(ODBC 準拠の他ベンダデータベースを MySQL に移行する機能)のボタンがありますが、まったく別機能なので注意しましょう。

この機能を使ったことがないと、Migration ~ と書いてあるので勘違いしそうになります。
2. 移行先MDSのバージョンは選択できない
Migration Assistantを使ったマイグレーションでは、移行先MDSのバージョンは自動的に「移行元DBのメジャーバージョンの最新版」となるため、バージョン指定はできないので注意です。
それぞれの移行先バージョンは以下の通りとなります。(2026/1/26現時点)
| 移行元 DB バージョン | 移行先 MDS バージョン |
|---|---|
| MySQL 5.6/5.7/8.0 | MySQL 8.0.45 |
| MySQL 8.4 LTS | MySQL 8.4.8 |
| MySQL 9.x | MySQL 9.6 |
※OCIではMySQL 5.6/5.7はサポート外のため、最もバージョンが近い8.0系の最新版が移行先バージョンとなるようです。
ちなみに、オンプレミス環境がMySQL8.0以下の方で「8.0がEOL間近なので、移行先MDSには8.4を選択したい!」という方もいらっしゃるかと思います。
そのような場合、Migration Assistantを使ったマイグレーション後のアップグレードパスは以下のようになるかと思います。(MySQL 5.7.28 からのマイグレーションで試してみましたが問題なく実行できました。ご参考までに)
- MigrationAssistant で MySQL 8.0.45 にマイグレーションする
- OCIのコンソール画面からMySQL 8.4.x へ手動アップグレード(もしくは自動アップグレード)
MDSのアップグレードの詳細については、公式ドキュメントをご参照ください。
3. エラーメッセージから原因が分かりづらい
エラーが発生した場合、ツール画面上に出てくるメッセージだけでは正直何が原因でエラーが発生したのかがわからないことが多いです。
Migration Assistantでは内部的にMySQL Shellが使用されており、エラー発生時は以下のログを確認し、エラーメッセージから原因を確認することを推奨します。
Windows の場合、ログファイルは以下のパスにあります。
- フォルダ
- C:\Users\ユーザ\AppData\Roaming\MySQL\mysqlsh-wb\
- ログ
- mysqlsh.log
ちなみにですが、本ログには移行元DBへのバックアップ取得中のログも出力されるため、ログ時刻からバックアップ実行時間を確認することができます。
4. OCI CLIに設定ミスがあると、起動しても真っ白な画面になる
OCI CLIの設定や構成ファイルに設定ミスがあると、Migration Assistant を起動しても真っ白な画面のウィンドウが立ち上がります。
待てど暮らせど画面にエラーメッセージが出るわけでないので困惑します。

そこで、ログ(mysqlsh.log)を確認すると以下のようなエラーメッセージ(Error: Loaded OCI profile didn’t work:)が発生しています。
|
1 |
[19944:14464]: Error: Loaded OCI profile didn't work: {'target_service': 'identity', 'status': 401, 'code': 'NotAuthenticated', 'opc-request-id': '17AC32065EC2426DB93F88027E530074/D261B45EA8B84D09D1235F694E525493/04437C9E14CE886255BE36974A011300', 'message': 'The required information to complete authentication was not provided or was incorrect.', 'operation_name': 'get_tenancy', 'timestamp': '2026-01-08T03:26:06.638200+00:00', 'client_version': 'Oracle-PythonSDK/2.160.1', 'request_endpoint': 'GET https://identity.ap-tokyo-1.oci.oraclecloud.com/20160918/tenancies/ocid1.tenancy.oc1..aaaaaaaax2k5wjt6nmb4f7qbrjnbwf6rwyd56gq2oznhmqi6qibx3j7o34qq', 'logging_tips': 'To get more info on the failing request, refer to https://docs.oracle.com/en-us/iaas/tools/python/latest/logging.html for ways to log the request/response details.', 'troubleshooting_tips': "See https://docs.oracle.com/iaas/Content/API/References/apierrors.htm#apierrors_401__401_notauthenticated for more information about resolving this error. Also see https://docs.oracle.com/iaas/api/#/en/identity/20160918/Tenancy/GetTenancy for details on this operation's requirements. If you are unable to resolve this identity issue, please contact Oracle support and provide them this full error message."} |
このような場合は、OCI CLIの設定や構成ファイルに何らかの設定ミスがあるので、ドキュメントを参照し設定を見直してください。
ちなみに、私の場合は「作成したAPIキーの公開鍵をOCIにアップロードし忘れていた」という超凡ミスが原因でした。
5. MySQL 8.4以下は、移行先にAlways Freeを選ぶとエラーが発生
OCIのAlways Freeでは、MySQLバージョンは常に最新版のバージョン(2026年1月26日時点ではMySQL 9.6)のみが使用可能です。公式ドキュメントにも以下の記載があります。
Always Free DBシステムには、次の構成および制限があります。
- DBシステムは常に最新バージョンで作成されます。
前述しましたが Migration Assistant では、移行先MDSバージョンは自動的に「移行元のメジャーバージョンの最新版」となるため、MySQL 5.6/5.7./8.0では 最新版の8.0.45となり、MySQL8.4では 8.4.8 となります。
そのため、Always Freeが要求するMySQLバージョンと Migration Assistantが使用するMySQLバージョンで食い違いが発生します。
よって「移行元DBがMySQL 8.4以下」かつ「移行先のテンプレートにAlways Free 」を選択してしまうと、内部的にMySQLバージョン差異によりエラーとなります。
(以下の画面は、移行元DBとしてMySQL 8.0.33、移行先にAlways Freeを選択した場合のエラー)

このような場合、以下の手順でマイグレーションをやり直す必要があります。
-
×ボタンでMigration Assistantのウィンドウを閉じる
-
手作業でそれまで作成されたOCIオブジェクト(踏み台サーバ/オブジェクトストレージ)を削除する
-
Always Free以外のテンプレートを選択して再度マイグレーションする
ちなみにですが、踏み台サーバは「mysql-jump-host」というインスタンス名で自動作成されます。
6. MySQL 5.6/5.7 はパッチバージョンに注意しないとエラーが発生する
ドキュメントに記載はありませんが、MySQL 5.6/5.7では以下のパッチバージョンでないと動作しません。
- MySQL 5.6 : MySQL 5.6.42以降
- MySQL 5.7 : EE版であれば5.7.10以降、CE版だと5.7.28以降
これは、Migration Assistantでは内部的にMySQL Shellからの接続時にTLS接続が必須であることが原因です。
Migration Assistantでは内部的に移行元DBに対して以下のようなTLS接続が行われます。
|
1 |
接続ユーザ@移行元DBのIPアドレス:3306?ssl-mode=REQUIRED |
MySQL8.0.28ではTLS1.0および1.1のサポートが削除されているため、以降のバージョンではこれらを使ったTLS接続ができず、MySQL Shellも同様です。以下、公式ドキュメントの引用です。
Support for the TLSv1 and TLSv1.1 connection protocols is removed from MySQL Server as of release 8.0.28.
(機械翻訳:TLSv1およびTLSv1.1接続プロトコルのサポートは、MySQL Server 8.0.28リリース以降で削除されました。)
そのため、移行元DBではTLS1.2をサポートしている必要があります。
MySQL 5.6/5.7 の前述したバージョンはTLS1.2をサポートしているため、これらのバージョンだとMigration Assistant機能が利用できるということです。
こちらに関してはドキュメントに以下のように記載があります。
MySQL supports encrypted connections using the TLSv1 protocol and (as of MySQL 5.6.46) TLSv1.1 and TLSv1.2, listed in order from less secure to more secure.
(機械翻訳:MySQLはTLSv1プロトコルを使用した暗号化接続をサポートしており、(MySQL 5.6.46以降)TLSv1.1およびTLSv1.2もサポートしています。)
TLS1.2をサポートしていないバージョンの場合(MySQL 5.6.41以下など)、マイグレーションを実行するとTLS接続に失敗し、下記画像のようにスナップショットのエクスポート / インポート処理でエラーが発生します。

ログ上では以下の「SSL routines::unsupported protocol」エラーが発生することが確認できます。
(以下、MySQL 5.6.10 でのエラーケース)
|
1 2 |
Error: source_check: connection check: MySQL Error (2026): SSL connection error: error:0A000102:SSL routines::unsupported protocol Error: source_check: can't connect to {'host': '192.168.68.112', 'password': '****', 'port': 3306, 'user': 'testroot'}: {"connectErrno": 2026, "connectError": "SSL connection error: error:0A000102:SSL routines::unsupported protocol", "reachable": null, "resolvable": true} |
このような場合、移行元DBをTLS1.2が使用できるバージョンにアップグレードしてからでないと Migration Assistant が使用できないので注意が必要です。
マイグレーション実行中にエラーが発生したときの対応
マイグレーション実行中にエラーが発生した場合、画面上のエラーメッセージやC:\Users\ユーザ\AppData\Roaming\MySQL\mysqlsh-wb配下のログを確認し、エラー原因を事前に取り除いてください。
その後、自動作成されたOCIオブジェクト(踏み台サーバ/MDS/オブジェクトストレージ)を削除し、最初からやり直すだけでマイグレーションを再実行できます。
ちなみにですが、踏み台サーバは前回自動作成されたものを使いまわすことが可能なので、削除しなくともよいです。
ただし、Migration Assistant は踏み台サーバの再起動は行わないので、踏み台サーバが起動していないと再実行時に「踏み台サーバが起動していないことによるエラー」が発生します。
(下記画面のようなエラーメッセージが出力されます)

マイグレーションを再実行する場合、踏み台サーバは削除するか、もしくは起動していることをきちんと確認しましょう。
まとめ
MySQL HeatWave Migration Assistantを使用してみた所感ですが、
移行元バージョンの確認、OCI CLI構成ファイル設定など事前の設定がきちんと行えていれば、ボタンをクリックするだけで非常に簡単にMySQL HeatWave へリフトアップできるツールだと感じました!
また、Always Freeを使用しなければ、MySQL 8.0以上のバージョンは特段のエラーもなく簡単に移行できました。
ただし、エラーが発生した場合、ツール画面上に出てくるメッセージだけでは何が原因でエラーが発生したのかがわからないことが多いので、エラー発生時はMySQL Workbenchのログを確認することを推奨します。
今回のブログが皆様のお役に立てば幸いです。
皆様も是非とも使ってみてください!


