はじめに
Azureより、MySQL 8.0系の標準サポートが2026年12月31日に終了するアナウンスがされています。
2027年1月1日以降は延長サポート料金が発生するため、MySQL 8.4へのアップグレードが必要となりました。
本記事では、検証用DBサーバーを使って事前検証を行い、確立した以下の手順を紹介します。
- アップグレード前のバックアップ手順
- 切り戻し手順(これが最重要)
- メジャーバージョンアップの実施手順
- 検証で発生したエラーと対処法
検証環境
| 項目 | 内容 |
|---|---|
| サービス | Azure Database for MySQL フレキシブル サーバー |
| バージョン(作業前) | MySQL 8.0.21 |
| バージョン(作業後) | MySQL 8.4 |
| 操作環境 | Windows PowerShell + Azure CLI |
メジャーバージョンアップは不可逆操作です。
アップグレード完了後にダウングレードはできません。必ず切り戻し手順を確立してから実施してください。
STEP 1:切り戻し手順の確立(アップグレード前に必ず実施)
切り戻しは「アップグレード前のバックアップから新サーバーを復元する」方法で行います。
先に切り戻しができることを確認してからアップグレードに進むのが鉄則です。
1-1. 現在のMySQLバージョン確認
az mysql flexible-server show \
--resource-group <リソースグループ名> \
--name <サーバー名> \
--query "version"
PowerShellの場合は \ ではなくバッククォート(`)で行継続するか、1行にまとめて実行してください。
\ を使うと unrecognized arguments エラーになります。(詳細はAppendix参照)
実行結果例:
"8.0.21"
1-2. オンデマンドバックアップの取得
アップグレード直前に必ず実行します。これが切り戻しの起点となります。
az mysql flexible-server backup create `
--resource-group <リソースグループ名> `
--name <サーバー名> `
--backup-name "before-upgrade-backup"
取得確認:
az mysql flexible-server backup list `
--resource-group <リソースグループ名> `
--name <サーバー名>
以下の内容が返ってくれば成功です:
[
{
"backupType": "FULL",
"completedTime": "2026-XX-XXT00:00:00+00:00",
"name": "before-upgrade-backup",
"source": "Customer",
...
}
]
確認ポイント:
-
"backupType": "FULL"であること -
"source": "Customer"であること -
completedTimeが直近の時刻であること
ポータルからも実行可能です。対象サーバーの左メニュー「バックアップと復元」→「Backup」ボタンから実行できます。
1-3. バックアップからの復元検証(切り戻し手順)
実際に復元できることを事前に確認しておきます。
パブリックアクセスの場合:
$start = Get-Date
az mysql flexible-server restore `
--resource-group <リソースグループ名> `
--name <復元後のサーバー名> `
--source-server <元のサーバー名> `
--restore-time "<バックアップのcompletedTime>"
$end = Get-Date
Write-Host "所要時間: $(($end - $start).TotalMinutes) 分"
VNet統合(プライベートアクセス)の場合:
az mysql flexible-server restore `
--resource-group <リソースグループ名> `
--name <復元後のサーバー名> `
--source-server <元のサーバー名> `
--restore-time "<バックアップのcompletedTime>" `
--subnet <サブネットのリソースID> `
--private-dns-zone <プライベートDNSゾーン名>
検証結果:
- 復元所要時間:約5分
- 復元後のバージョン:元サーバーと同一(8.0.21)
- エンドポイント:新サーバー名に連動して変わる
切り戻し時の注意事項
復元後に以下の対応が必要です:
| 対応内容 | 詳細 |
|---|---|
| 接続先の切り替え | アプリの接続先を復元サーバーのエンドポイントに変更する |
| VNet統合の場合 | 復元時に同じサブネット・DNSゾーンを指定することでネットワーク設定が引き継がれる |
| 旧サーバーの削除 | 動作確認後に削除する |
サービス停止タイミングについて
復元サーバー作成中(約5分)は本番DBは稼働継続します。
アプリの接続先を切り替えた瞬間に瞬断が発生します。
STEP 2:アップグレードの実施
2-1. アップグレード前の最終確認チェックリスト
- バックアップが取得済みであること(STEP 1-2 完了)
- 切り戻し手順が確立されていること(STEP 1-3 確認済み)
- アプリケーション担当チームの互換性確認が完了していること
- メンテナンス時間帯であること
2-2. SKUの確認(重要)
バースト可能SKU(B1ms等)ではメジャーバージョンアップが実行できません。
汎用目的(General Purpose)以上のSKUが必要です。
SKU確認コマンド:
az mysql flexible-server show `
--resource-group <リソースグループ名> `
--name <サーバー名> `
--query "sku"
バースト可能SKUの場合は事前にSKUを変更します:
az mysql flexible-server update `
--resource-group <リソースグループ名> `
--name <サーバー名> `
--tier GeneralPurpose `
--sku-name Standard_D2ds_v4
SKU変更時も再起動が発生しダウンタイムとなります。
アップグレード完了後に元のSKUに戻すことができます。
2-3. アップグレードの実行
CLIからのアップグレードは現時点では正常に動作しません(検証済み)。
--version 8.4 は無効な値としてエラー、--version 8 も別エラーになります。
Azureポータルから実行してください。(詳細はAppendix参照)
時間計測開始(PowerShell):
$start = Get-Date
Write-Host "アップグレード開始: $start"
ポータル操作手順:
- 対象サーバーの概要画面を開く
- 上部メニューの「アップグレード」をクリック
- 右パネルの注意事項を確認する
- 「アップグレードする MySQL バージョン」で「8.4」を選択
- チェックボックスにチェックを入れる
- 「開始」をクリック
- デプロイ完了画面が表示されるまで待機
時間計測終了(PowerShell):
$end = Get-Date
Write-Host "所要時間: $(($end - $start).TotalMinutes) 分"
検証結果:アップグレード所要時間 約6分
2-4. アップグレード完了の確認
az mysql flexible-server show `
--resource-group <リソースグループ名> `
--name <サーバー名> `
--query "version"
期待結果:
"8.4"
ポータルでも確認できます:
- 概要画面の「MySQL バージョン」が
8.4になっていること - サポート終了の警告バナーが消えていること
作業時間まとめ
| 作業内容 | 所要時間 |
|---|---|
| オンデマンドバックアップ取得 | 約1分以内 |
| バックアップからの復元(切り戻し) | 約5分 |
| メジャーバージョンアップ | 約6分 |
| 合計(最大見積もり) | 約15分 |
Appendix:発生したエラーと対処法
エラー1:PowerShellでの行継続エラー
発生事象:
az mysql flexible-server show \
--resource-group xxx \
→ "unrecognized arguments: \" エラー
原因: PowerShellの行継続文字は \ ではなくバッククォート(`)のため
対処法: コマンドを1行にまとめて実行する
az mysql flexible-server show --resource-group <リソースグループ名> --name <サーバー名> --query "version"
エラー2:CLIからのアップグレードエラー(--version 8.4)
発生事象:
az mysql flexible-server upgrade ... --version 8.4
→ "'8.4' is not a valid value for '--version'. Allowed values: 8."
原因: Azure CLIの --version オプションは "8.4" 形式をサポートしていない
対処法: --version 8 を試みたが別エラーが発生(エラー3参照)→ ポータルから実行する
エラー3:CLIからのアップグレードエラー(--version 8)
発生事象:
az mysql flexible-server upgrade ... --version 8
→ "The version to upgrade to must be greater than the current version."
原因: --version 8 は現在のバージョン(8.0.21)より大きいとみなされない
対処法: Azureポータルからアップグレードを実行する(ポータルでは 8.4 を選択可能)
エラー4:バースト可能SKUでのアップグレードエラー
発生事象:
az mysql flexible-server upgrade ... --version 8
→ "Major version update is not supported for the Burstable pricing tier."
原因: サーバーがバースト可能SKU(B1ms)であったため
対処法: SKUを汎用目的に変更してからアップグレードを実行する
az mysql flexible-server update `
--resource-group <リソースグループ名> `
--name <サーバー名> `
--tier GeneralPurpose `
--sku-name Standard_D2ds_v4
まとめ
- 切り戻し手順の確立が最優先:アップグレード前に復元できることを必ず確認する
- CLIではアップグレードできない:ポータルから実行する
- バースト可能SKUは事前にSKU変更が必要:汎用目的以上が必要
- 作業時間は余裕を持って約15分:ダウンタイム4時間許容であれば十分
2026年12月31日のサポート終了前に、余裕を持って対応することをお勧めします。