こんにちは。最近、図らずもポスグレをよく触っているインフラエンジニアの尾谷です。
少し前の話ですが、11月16日〜18日あたりに AWS から RDS を利用している複数のアカウント宛てに以下のタイトルで通知が届きました。
[要対応] Amazon RDS for MySQL データベースインスタンスで、新しいオペレーティングシステムの更新が利用可能です
これまで見たことがない通知 (僕だけかもですが。。) だったので、適用も含めて確認してみました。
要は OS のアップグレード通知でした
今回の通知は、RDS で稼働するデータベースエンジン (MySQL、Oracle など) のアップグレードではなく、その下で稼働する OS のアップグレードでした。
よく届くデータベースエンジンのアップグレードとは異なり、データベース機能には影響しない とのこと。
RDS は EC2 と異なり、OS 領域も AWS が責任を持つためこうしたアップグレードが行われるのですね。
DB インスタンスのメンテナンスについては公式ドキュメントに記載がありました。
通知はイベントログで確認できました
AWS マネジメントコンソールのベルマークをクリックして、イベントログを確認すると通知が確認できました。
よく届く通知だとベルマークに印が表示されるため若干、違和感がありました。
RDS Security notification というタイトルでした。
アップグレードしなかった場合はどうなるのか?
1/31 までにアップグレードしないと、それ以降のメンテナンスウインドウ中に更新されてしまうようです。
データベースの仕様変更はありませんが再起動を伴うため、サービス断が発生します。
サービスインしている商用環境だと事前のメンテナンス通知や計画が必要ですね。
2022 年 1 月 31 日より前に OS をアップグレードしない場合、Amazon RDS は 2022 年 1 月 31 日から 2022 年 3 月 30 日の間の定期メンテナンス期間中に OS を自動的にアップグレードします。2022 年 3 月 30 日以降、古い OS バージョンで動作している Amazon RDS for MySQL DB インスタンスは、メンテナンスウィンドウ中であるかどうかに問わず、最新の OS バージョンにアップグレードされます。
アップグレードの対象はドキュメントを英語にして確認
アップグレードの対象は以下サイトに記載があります。なお、日本語だとリストが表示されず、(2021/11/29 現在) English なら表示されました。
例えば、こちらリージョンでは t2 インスタンスと t3 インスタンスで MySQLが稼働しています。
ドキュメントのリストを確認すると「5.7.33 and higher」と記載があるので対象となります。
以下の例だと、t2 インスタンスで MySQL が稼働していますが、
エンジンバージョンが 5.6.40 のため、対象外です。
エンジンバージョンをアップグレードすると対象になってしまうので、エンジンバージョンのアップグレードを検討する際は、OS のアップグレードも考慮が必要です。
アップグレードの手順は?
繰り返しになりますが、こちら のドキュメントの通り、RDS コンソールで確認・アップグレードが実施できます。
[メンテナンスとバックアップ] タブを開くと、保留中のメンテナンスに system-update があります。
アップグレードしてみました!
まずアップグレードをスケジューリングした場合の挙動を確認してみました。
上の画像にある「New Operating System ...」のオプションボタンをクリックすると「次のメンテナンスウインドウで適用」が押せるようになります。
「次のメンテナンスウインドウで適用」をクリックしても、何も変わらない場合、ページを再読み込みすると、下の画像のように「次のウインドウ」に表記が変わります。
OS アップグレードはどれくらい時間がかかるのでしょうか。シングル AZ 環境の db.t2.small インスタンスを OS アップグレードしてみました。
MySQL のエンジンバージョンは、5.7.33 でした。
アップグレードを実行している間は、ステータスが メンテナンス
になり、メンテナンスが 進行中
になっていました。
17:12:53 にパッチ適用が始まり、17:20:38 に完了しました。7.5 分程度かかったようです。
[cloudshell-user@ip-10-0-0-60 ~]$ aws rds describe-events --source-identifier test-rds --source-type db-instance --duration 10000 --output text | egrep -v "Backing up DB|Finished DB Instance backup|EVENTCATEGORIES" EVENTS 2021-11-24T08:12:53.496000+00:00 Applying off-line patches to DB instance arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance EVENTS 2021-11-24T08:14:43.437000+00:00 DB instance shutdown arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance EVENTS 2021-11-24T08:19:13.502000+00:00 DB instance restarted arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance EVENTS 2021-11-24T08:20:12.894000+00:00 Finished applying off-line patches to DB instance arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance EVENTS 2021-11-24T08:20:25.360000+00:00 DB instance shutdown arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance EVENTS 2021-11-24T08:20:38.541000+00:00 DB instance restarted arn:aws:rds:ap-northeast-1:XXXXXXXXXXXX:db:test-rds test-rds db-instance [cloudshell-user@ip-10-0-0-60 ~]$
※ 過負荷の場合などは更に時間がかかると想定されます。あくまで参考値としてご覧ください。
まとめ
公式ドキュメントに記載があります通り、Amazon RDS は、Amazon RDS リソースのメンテナンスを定期的に実行します。通常、メンテナンスには DB インスタンスの基盤となるオペレーティングシステム (OS) やデータベースエンジンのバージョンの更新が伴います。 通常、オペレーティングシステムの更新はセキュリティの問題に関連しているため、できるだけ早急に適用する必要があります。
お使いのアカウントでも対象の RDS があるかも知れませんので、最後までお読みくださった方は是非この機会に AWS マネジメントコンソールを覗いてみてください!