0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Database for MySQL 8.0 → 8.4 メジャーバージョンアップ手順と切り戻し手順【検証済み】

0
Posted at

はじめに

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"

ポータル操作手順:

  1. 対象サーバーの概要画面を開く
  2. 上部メニューの「アップグレード」をクリック
  3. 右パネルの注意事項を確認する
  4. 「アップグレードする MySQL バージョン」で「8.4」を選択
  5. チェックボックスにチェックを入れる
  6. 開始」をクリック
  7. デプロイ完了画面が表示されるまで待機

時間計測終了(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日のサポート終了前に、余裕を持って対応することをお勧めします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?