メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

高可用性 (マルチ AZ)

Amazon RDS は、マルチ AZ 配置を使用して DB インスタンスの高可用性およびフェイルオーバーサポートを提供します。Amazon RDS は複数の異なるテクノロジーを使用してフェイルオーバーサポートを提供します。Oracle、PostgreSQL、MySQL、MariaDB DB インスタンスのマルチ AZ 配置では、Amazon のフェイルオーバーテクノロジーが使用されます。SQL Server DB インスタンスでは SQL Server ミラーリングが使用されます。Amazon Aurora インスタンスでは、1 つのリージョン内の複数のアベイラビリティーゾーン間で DB クラスター内のデータのコピーが保存されます。これは、DB クラスター内のインスタンスが複数のアベイラビリティーゾーンにまたがっていてもいなくても同じです。Amazon Aurora の詳細については、「Amazon RDS での Aurora」を参照してください。

Amazon RDS のマルチ AZ 配置では、異なるアベイラビリティーゾーンに同期スタンバイレプリカが自動的にプロビジョニングされて維持されます。プライマリ DB インスタンスは複数のアベイラビリティゾーンにまたがって、スタンバイレプリカに同期してレプリケートされます。これにより、データの冗長性を提供し、I/O のフリーズを防ぎ、システムバックアップの間のレイテンシーの急上昇を最小限に抑えることができます。高可用性を備えた DB インスタンスを実行すると、計画されたシステムメンテナンス中の可用性が向上し、DB インスタンスの障害とアベイラビリティゾーンの中断からデータベースを保護できます。アベイラビリティーゾーンの詳細については、「リージョンとアベイラビリティーゾーン」を参照してください。

注記

読み取り専用シナリオでは、高可用性機能が拡張ソリューションとならない点に注意してください。スタンバイレプリカを使用して読み取りトラフィックを処理することはできません。読み取り専用トラフィックを処理するには、リードレプリカを使用する必要があります。詳細については、「PostgreSQL、MySQL、および MariaDB リードレプリカの使用」を参照してください。

 高可用性シナリオ

RDS コンソールを使用すると、DB インスタンスを作成する際にマルチ AZ を指定するだけでマルチ AZ 配置を作成できます。コンソールを使用して、DB インスタンスを変更し、マルチ AZ オプションを指定することにより、既存の DB インスタンスをマルチ AZ 配置に変換することもできます。RDS コンソールには、セカンダリ AZ というスタンバイレプリカのアベイラビリティゾーンが表示されます。

CLI を使用してマルチ AZ 配置を指定することもできます。AWS CLI describe-db-instances コマンドを使用するか、または Amazon RDS API DescribeDBInstances アクションを使用して、スタンバイレプリカのアベイラビリティーゾーン (セカンダリ AZ と呼ばれます) を表示します。

RDS コンソールには、スタンバイレプリカのアベイラビリティーゾーン (セカンダリ AZ と呼ばれます) が表示されます。または、AWS CLI describe-db-instances コマンドか Amazon RDS API DescribeDBInstances アクションを使用してセカンダリ AZ を探すこともできます。

マルチ AZ 配置を使用する DB インスタンスでは、同期データレプリケーションが発生するため、シングル AZ 配置より書き込みとコミットのレイテンシーが増加する可能性があります。AWS はアベイラビリティゾーン間でのネットワーク接続レイテンシーが低くなるように設計されていますが、配置がスタンバイレプリカにフェイルオーバーした場合はレイテンシーが変化する可能性があります。本稼働ワークロードの場合、高速で一貫したパフォーマンスを実現できるようにプロビジョンド IOPS 用に最適化されたプロビジョンド IOPS および DB インスタンスクラス (m1.large 以上) を使用することをお勧めします。

マルチ AZ 配置になるように DB インスタンスを変更する

シングル AZ 配置の DB インスタンスをマルチ AZ 配置に変更する場合 (エンジンは SQL Server または Amazon Aurora 以外)、Amazon RDS では複数のステップを踏みます。まず、Amazon RDS は配置から、プライマリ DB インスタンスのスナップショットを撮ります。その後、他のアベイラビリティーゾーンにスナップショットを復元します。Amazon RDS その後、プライマリ DB インスタンスと新しいインスタンスとの間に同期レプリケーションが設定されます。このアクションにより、シングル AZ からマルチ AZ への変換時のダウンタイムを回避できますが、マルチ AZ への最初の変換時にパフォーマンスに大きな影響が出ることがあります。この影響は、大容量の DB インスタンスや書き込み重視の DB インスタンスでより大きくなります。

変更が完了したら、Amazon RDS はイベント (RDS-EVENT-0025) をトリガーします。このイベントにより、プロセスが完了したことが示されます。Amazon RDS events; をモニタリングできます。イベントの詳細については、「Amazon RDS イベント通知の使用」を参照してください。

Amazon RDS のフェイルオーバープロセス

DB インスタンスの計画的な機能停止または計画外の機能停止が発生すると、マルチ AZ を有効にした場合は、Amazon RDS により別のアベイラビリティゾーン内のスタンバイレプリカに自動的に切り替えられます。フェイルオーバーが完了するまでにかかる時間は、データベースアクティビティや、プライマリ DB インスタンスが使用できなくなった時点の他の条件によって異なります。フェイルオーバー時間は通常 60 ~ 120 秒です。ただし、大規模なトランザクションや長期にわたる復旧プロセスによって、フェイルオーバー時間が増加する場合があります。フェイルオーバーが完了してから、新しいアベイラビリティゾーンが RDS コンソール UI に反映されるまでさらに時間がかかる場合があります。

フェイルオーバーメカニズムでは、スタンバイ DB インスタンスをポイントするように DB インスタンスの DNS レコードが自動的に変更されます。したがって、DB インスタンスへの既存の接続の再確立が必要になります。Java DNS キャッシュメカニズムがどのように機能するかによって、JVM 環境の再設定が必要になる場合があります。フェイルオーバーの際に DNS 値をキャッシュする Java アプリケーションの管理方法の詳細については、「AWS SDK for Java」を参照してください。

Amazon RDS はフェイルオーバーを自動的に処理するため、管理者が操作しなくても可能な限りすみやかにデータベース操作を再開できます。次のいずれかの条件が発生した場合、プライマリ DB インスタンスがスタンバイレプリカに自動的に切り替えられます。

  • アベイラビリティーゾーンの機能停止

  • プライマリ DB インスタンスのエラー

  • DB インスタンスのサーバータイプ変更

  • DB インスタンスのオペレーティングシステムでソフトウェアのパッチ適用中

  • DB インスタンスの手動フェイルオーバーが [Reboot with failover] を使用して開始された

マルチ AZ DB インスタンスがフェイルオーバーされたかどうかを判断する方法は複数あります。

  • DB イベントサブスクリプションは、フェイルオーバーが開始されたことを E メールまたは SMS で通知するように設定できます。イベントの詳細については、「Amazon RDS イベント通知の使用」を参照してください。

  • Amazon RDS コンソールまたは API を使用して、DB イベントを表示できます。

  • Amazon RDS コンソールおよび API を通じてマルチ AZ 配置の現在の状態を表示できます。

フェイルオーバーへの応答、復旧時間の短縮、Amazon RDS のその他のベストプラクティスについては、「Amazon RDS のベストプラクティス」を参照してください。

関連トピック