📚

RDSのDBメンテナンスについて

2023/05/30に公開

内容

らくがき記事、RDSでダウンタイムなしの24-365構成ってどうすればと思い書いている記事です。
とりあえずはRDSでメンテナンスやアップデート処理が走る時に、サービスダウンするのか否かを整理した資料となります。

RDS(MySQL)の整理

機能概要

  • 最大 64 TiB のデータベースサイズをサポート
  • 汎用インスタンスクラス、メモリ最適化インスタンスクラス、およびバースト可能パフォーマンスインスタンスクラスをサポート
  • 自動バックアップとポイントインタイムリカバリをサポート。
  • 単一のリージョン内または 5 つのリードレプリカのクロスリージョン内で、インスタンスごとに最大 15 個のリードレプリカをサポート

可用性と耐久性

3種類のオプションが選択可能

単一DBインスタンス

スタンバイインスタンスのない単一の DB インスタンスを作成します。

マルチAZ DBインスタンス

別のアベイラビリティーゾーンに 1 つのスタンバイ DB インスタンスを持つプライマリ DB インスタンスを作成します。マルチ AZ DB インスタンスを使用すると可用性が向上しますが、スタンバイ DB インスタンスでは読み取りワークロードの接続がサポートされません。

マルチAZ DBクラスター

3 つの DB インスタンスを持つ DB クラスターを作成します。各 DB インスタンスは別のアベイラビリティーゾーンにあります。マルチ AZ DB クラスターには、1 つのプライマリ DB インスタンスと 2 つの読み取り可能なスタンバイ DB インスタンスがあります。マルチ AZ DB クラスターを使用すると、可用性が向上し、読み取りワークロードの容量が増加し、レイテンシーが減少します。

スケーラビリティ

各 DB インスタンスに最大 15 個のリードレプリカを追加できます。

マルチAZ配置とリードレプリカの用途の違い

https://aws.amazon.com/jp/rds/features/read-replicas/

マルチ AZ 配置 リードレプリカ
目的 高可用性 スケーラビリティ
同期 同期レプリケーション 非同期レプリケーション
活性、非活性 プライマリ(マスタ)のみがアクティブ、スタンバイはインアクティブ すべてのリードレプリカにアクセス可能で、読み込みのスケーリングに使用可能
バックアップ 自動バックアップはスタンバイから取得されます。 デフォルトではバックアップは構成されない
アベイラビリティーゾーン 1 つのリージョン内に常に 2 つ以上のアベイラビリティーゾーンを展開 アベイラビリティーゾーン内、AZ 間、またはリージョン間に配置可能
バージョンアップ データベースエンジンのバージョンアップグレードはプライマリで実施 データベースエンジンのバージョンアップグレードは、ソースインスタンスから独立しています
フェイルオーバー スタンバイへの自動フェイルオーバー 手動でスタンドアロンのデータベースインスタンスに昇格できます

メンテナンスの種類

ハードウェアのメンテナンス

説明

  • メンテナンスのスケジュール通知がEメールでユーザーに送付
  • 単一DBインスタンスが対象の場合、メンテナンス期間は利用不可
  • マルチAZでマスタインスタンスが対象の場合、自動フェイルオーバーするまで利用不可
  • マルチAZでスタンバインスタンスが対象の場合、影響なく利用可能

フェイルオーバー図

対応方法

  • マスタインスタンスがメンテナンス対象の場合に事前に手動フェイルオーバーすることは可能
  • メンテナンスウィンドウで手動フェイルオーバーするのが理想

OS のメンテナンス

説明

  • メンテナンスウィンドウにメンテナンススケジュールが通知される
  • OSメンテナンスを延期することは可能であるが、無制限ではない
  • 最初にスタンバイインスタンスにOSメンテナンスが行われる
  • その後、フェイルオーバーしてマスタインスタンスにOSメンテナンスが行われる

対応方法

  • 影響度合が少ないメンテナンスウィンドウでOSメンテナスを行う

DB エンジンのメンテナンス

説明

  • マルチAZ配置でも、マスタ・スタンバイインスタンスの両方が同時にアップグレードされる
  • エンジンメンテナンスが終わるまでダウンタイムが発生する

対応方法

緊急メンテナンス

説明

  • 上記以外でも通知なく緊急メンテナンスが発生することがある認識

メンテナンスアクションの通知を受け取る

https://repost.aws/ja/knowledge-center/rds-maintenance-window
1.Amazon Simple Notification Service (Amazon SNS) トピックを作成して、パーソナルヘルスダッシュボードから通知を受信します。
2.Amazon CloudWatch Events ルールを作成して、アカウントの RDS リソースに関連する AWS Health イベントの通知を受け取ります。
3.Amazon RDS イベント通知を使用して、メンテナンスカテゴリのインスタンスイベントの通知を受け取ります。Amazon RDS イベント通知をサブスクライブすることもできます。

今後に向けて

  • RDSだけではダウンタイムを軽減することは出来ても、ゼロには出来ない
  • 非同期処理でSQSにメッセージを取り込み、ダウンタイムを受け入れる構成が必要
  • オンライン処理でWrite、Readのトラフィックでダウンタイムが許されない構成って出来るんかな。。。

資料

Amazon RDS リードレプリカ
必要な Amazon RDS メンテナンスの実行時におけるダウンタイムを最小限に抑えるにはどうすればよいですか?
Amazon RDS のメンテナンスウィンドウについて知っておくべきことは何ですか?

Discussion