- 公開日
- 最終更新日
【Aurora】手動でAurora MySQLのマイナーバージョンアップ
この記事を共有する
目次
はじめに
今回は、Amazon Aurora MySQLに対して、マイナーバージョンアップ(v3.08.0 ⇒ v3.10.0)を手動で実施する手順をご紹介します。
背景・課題
RDSやAuroraのマイナーバージョンアップは、「メンテナンスウィンドウ」内で自動適用することができます。
しかし、実際のプロジェクトでは以下のような要件が発生することがあります。
- 「更新直後に、お客様側でアプリケーションの動作確認(UAT)を行いたい」
- 「エンジニアが待機している日中の時間帯に安全に実施したい」
深夜や早朝に実行される自動メンテナンスでは、更新直後の即座な確認や、万が一のトラブル対応が難しくなります。
そこで今回は、任意のタイミングでお客様が動作確認を行えるように、メンテナンスウィンドウを待たず、CLIを用いて即時適用する手順を採用します。
前提条件・構成
今回の作業環境と前提条件は以下の通りです。
システム構成
- 対象: Aurora MySQL (Cluster ID: DataBaseName)
- リージョン: ap-northeast-1 (東京)
- ツール: AWS CloudShell
バージョン情報
- 現状: 8.0.mysql_aurora.3.08.0
- 目標: 8.0.mysql_aurora.3.10.0
前提
- AWSマネジメントコンソールにログイン可能であること
- 上記Aurora MySQLが作成済みであること
手順1:事前確認とバックアップ
作業前に現在のステータスを確認し、手動スナップショットを取得してバックアップを確保します。
1. 現在のバージョンを確認
CloudShellを起動し、以下のコマンドで現在のエンジンバージョンを確認します。
aws rds describe-db-clusters \
--region ap-northeast-1 \
--db-cluster-identifier DataBaseName \
--query 'DBClusters[0].[DBClusterIdentifier,Engine,EngineVersion,Status]' \
--output table
■ 実行結果例
--------------------------------------------------------------------------
| DescribeDBClusters |
+-----------------+--------------+-------------------------+-------------+
| DataBaseName | aurora-mysql | 8.0.mysql_aurora.3.08.0 | available |
+-----------------+--------------+-------------------------+-------------+
2. バックアップ(スナップショット)を取得
万が一に備え、手動スナップショットを取得します。
aws rds create-db-cluster-snapshot \
--region ap-northeast-1 \
--db-cluster-snapshot-identifier DataBaseName-backup-YYYYMMDD \
--db-cluster-identifier DataBaseName
取得状況を確認し、Statusが available になるまで待機します。
aws rds describe-db-cluster-snapshots \
--region ap-northeast-1 \
--db-cluster-snapshot-identifier DataBaseName-backup-YYYYMMDD \
--query 'DBClusterSnapshots[0].[DBClusterSnapshotIdentifier,Status,SnapshotCreateTime]' \
--output table
手順2:マイナーバージョンアップの実行
バックアップ完了後、実際にアップグレードコマンドを実行します。
今回は「メンテナンスウィンドウを待たずに今すぐ実行する」という要件のため—apply-immediately オプションを使用します。
aws rds modify-db-cluster \
--region ap-northeast-1 \
--db-cluster-identifier DataBaseName \
--engine-version 8.0.mysql_aurora.3.10.0 \
--apply-immediately
■ ポイント
—apply-immediately を付与することで、次回のメンテナンスウィンドウを待たずに即座に更新処理が開始されます。
実行後、コンソール画面でもステータスが「Upgrading(更新中)」に変わったことを確認します。
1. 進捗の監視
アップグレード中は時間がかかるため、watch コマンドでステータスを継続監視します。
watch -n 15 "aws rds describe-db-clusters \
--region ap-northeast-1 \
--db-cluster-identifier DataBaseName \
--query 'DBClusters[0].[Status,EngineVersion]' \
--output table"
ステータスが available に戻れば完了です。
手順3:検証・結果
1. バージョン確認
作業後のバージョンが意図通り 3.10.0 になっているか確認します。
aws rds describe-db-clusters \
--region ap-northeast-1 \
--db-cluster-identifier DataBaseName \
--query 'DBClusters[0].[DBClusterIdentifier,Engine,EngineVersion,Status]' \
--output table
■ 実行結果
--------------------------------------------------------------------------
| DescribeDBClusters |
+-----------------+--------------+-------------------------+-------------+
| DataBaseName | aurora-mysql | 8.0.mysql_aurora.3.10.0 | available |
+-----------------+--------------+-------------------------+-------------+
無事、バージョンアップされていることが確認できました。
2. ダウンタイム(ZDP)の確認
今回のアップグレードにおけるダウンタイムや挙動をイベントログから確認します。
aws rds describe-events \
--region ap-northeast-1 \
--source-identifier DataBaseName \
--source-type db-cluster \
--duration 1440 \
--output table
■ 実行結果(抜粋)
| Message | Attempt to upgrade the database instance '...' with zero downtime finished. The process took 19502 ms... |
ログを確認すると “with zero downtime finished” と出力されており、ゼロダウンタイムパッチ(ZDP)が適用されたことが分かります。
実際の処理時間は約 19.5秒 (19502 ms) でした。
まとめ
今回は、手動でAurora MySQLのマイナーバージョンアップを実施しました。
メンテナンスウィンドウを待てないケースや、有人監視下での確実なアップデートが必要な際の参考にしてみてください。
■ ポイント
- —apply-immediately を活用することで、お客様が検証可能なタイミングに合わせて柔軟にバージョンアップを実施できます
- CLIを使用することで、スナップショット取得から更新まで定型化してミスなく実行できます
- イベントログを確認することで、ダウンタイムの実績値も正確に把握可能です
現在利用しているバージョンのサポート期限は以下より確認いただけます。
Amazon Aurora MySQL のリリースカレンダー :
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.release-calendars.html
この記事は私が書きました
橋本 歩
記事一覧AWSと犬が好きです。