MySQL 8.0 → 8.4 LTS アップグレード (in-place)
MySQLレベル: 中級所要時間: 60~120 分 (データサイズによる)インストール済みの MySQL 8.0 を同じサーバー上で (in-place) 8.4 LTS にアップグレードします: 単一サーバー、source + レプリカ (先にレプリカ、最後に source)、または InnoDB Cluster (Router → Shell → メタデータ → secondary を 1 台ずつ → 最後に primary)。各サーバーでの util.checkForServerUpgrade による事前チェック、8.4 で削除された変数とデフォルトで無効になった mysql_native_password への対処、コールドコピーによる切り戻しポイント、検証、8.0 への切り戻し runbook を含みます。ダウングレードはサポートされないため、切り戻しの唯一の手段はアップグレード前のコピーです。新しいサーバーへ移行する (dump/load) 場合は、論理バックアップガイドの「別サーバーへの移行」モードを使用してください。
構成: サーバー 1 台、source + レプリカ、または InnoDB Cluster (3 台以上のメンバー + MySQL Router サーバー)
開始前の確認
- サーバーが MySQL 8.0 の最新マイナーリリース (8.0.4x) で、公式 MySQL リポジトリからインストールされていること。8.0 から 8.4 への直接アップグレードはサポートされますが、5.7 から 8.4 への直接アップグレードはサポートされません (先に 8.0 へ)。
- … にデータディレクトリ + binlog のサイズ分の空き容量があること (コールドコピー用)。
- 直近の成功したバックアップ (XtraBackup 8.0 または mysqldump) とリストアテストがあること。アップグレード後は XtraBackup 8.4 に切り替える必要があります (8.0 版は 8.4 サーバーをバックアップできません)。
- アプリケーションとクライアントドライバー (JDBC、PHP mysqlnd、Python…) の MySQL 8.4 と caching_sha2_password への対応をテスト環境で確認済みであること。
- メンテナンスウィンドウが承認されていること…。レプリカを 1 台ずつアップグレードするため読み取りトラフィックの処理能力が下がる場合があり、source のアップグレード中は書き込みが停止します…。
- source の binlog 保持期間がレプリカのアップグレード時間より長いこと (停止中のレプリカがまだ必要とする binlog が削除されてはいけません)。
- クラスタが正常であること: 全メンバーが ONLINE、single-primary モード、フォームの最初のメンバーが現在の primary。RECOVERING のメンバーがある場合や、ステータスが OK_PARTIAL / OK_NO_TOLERANCE の場合はアップグレードを開始しないでください。
- クラスタ管理アカウント … がポート … で全メンバーに接続でき、パスワードがわかっていること (MySQL Shell は接続のたびに入力を求めます)。
- Router サーバーで、MySQL Router が公式 MySQL リポジトリからインストールされ、systemd サービス (mysqlrouter) として動作していること。アプリケーションのトラフィックが複数の Router を経由する場合、Router は 1 台ずつアップグレードします。
- アプリケーションが Router 経由でのみ接続していること (メンバー名に直接接続するアプリケーションは、primary ロールが変わると書き込めなくなります)。
ガイドのフェーズ
- 事前チェック — 現在の状態 · 8.4 のリポジトリを追加し、MySQL Shell 8.4 をインストールする · Upgrade Checker を実行する · 構成ファイルで削除された変数を検索する · mysql_native_password のアカウントを移行する
- InnoDB Cluster の事前チェック — クラスタの状態と Router を記録する · メタデータのアップグレードが必要か確認する (dryRun)
- メタデータのアップグレード — dba.upgradeMetadata() を実行する
- primary 切り替えの準備 — secondary が 8.4 で ONLINE であることを確認する
- InnoDB Cluster の最終確認 — クラスタの状態を拡張表示で確認する · primary ロールを最初のメンバーに戻す
- アップグレード後 — レプリケーションを確認する (…) · XtraBackup を 8.4 に切り替え、新しいフルバックアップを取得する · mysql_native_password のアカウントを移行する (恒久対応) · 切り戻し用コピーを削除するタイミング
- 切り戻し (8.0 に戻す) — 切り戻し: 8.4 を停止し、データディレクトリを退避する · 切り戻し: 8.4 を停止し、データディレクトリを退避する · 切り戻し: 8.0 のソフトウェアに戻す · 切り戻し: 8.0 のソフトウェアに戻す · 切り戻し: コールドコピーを戻す · 切り戻し: コールドコピーを戻す …