今回はAWS RDSを利用する上で知っておかないといけない「メンテナンス」について説明します。
RDSとは
Amazon RDSとは「Amazon Relational Database Service」の略で、データベースを使えるマネージドサービスです。サービスの分類としてはPaaSに該当します。マネージドサービスですから、RDSの利用者は「データベース」のことだけを考えればよいサービスです。具体的に言うと、データベースが導入されているOS等の下位のレイヤーを意識する必要がありません。
RDSは、現時点以下6つのDBMSを選択できます。
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- Oracle データベース
- SQL Server
ここにない他のデータベース(例えばIBM社DB2等)をAWSで利用したい場合は、マネージドサービスではなく、EC2インスタンスにデータベースを構築する等の方法で利用することになります。そうなると、下位のレイヤーのOSのバージョンアップ等は自身で行う必要が出てきます。
メンテナンスとは
前述の通り、利用者はデータベースが動いている基盤(OSやハードウェア)を意識する必要がないのですが、これはAWS側が意識してくれているためです。当たり前ですが、OSにはバージョンアップやセキュリティパッチ等が存在します。これに対応していかないと、脆弱性のあるシステムになってしまいます。で、この作業をAWSがやってくれます。
リンク:DBインスタンスのメンテナンス
OSのバージョンアップは活性対応できないものが多くあります。活性対応とは、稼働状態のままパッチ等を適用することで、例えば再起動等を伴う場合、活性対応は出来ません(OSがダウンしているのにデータベースは稼働出来ませんね)。
AWSに限らず、クラウドサービスを利用する場合には、SLA(サービスレベルアグリーメント)を確認する必要があります。RDSのSLAは以下です。
RDSのSLA
RDSのSLAは以下の通りです。また、これはマルチAZ前提です。(シングルAZの場合適用されません)
月間稼働率 サービスクレジットの割合 99.0%以上99.95%未満 10% 95.0%以上99.0%未満 25% 95.0%未満 100%
サービスクレジットとは、割引券のようなもので、10%であれば利用料の10%分の割引券を意味します。月間稼働率が95.0%とはどういうことかですが、1カ月は「44,640分」(以下①)あります。そのうちの95%ですから、「42,408分」(以下②)稼働していた(=サービス提供されていた)ということになります。言い換えると、差し引いた「2,232分(≒1日半)」はサービスが停止した場合に100%のサービスクレジットになる、ということです。
① 1カ月 = 31日 × 24時間 = 31日 × 24時間 × 60分 = 44,640分
② 44,640分 × 95.0% = 42,408分
③ 44,640分 ー 42,408分 = 2,232分 = 37時間12分
逆に99.95%未満にならない限りはサービスクレジットはありません。つまり①の0.05%である約22分は停止しても何も保証されない(文句も言えない)ことになります。
メンテナンスウィンドウとは
メンテナンスウィンドウという考え方があります。メンテナンスする時間帯を定義するものです。これは自身で決めることもできますし、AWSの自由に決めてもらうこともできます。通常、特定の時間帯(土曜の夜間とか)にメンテナンスしたいケースが多いと思いますので、自身で決めるのがよいでしょう。
すべての DB インスタンスには週次のメンテナンスウィンドウがあり、その期間内にシステムの変更が適用されます。メンテナンスウィンドウは、変更やソフトウェアのパッチ適用がリクエストされた場合や必要となった場合に、いつそれを実行するかを制御できます。メンテナンスイベントを特定の週に予定した場合、そのイベントはユーザーが指定した 30 分のメンテナンスウィンドウ中に開始されます。ほとんどのメンテナンスイベントは 30 分のメンテナンスウィンドウ中に完了しますが、大規模なメンテナンスイベントは 30 分以上かかる場合があります。
30 分のメンテナンスウィンドウは、リージョンごとに決められた 8 時間の中でランダムに選択されます。DB インスタンスの作成時にメンテナンスウィンドウを指定しないと、Amazon RDS でランダムに選択された曜日に 30 分のメンテナンスウィンドウが割り当てられます。
メンテナンス通知
重要な通知はメール通知があります。例えば、今回このような通知が来ました。
件名
[要対応] Amazon RDS for MySQL データベースインスタンスで、新しいオペレーティングシステムの更新が利用可能です
本文(抜粋)
この通知は、Amazon RDS(Amazon RDS)データベース(DB)インスタンスを 1 つ以上有しているお客様に、重要なセキュリティ修正を含む新しいオペレーティングシステム (OS) アップグレードが利用可能になったため、配信しております。該当する、AP-NORTHEAST-1 リージョン内で影響を受けるインスタンスは、以下の通りです。
***(RDS名)***これは必須のパッチであり、データベース機能には影響しません。2022 年 1 月 31 日より前に OS をアップグレードしない場合、Amazon RDS は 2022 年 1 月 31 日から 2022 年 3 月 30 日の間の定期メンテナンス期間中に OS を自動的にアップグレードします。2022 年 3 月 30 日以降、古い OS バージョンで動作している Amazon RDS for MySQL DB インスタンスは、メンテナンスウィンドウ中であるかどうかに問わず、最新の OS バージョンにアップグレードされます。OS アップグレードでは、Amazon RDS の DB インスタンスの DB バージョンやハードウェアタイプは変更されません。
通常の OS セキュリティ更新の対象となる DB エンジンのバージョンとインスタンスタイプのリストについては、Amazon RDS ユーザーガイドを参照してください [1]。Amazon RDS が OS の自動アップグレードを開始した後のデータベースワークロードの中断を避けるために、2022 年 1 月 31 日までに保留中のメンテナンスアクションを、ご都合の宜しい時に、適用することを強くお勧めします。
この通知は以下のように読み取れます。
- 適用必須であること
- 1月31日までは「自身の都合のいいタイミングで適用できること」
- 1月31日~3月29日までは「メンテナンスウィンドウで適用ができること」
- 3月30日以降も古い場合は「AWSの都合で勝手に適用されること」
つまり、3月30日を超えてしまうと、勝手にメンテナンス適用のためにRDSがダウンしてしまいます。ですから、1月31日までの間に都合のいい時間帯を作って自身でコントロールすることが望ましいですね。(AWSも「強くお勧めします」と言っていますし)
適用方法
適用手順
マネジメントコンソールのRDSからデータベースを選択後、以下の画面に対象のメンテナンスが表示されます(すみません、適用前のキャプチャ取り忘れてしまったので、保留中のメンテナンスが「0」になってしまっています…適用前のメンテナンスは赤枠内に表示されます。)
適用したいメンテナンスをチェックして、「今すぐ適用」「次のメンテナンスウィンドウで適用」のいずれかのボタンを押します。次のメンテナンスウィンドウで適用とした場合は、いつ適用されるかが表示されます。
適用時のログ
左メニューからイベントを選択すると確認できます。(DBインスタンスをシャットダウンしていることも分かります)。私のケースでは6分ほどで適用が終わっています。
AWSに限らず、クラウドサービスを利用する上で避けては通れないサービス側のメンテナンス。よく理解して、キチンと対応したいですね。
コメント