MOOBON
Migration ・ AWS / RDS / MySQL

RDS for MySQL 8.0 の延長サポートは割高標準サポート終了前に Blue/Green で 8.4 LTS へ

2026年6月4日 公開読了 約 12 分MOOBON 技術ブログ

RDS for MySQL 8.0 は 2026 年 7 月 31 日で標準サポートが終了し、 8 月 1 日から Extended Support(延長サポート)課金が始まります。これが 割高で見落とされがちです。 標準サポート内に上げ切ればゼロにできます。自社の本番 RDS 3 台を Blue/Green Deployments で 8.4 LTS(8.4.9)へ ダウンタイム 1 分未満で移行した記録と、移行で見落としやすい 3 つのポイントを一次情報でまとめます。

はじめに ─ RDS 延長サポート料金(Extended Support)は高い

ある日、AWS から 「あなたの AWS アカウントには RDS for MySQL 8.0 のインスタンスがあります」という主旨のメールが届きます。要約すると、MySQL 8.0 は 2026 年 4 月にコミュニティ EOL を迎え、RDS としても 2026 年 7 月 31 日で標準サポートが終了する、それ以降は Extended Support に自動で移行されて vCPU 時間単位の追加課金が発生する、というアナウンスです。

このメールで一番やってはいけないのは、「そのうち対応すればいい」と先送りにすることです。延命料(Extended Support)は 通常のインスタンス料金・ストレージ料金とは別枠の純増で、しかも小さな額ではありません。

延命料は「本体の利用料」を何倍も上回ります(東京・試算)ここが見落としやすい点です。たとえば db.t3.micro(2 vCPU)は本体が 1 時間 約 $0.025 ですが、延命料は 2 vCPU × $0.12 = $0.24/時 ── 本体の 10 倍近くが乗ります(月額なら本体 約 ¥3,000 に対し延命料 約 ¥28,000 / 月 +$175)。通常のインスタンス料金・ストレージ料金とは別枠の純増です。さらに台数ぶん積み上がります。3 台運用していれば、合計で月 +$526(約 ¥84,000)。3 年放置すれば約 $25,200(約 ¥400 万)の純増です(計算根拠は後述のコスト章)。おまけに Multi-AZ で冗長化していれば、スタンバイ機ぶんも課金されて“倍付け”。本番でちゃんと HA を組んでいる人ほど重くのしかかります。しかも 課金は 8/1 から即始まります ──「サポートが切れてもしばらくは平気だろう」という猶予はありません。気づくのは翌月の請求書、ということになりがちです。「そのうちやればいい」では期限を忘れて 8/1 を跨ぎます。EOL 対応は締切のある作業として、標準サポート期間内(7/31 まで)に前倒しで片付けるのが正解です。

MOOBON でも、自社で運用する本番 RDS(MySQL 8.0.44)が 3 台該当しました。だからこそ期限に余裕をもって、これらを 8.4 LTS へ上げ切ることにします。

バージョンアップの概要

本記事で実施した内容を、先に概要としてまとめます。詳細は以降の各章で扱います。

アップデートする
バージョン
MySQL 8.0.44 → 8.4.9。本番系は LTS の 8.4 を採用(コミュニティサポートが 2032 年 4 月までと長い。9.x は短サイクルで更新される Innovation Release のため本番には不向き)。8.0.44 からの経路 8.4.3〜8.4.9 のうち、最新マイナーの 8.4.9 を選択。
アップデート方法Blue/Green Deployments。AWS マネージドで一時的に論理レプリケーションを張り、アップグレード済みの複製(Green)を用意してから本番を切り替える方式。in-place の major upgrade(数十分の停止)を避けられる。
ダウンタイムスイッチオーバー時の瞬断のみ(通常 1 分未満)。エンドポイント名は維持されるためアプリ側の接続先変更は不要。完全な無停止ではなく、切替の瞬間に既存コネクションが切れて再接続が走る。

Blue/Green Deployments とは

RDS のバージョンアップとして、設定変更で通常どおり DB エンジンバージョンを更新すると、インスタンスを書き換えるために 停止時間が 10 分〜30 分程度かかってしまい、一度変更すると引き返すことができません。

Blue/Green とは、ダウンタイムを最低限(1 分以内)に抑える方式であり、手順は以下の通りです。

① 複製現行(Blue)のリードレプリカとして Green を作成。まず同じ 8.0 で複製し、Blue → Green のレプリケーションを張る。
② 8.4 化その Green だけを 8.4.9 へアップグレード。8.4 化した後も Green は Blue(8.0)から追従し続ける(下位→上位のレプリケーション)。
③ 検証本番に影響を与えずに Green を検証(バージョン・認証・レプリ遅延・代表クエリ)。
④ 切替レプリが追いついた状態で スイッチオーバー。Green が本番に昇格し、エンドポイント名は維持される(アプリの接続先変更は不要)。
「無停止」ではなく「瞬断」: スイッチオーバーは完全な無停止ではなく、レプリ遅延ゼロを確認 → 書き込みを一瞬止める → エンドポイントを付け替え、という処理が入ります。十数分かかっていたものが数十秒〜1 分以内の瞬断に縮む、というのが効果です。
豆知識: なぜ Blue = 現行・Green = 新環境なのか
そもそも Blue/Green は、ソフトウェアのリリース技法(Continuous Delivery の文脈で 2010 年前後に普及)が由来です。Blue / Green という色自体は、どちらが本命かを示さない中立的なラベルとして選ばれたもの。そして「Blue = 現行(本番)、Green = 新しく用意する環境」という割り当ては技術的な必然ではなく「慣習」で、多くのツールがこう割り当て、AWS RDS もこの定義を採用しています。

事前準備 ─ binlog_format・8.4 用パラメータグループ・認証

① binlog_format を ROW に

Blue/Green はレプリケーション前提のため、binlog_format = ROW が必須です。RDS のエンジンデフォルトは MIXED なので、カスタム DB パラメータグループで ROW に明示設定します。この変更は動的パラメータなので、RDS インスタンスは再起動しませんのでご安心ください。

aws rds modify-db-parameter-group \
  --db-parameter-group-name <your-pg> \
  --parameters "ParameterName=binlog_format,ParameterValue=ROW,ApplyMethod=immediate"

# 反映後、各インスタンスで実効値を確認
#   SHOW VARIABLES LIKE 'binlog_format';  -> ROW

② バージョンアップ用(8.4)のパラメータグループを用意

Green(セカンダリ)は 8.4 family のパラメータグループを使うので、新規に作成して binlog_format=ROW を入れておきます。Blue/Green 作成時に --target-db-parameter-group-name で指定します。

③ 認証(mysql_native_password)は触らなくてよい

「8.4 で mysql_native_password が無効になる」という話を警戒していましたが、RDS for MySQL 8.4 のパラメータグループでは mysql_native_password が ON 固定(変更不可)であることを実環境で確認しました。素の MySQL 8.4 は OFF 既定ですが、RDS は互換性のため ON にしています。

実地で分かったこと: RDS のパラメータグループでは mysql_native_password=ON に固定されていました。そのため、これまで mysql_native 認証で作成された DB ユーザーは、バージョンアップ(8.4)後もそのまま接続できました

④ 保護スナップショットを取る

なにか問題が発生したときのために、念のため切替作業前に手動スナップショットを取得しておきます。

本作業 ─ Blue/Green の作成と Green の検証

事前準備が済んだら、Blue/Green デプロイを作成して Green(セカンダリ)を構築し、本番に影響を与えないまま検証します。

① Blue/Green デプロイを作成する

ソース(Blue)の ARN、ターゲットのエンジンバージョン(8.4.9)、8.4 用パラメータグループを指定して作成します。

aws rds create-blue-green-deployment \
  --blue-green-deployment-name <name>-84-bg \
  --source <source-db-arn> \
  --target-engine-version 8.4.9 \
  --target-db-parameter-group-name <8.4-parameter-group>
RDS コンソールのデータベース一覧。Blue/Green デプロイの下に、プライマリ(Blue)の DB が「利用可能」、セカンダリ(Green)の DB が「変更中」として並んでおり、Green のアップグレードが進行していることが分かる
図: Blue/Green デプロイ作成中の RDS コンソール。Blue(プライマリ)は「利用可能」のまま本番を続ける一方、Green(セカンダリ)は「変更中」 ── 8.4.9 へのアップグレードが進行している状態。

作成リクエストを投げると、上図のような構成が作られます。

  • 枠(一番上):指定した Blue/Green デプロイの名前
  • Blue:元々使っていた現行の RDS(本番)
  • Green:レプリケーションのセカンダリとして起動する、新しいインスタンス
  1. Green のレプリケーションが完了するのを待ちます。
  2. Green のバージョンをアップグレードします(アクセスは Blue に向いているので、本番への影響はありません)。
  3. Green のバックアップが設定され、デプロイ全体のステータスが「利用可能(AVAILABLE)」になります。

レプリケーションの確立とアップグレードを含むため、移行の工程の中で最も時間がかかる箇所です(全体で 20〜40 分程度)。作成中はステータスが「プロビジョニング中」になります。

② Green を検証する(本番に影響なし)

Green が 8.4.9 になって「利用可能」状態になったら、Green のエンドポイントに直接つないで中身を確認します。まだ本番は Blue 側で動いているので、もし問題が見つかっても落ち着いて対処できます。確認したのは次の点です。

  • SELECT VERSION();8.4.9binlog_formatROW
  • 既存ユーザーが native 認証のまま接続できる(8.4 でも RDS は維持。事前準備③参照)
  • 全テーブルが InnoDB(MyISAM が残っていないか)
  • レプリケーション遅延ゼロ(SHOW REPLICA STATUSSeconds_Behind_Source = 0、IO/SQL スレッドが Yes)
  • 主要テーブルの件数が Blue と一致している

スイッチオーバー(セカンダリ→プライマリへ昇格)

Green が 8.4.9 で「利用可能」になり、検証(バージョン・認証・全テーブル InnoDB・レプリ遅延ゼロ・件数一致)が取れたら、スイッチオーバーを実行します。--switchover-timeout でレプリ追従の待ち時間を指定しておくと安全です。

aws rds switchover-blue-green-deployment \
  --blue-green-deployment-identifier <bgd-id> \
  --switchover-timeout 300
# Status: SWITCHOVER_IN_PROGRESS -> SWITCHOVER_COMPLETED
⚠ このコマンドを実行した瞬間に、ダウンタイムが発生します(1 分未満)移行の中で本番に影響が出るのは、ここだけです。AWS が 「レプリ遅延ゼロを確認 → 書き込みを一瞬止める → エンドポイントを Green に付け替え」を行うため、その瞬間に既存のコネクションが切れて再接続が走ります(通常 1 分未満)。エンドポイント名は変わらないので、アプリ側の接続先の変更は不要です。アクセスの少ない時間帯に実行するのが安全です。

切替後は、エンドポイントが新本番(8.4.9)を指します。確認したのは次の点です。

  • SELECT VERSION();8.4.9、エンドポイント名が維持されていること
  • 各アプリが 新DBに接続して応答すること(ログイン・主要画面・代表的な書き込み)
  • スロークエリログ・エラーログに新規異常がないこと。8.4 はオプティマイザの挙動が一部変わるため、重い一覧・検索系のプラン悪化に注意

移行で見落としやすい 3 つのポイント

ここまでが移行の流れです。最後に、Blue/Green で上げる際に 見落としやすいポイントを 3 つだけ補足します。いずれも事前に気づいて対処しておけば問題になりません。

① WordPress などで MyISAM が残っていると、Blue/Green が成立しない
Blue/Green は binlog レプリケーション前提で、非トランザクションの MyISAM は整合性が保証されません。事前に全スキーマのエンジンを確認し、MyISAM があれば ALTER TABLE ... ENGINE=InnoDB で変換しておきます(WordPress は公式にも InnoDB 推奨)。
② カスタムオプショングループだと、メジャーアップの Blue/Green が弾かれる
「default option groups のみ対応」というエラーで作成に失敗します。オプショングループの中身が空なら、デフォルト OG に変更してから作成すれば解決します(オプションが入っている場合は移行先での担保を別途検討)。
③ 削除保護 ON の旧 Blue は、削除に一手間
切替後に残る旧 Blue(<元の名前>-old1)を消すとき、削除保護が ON だとそのまま削除できません。--no-deletion-protection で解除してから削除します。

RDS 延長サポート(Extended Support)料金について再考

バージョンアップしないまま放置すると、Extended Support の追加課金が 「vCPU 時間単位」で乗ります。アジアパシフィック(東京)では Year 1・Year 2 が $0.12 / vCPU・時、Year 3 から $0.24 / vCPU・時(3 年目で倍)。インスタンスタイプは micro 〜 large まで 2 vCPU なので、micro インスタンス 1 台でも、月間 ¥28,000 の延長サポート料金が追加されます。Multi-AZ のスタンバイ機やリードレプリカでも課金対象になるため、さらに倍々になる可能性もあります。

以下は、インスタンスタイプごとの本体の利用料金と、延長サポート料金です。

インスタンスクラスvCPU本体(時 / 月)延長サポート(時 / 月)比率
db.t3.micro2
$0.025 (≈¥4) /時
≈ ¥2,900 /月
$0.24 (≈¥38) /時
≈ ¥28,000 /月
約 9.6 倍
db.t3.small2
$0.05 (≈¥8) /時
≈ ¥5,800 /月
$0.24 (≈¥38) /時
≈ ¥28,000 /月
約 4.8 倍
db.t3.medium2
$0.10 (≈¥16) /時
≈ ¥11,700 /月
$0.24 (≈¥38) /時
≈ ¥28,000 /月
約 2.4 倍
db.t3.large2
$0.20 (≈¥32) /時
≈ ¥23,400 /月
$0.24 (≈¥38) /時
≈ ¥28,000 /月
約 1.2 倍

※ 1 ドル 160 円で計算しています。

弊社の場合 ── 「なにもしていないのに」月 +84,000 円

今回 8.4 へ上げたのは、弊社で運用する 3 台の RDS でした。冗長化(Multi-AZ)構成でもなかったのですが、それでも 単純に 3 台ぶんの延長サポート料金だけで、月 +84,000 円(3 年放置なら約 400 万円)の追加料金になってしまいます。

「なにもしていないのに」です。── いや、なにもしていないからこそ、かかってしまう料金なのです。

こんなことで月 84,000 円もの無駄な出費が出ると思うと、正直、悔しくて眠れません。

標準サポート期間内に 8.4 LTS へ上げ切れば、この追加課金はゼロ。Blue/Green の移行作業自体は、Green インスタンスが一時的に増える分のコスト(移行中の数十分〜数時間)で済みます。延命料と比べれば桁違いに小さい投資です。

※ 単価はリージョン・改定により変動します(上表はアジアパシフィック(東京)のプロビジョンドインスタンス単価ベース)。最新値は RDS for MySQL 料金ページ(延長サポート) でご確認ください。

あとがき

Blue/Green Deployments は、素朴な構成でも本番に近いダウンタイムでメジャーアップグレードを通せる、よくできた仕組みです。ただ本記事で一番お伝えしたいのは移行手順ではなく、RDS の延長サポート料金は割高で、しかも見落とされがちという点です。標準サポートの期限(7/31)までに 8.4 へ上げ切れば、この追加課金はゼロにできます。「いつかやる」で先送りにせず、早めに片付けておくことをおすすめします。

ちなみに、RDS for MySQL 8.4 が利用できるようになったのは 2024 年 11 月 21 日です。それ以前に作られたサービスは 8.0 のまま動いている可能性が高く、今回の標準サポート終了の対象になりやすいので注意が必要です。

特に micro のような小さいインスタンスで、AWS 費用が月 1〜2 万円ほどしかかかっていないようなケースほど、油断してメンテナンスを見落としがちです。延長サポートは本体料金の何倍も乗るので、気づかないうちに請求が 2 倍以上に増えていて、数か月経ってから気づく、ということも十分に起こり得ます。

無駄な料金は払わずに済むに越したことはありません。心当たりのある方は早めに確認を、そして周りで RDS を使っている方にも、ぜひ声をかけて注意喚起していただければと思います。日本のデジタル赤字を少しでも軽減するためにも、こうした費用はしっかり管理していきましょう。

MOOBON では、こうした AWS の保守・移行・コスト最適化を運用の一部としてお引き受けしています。「EOL 通知は来たが、自社の構成で何に気をつければいいか分からない」「停止時間を最小化して上げたい」といった場面で、本記事のような事前の棚卸しから切替・確認まで伴走します。お気軽にご相談ください。

お問い合わせはこちら

FAQ

よくある質問

QBlue/Green Deployments を使えば、本当に「無停止」でメジャーバージョンアップできますか?
A

厳密には「無停止」ではなく、スイッチオーバーの瞬間に既存コネクションが切断されるため、数秒〜十数秒の「切断と再接続」が発生します。AWS のドキュメントでは通常 1 分未満と案内されており、適切に準備すれば 1 リクエスト分が失敗する程度の影響に収まることが多いです。アプリ側のコネクションプールがリトライに対応していれば、エンドユーザーにはほぼ気付かれずに切替を完了できる場合もあります。所要時間は負荷や状態で変動するため、本番に近い環境で実測しておくことを推奨します。

QMySQL 8.4 と 9.x、どちらに上げるべきですか?
A

本番運用なら 8.4 LTS(Long Term Support)を推奨します。8.4 は MySQL として初の LTS シリーズで、コミュニティのサポート期間が 2032 年 4 月までと長く、RDS for MySQL の運用ライフサイクルもこれに準拠して長期化が見込まれます。一方の 9.x は Innovation Release で短サイクルでメジャーが更新される設計のため、本番でメンテナンス頻度を上げたくない運用には不向きです。新機能を検証したい開発環境では 9.x、本番系は 8.4 LTS で揃える、という棲み分けが現実的です。

QBlue/Green Deployments を有効化する条件は何ですか?
A

RDS for MySQL の場合、最低限の条件は (1) backup_retention_period が 1 日以上(自動バックアップ有効)、(2) binlog_format = ROW、(3) サポート対象のエンジンバージョン、の 3 つです。binlog_format はカスタム DB パラメータグループで ROW に明示設定する必要があり、エンジンデフォルトの MIXED のままだと Blue/Green の作成リクエストが拒否されます。加えて、メジャーバージョンアップの Blue/Green では、ソースインスタンスが『デフォルトのオプショングループ』を使っている必要があります(本文のポイント②参照)。

QMySQL 8.4 では mysql_native_password が無効になると聞きました。アプリの改修は必要ですか?
A

素の MySQL 8.4 では mysql_native_password がデフォルト無効ですが、RDS for MySQL 8.4 のパラメータグループでは mysql_native_password が ON 固定(変更不可)になっていることを実環境で確認しました。そのため、native 認証で作成された DB ユーザーは 8.4 化後もそのまま接続でき、アプリ側の改修は不要でした。AWS の事前互換性チェック(PrePatchCompatibility)が出す『mysql_native_password は deprecated』という警告は上流 MySQL 向けの一般案内で、RDS では loose_mysql_native_password=ON を別途設定する必要も手段もありません。なお caching_sha2_password への移行は、将来 native プラグインが削除されるメジャーバージョンへ上げる際に改めて検討すればよい、という整理にしています。

QDB 側を無停止にしても、アプリ側でエラーが出ることはありますか?
A

起こり得ます。Blue/Green は DB のエンジンバージョン切替を無停止に近い形で行う機能で、アプリのクライアントライブラリやクエリ・スキーマの互換性までは面倒を見ません。スイッチオーバー前に、対象 DB へ接続している経路を洗い出し、各アプリの MySQL クライアントライブラリのバージョンを確認しておくことを推奨します。特に 8.4 はオプティマイザの挙動が一部変わるため、重い一覧・検索・レポート系のクエリは切替後にプラン悪化が出ていないか、スロークエリログで確認しておくと安心です。

Qスイッチオーバー後に問題が見つかったら、元に戻せますか?
A

スイッチオーバー直後であれば、旧 Blue 環境が <元の名前>-old1 として残るため、当面はこれを保持しておくことで保険になります。ただし切替後に新 Blue(旧 Green)側で更新された書き込みは旧 Blue には反映されないため、時間が経つほど切り戻しは現実的でなくなります。動作確認が取れたら、旧 Blue と Blue/Green デプロイを削除して二重課金を止める、という流れにしています。切替直前に取得した保護スナップショットは、より深い復元ポイントとして残しておきます。

MOOBONISO/IEC 27001 CertificationIT導入補助金 支援事業者
Copyright © 2026 MOOBON, Inc. All Rights Reserved.
適用規格:ISO/IEC 27001:2022
適用範囲:Web 系システム設計支援 / 自社クラウドサービス開発・運用・保守 / 受託システム開発・運用・保守 / サーバ構築・運用・保守