この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
AWSから"Amazon RDS for MySQL"バージョン5.7のサポート終了の通知がきました。
メジャーバージョン5.7のRDS標準サポート終了は2023年12月です。
サポート終了までに8.0へアップグレードする必要があったので、テストインスタンスを作成してアップグレードしてみました。
今回の記事は、Amazon RDSのMySQLエンジンバージョンを8.0にアップグレードする方法です。
※本番アップグレード対応はブルー/グリーンデプロイメント戦略を利用することを推奨しております。
Amazon RDS for MySQLアップグレード
サポートが終了する"Amazon RDS for MySQLバージョン5.7"のバージョンアップグレードを行います。今回の記事は事前検証なので、本番作業時にはさらに多くの手順が必要になります。くわしくはAWS公式ドキュメントで確認ください。
■Amazon RDS for MySQLアップグレード手順
今回紹介するアップグレード作業は、アップグレード対象データベースを複製し、バージョン8.0へのアップグレードが失敗しないか確認する作業です。手順は以下の通りです。
- スナップショット(バックアップ)の取得
- スナップショットからテストインスタンスを作成
- テストインスタンスをアップグレード
●スナップショット取得
まずは対象RDSのスナップショットを取得します。本番作業でも事前にバックアップを取得しましょう。
Amazon RDSのDBインスタンスは停止せずにスナップショットを取得することが可能ですが、ピーク時間やミッションクリティカルな時間帯に実行するのは避けたほうが安全です。
↓Amazon RDSコンソール画面にログインします。
↓Amazon RDSコンソール画面のナビゲーションペインから[データベース]をクリックします。
↓[データベース]の一覧からアップグレード対象のインスタンスを選択します。
↓[アクション]メニューから[スナップショットの取得]を選択し、現在の状態を保存します。
↓[スナップショット名]を入力し、[スナップショットの取得]をクリックします。
↓[正常に作成されました]と表示されたらスナップショットの取得は完了です。サイズによると思いますが、10分ほどかかりました。
●スナップショットから復元
つぎにアップグレード検証用のテストインスタンスを用意します。先ほど取得したスナップショットから復元し、対象データベースと同様のスペックのテストインスタンスを作成していきましょう。
↓該当のスナップショットを選択し、[アクション]から[スナップショットの復元]をクリックします。
↓対象データベースと同じパラメータを入力していきます。
↓入力が完了したら、[DBインスタンスを復元]をクリックします。
↓[ステータス]が[利用可能]になれば完了です。
MySQLバージョン8.0へアップグレードするためのテストインスタンスが準備できました。
●MySQL8.0アップグレード
準備が整いましたので、Amazon RDS for MySQLエンジンバージョン5.7のDBインスタンスをMySQLエンジンバージョン8.0にアップグレードしていきます。
ちなみに、MySQL5.7からMySQL8.0へのアップグレードに対してのみ"事前チェック"が行われますので、もしなにかあってもロールバックされます。
MySQL 5.7 から 8.0 へのアップグレードをスタートすると、Amazon RDS では、これらの非互換性を検出するために自動的に事前チェックが実行されます。(AWS公式ドキュメントより)
↓テストインスタンスを選択し、[変更]をクリックします。
↓[DBエンジンバージョン]の項目で[8.0.xx]を選択します。
↓他に変更箇所がなければ、[続行]をクリックしてください。オプショングループやパラメータグループは8.0に合わせたデフォルトのものが自動で設定されます。
↓変更確認画面でエンジンバージョンを確認しましょう。問題なければ、[変更のスケジュール]で「すぐに適用」を選択し、[DBインスタンスを変更]をクリックしましょう。
↓[ステータス]が[アップグレード]に変わります。
↓10分しないくらいで[利用可能]に変わりました。
↓ログを確認してみても、失敗していなそうですね。
肝心のバージョンの確認画面をスクショするのを忘れていました。。。すいません。。。
今回のアップグレード確認作業は以上です。
■サポート終了日はいつ?
AWSの公式ドキュメントを確認すると、MySQLメジャーバージョン5.7のRDS標準サポート終了日は2023年12月です。https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html
しかし、AWSから来た通知連絡は「2023年10月以降はセキュリティパッチが提供されません。そのため、Amazon RDSは2024年2月29日にMySQLメジャーバージョン5.7の標準サポートを終了します。」とあります。
2023年12月なのか、2024年2月29日なのか?どのみちアップグレード対応は必要かと思いますので、事前に準備して余裕をもってアップグレード対応しておきたいですね。
■MySQLアップグレードが間に合わない場合は?
データベースのメジャー エンジンバージョンがRDSの標準サポート終了日までにアップグレード作業が間に合わない場合はどうすればいいでしょうか?
調べてみると、AWSの公式ドキュメントに「Amazon RDS 延長サポートの使用」がありました。
追加料金を支払うことで、RDSの標準サポート終了日を過ぎてもメジャー エンジン バージョンでデータベースを実行し続けることができます。
延長サポートは、RDSの標準サポート終了日より前にリリースされた最後のマイナー バージョンでのみ利用できるようです。また、延長料金がかかりますが、標準サポート終了日から最大 3 年間利用できますね。
サポート延長の方法に関しては、
特定のバージョンの RDS の標準サポートが終了する前に、そのバージョンの延長サポートを有効にする必要があります。
延長サポートは、2023 年 12 月に AWS マネジメントコンソールまたは Amazon RDS API を通じて利用可能になります。
とありますので、RDSのダッシュボードをこまめに確認するのがいいかもしれません。
まとめ: Amazon RDSのMySQLエンジンバージョンを8.0にアップグレードしてみた
データベースのメジャーアップデートは本当に怖いですよね。しかし、AWSの場合は、MySQL5.7からMySQL8.0へのアップグレードに対してのみ事前チェックが行われます。
スナップショットからテストインスタンスを作成し、失敗ロールバックがないか確認するだけでも十分な検証になるかもしれませんね。
参考リンク:AWS 公式ドキュメント
↓ほかの協栄情報メンバーもRDSに関する記事を公開しています。ぜひ参考にしてみてください。
■PオンプレミスからAWS RDSへMSSQLの移行方法(zhangying)
https://cloud5.jp/migrate-mssql-with-dumpfile/
■Amazon RDSのDBインスタンスクラスを変更してみる(齊藤弘樹)
https://cloud5.jp/saitou-rds-changeclass/
■EC2からRDSにcsvファイルをアップロードしてデータテーブルを作成してみた(kioka)
https://cloud5.jp/import-csv-to-rds-kioka/
■DMSでOracle SE2 12c(EC2)からOracle SE2 19c(RDS)への移行手順(小林 剛)
https://cloud5.jp/dms-from-oracle-se2-12c-to-oracle-se2-19c/