この記事はAWS その2 Advent Calendar 2020 12日目の記事となります。
社内勉強会でRDSメンテナンスに必要な知識や具体例をまとめた資料について、ブログ記事にしてみました。
2年間のRDS運用経験を元に、最低限これだけは知って欲しいことをまとめてあります。
はじめに
この記事は、RDSを1度も運用したことがないエンジニアの方を対象にしております。
AWSサポートから通知される、定型的なRDSメンテナンスの対応方法についてまとめてあります。
RDSのおさらい
RDSとは
RDSとはフルマネージドなリレーショナルデータベースサービスです。
MySQL、MariaDB、PostgreSQL、Oracle、Microsoft SQL Server等を数クリックで起動することができます。
フルマネージドだと何か嬉しいの?
オンプレミスやEC2上に構築する場合と比較した責任範囲は以下の通りです。
※[Blackbelt]20180425_AWS-BlackBelt_RDSより引用
フルマネージド化により、DBのインストール自体が不要となり、パッチ適用やバックアップ、アップグレード等の仕組みがAWSから提供されるので、ユーザ側の運用負荷が軽減されます。またDBのホスト先はAWSの責任範囲となるため、ウィルス対策やIDS/IPS等のセキュリティ対策がユーザ側で不要となります。
RDSのデメリットって何かある?
大部分の責任範囲がAWSであるため、いくつかトレードオフがあります。
よく質問されますが、RDSの場合はDBをホストしているOSにログインすることができません。
またRDS対象外のDBもありますので、そういった場合はオンプレかEC2で構築となります。
※[Blackbelt]20180425_AWS-BlackBelt_RDSより引用
DBエンジン
DBエンジンとは、データベースを操作する際の基礎となる部品のことです。
以下、AWS公式ドキュメントからのDBエンジンに関する引用です。
各 DB インスタンスでは、DB エンジンが実行されます。Amazon RDS で現在サポートされる DB エンジンは、MySQL、MariaDB、PostgreSQL、Oracle、および Microsoft SQL Server です。
各 DB エンジンには、独自のサポートされている機能があり、DB エンジンの各バージョンに固有の機能が含まれている可能性があります。
さらに、各 DB エンジンは、DB パラメータグループに一連のパラメータを保有し、これにより管理するデータベースの動作を制御します。
オプショングループ
DBエンジンに紐づく、セキュリティ強化や追加機能を有効にする設定です。TimeZoneを設定したり、OracleであればStatspackというパフォーマンス統計レポートを生成する機能を追加できます。新しい DB インスタンスごとに空のデフォルトオプショングループが用意されます。
※デフォルトオプショングループは変更不可
パラメータグループ
DBエンジンに紐づく、データベースサービスのコンフィグ(パラメーター)を管理する設定です。ジョブ最大数や、I/O操作で読み込むブロックの最大数等の、チューニング関連で利用することができます。DBパラメータグループを指定せずにDBインスタンスを作成すると、DBエンジン毎のデフォルトDBパラメータグループを使用します。
※デフォルトパラメータグループは変更不可
RDSメンテナンス
RDSは運用に必要な仕組みはAWSから提供されますが、それらを設定・実行するのはユーザとなります。そのためAWSサポートからメンテナンス通知が来た場合には、ユーザが主体となって対応する必要があります。
メンテナンス時の注意事項
RDSメンテナンスの多くは、RDS再起動が必要になります。
Web3層(Web、AP、DB)で構築されているシステムであれば、APで使用されるDBと通信するアプリケーションを事前に停止することで、ユーザ操作によるDBアクセスを停止し、余計なエラーを抑止するようにしましょう。
よくあるメンテナンスの具体例
1. DBインスタンスのハードウェアメンテナンス
タイトルどおりDBインスタンスのハードウェアメンテナンスとなります。
RDSがシングルAZだと約数分間、マルチAZだと約1分間の利用をできなくなる場合があります。
ユーザ側の操作はメンテナンスのタイミングを即時実行か、次のメンテナンスウィンドウに決めるだけで、ハードウェアメンテナンス自体はAWS側でよしなにやってくれます。
2. DBインスタンスのOSアップデート
勘違いしやすいのですが、対象はDBをホストしているDBインスタンスのOSとなります。そのためDBのバージョン等に影響は有りません。
RDSがシングルAZだと約10分間、マルチAZだとは約1~2分間の利用をできなくなる場合があります。
ユーザ側の操作はメンテナンスのタイミングを即時実行か、次のメンテナンスウィンドウに決めるだけで、OSアップデート自体はAWS側でよしなにやってくれます。
3. DBバージョンアップグレード
DBのEOLに伴うメジャーバージョンのアップグレードとなります。
まず真っ先にしなければならないのは、アップグレード先のバージョン調査です。
DBを利用しているアプリケーションがサポートするバージョンが存在するかが重要となリます。
アップグレード先のバージョンが決まったら、オプショングループとパラメータグループの準備です。
オプショングループとパラメータグループはDBエンジンのメジャーバージョンに依存しているため、アップグレードに伴い新規グループを作成する必要があります。またデフォルトグループから変更された項目はAWS CLI等で事前に調査して、同様のパラメータに変更しておきましょう。
アップグレードに必要な時間や動作確認を事前検証するために、スナップショットからRDSを復元し検証しておくことをオススメします。
参考
まとめ
とりあえずこれさえ知っておけばRDSを運用し続けられるだろう、という内容についてまとめてみました。
皆さんがRDSメンテナンスを対応する時に、少しでも助けになれば幸いです。