SCSKのOracle on AWSソリューション

2019/08/20

Amazon RDS for Oracle -フェイルオーバーの時間について ...

Amazon RDS for Oracle -フェイルオーバーの時間について

 

 

■はじめに

Amazon Relational Database Service (Amazon RDS)には、Multi―AZ配置というサービスがあります。

これは常にスタンバイ用のデータベースを用意しておき、マスターデータベースが何らかの原因でサービスが継続できなくなった場合、即座にスタンバイデータベースを起動させてサービスを継続させるという可用性を向上させるサービスです。

Multi-AZの名前の通り、同一リージョン内の、別のアベイラビリティゾーンにスタンバイデータベースが配置されます。

マスターデータベースからスタンバイデータベースに切り替える際の通信元からの接続先をDNSの制御でスタンバイデータベースに切り替えたり、スタンバイデータベースをマスターデータベースに変更するなどの一連の処理を「フェイルオーバー」と呼びます。

本稿ではAmazon RDS for Oracle ( Multi-AZ 配置)のフェイルオーバーの際に必要な時間を検証してまとめます。

 

 

■Amazon RDS for Oracle構成

AWSサービス名  Amazon RDS for Oracle

エディション  Oracle Standard Edition Two

バージョン  Oracle 12.1.0.2v17

ライセンス  license-included

テンプレート  本番稼働用

DBインスタンスサイズ  db.m5.xlarge( vCPUs:4 RAM:16GiB EBS:3500Mbps)

ストレージタイプ  プロビジョンド IOPS(SSD)

ストレージ割り当て  1000GiB

プロビジョン  IOPS 20000

マルチAZ配置  はい(今回の検証に必要)

リージョン  東京

 

 

■検証時データベースの状態

今回の検証の前提として、データベースに格納されるデータ量は新規構築直後となり、またトランザクションは発生しない状態で行います。

 

 

■フェイルオーバーの検証手段・ツール

TNSPING

Oracle データベースクライアントツールの一つTNSPINGコマンドで、Oracle Netネットワーク上のサービスのリスナーに正常に到達できるかどうかを判断します。

 

Powershell

TNSPINGコマンドと併せて以下の簡易PowershellスクリプトでOracleリスナーに到達できるかどうか1秒間隔で時刻を追跡します。

 

Powershellスクリプトサンプル

3-1.png


 

上記のPowershellを実行した際の出力結果のサンプル

3-2.png


 

 

■検証結果

手動で20回強制フェイルオーバーを実行した結果を以下のグラフにしました。

3-3.PNG


グラフの通り、フェイルオーバーが発生してからリスナーに正常に到達できるまでに必要な時間はバラバラですが、今回の検証結果を見ると最短で48秒かかり、平均で必要な時間は1分14秒となっています。

 

 

■まとめ

2019年08月17日現在、AWS公式のドキュメントには、「Amazon Aurora以外のデータベースエンジンでは、フェイルオーバーが完了するまで1~2分間要する」との記載があります。

https://aws.amazon.com/jp/rds/details/multi-az/

今回、最長でも1分48秒でしたので、この値に収まっていることが確認できました。

今回の検証では、データベースの作成直後かつトランザクションが発生しない状態でデータベースサービスが提供できない時間を計りました。

2分以上かかるケースはありませんでしたが、この時間が早いか遅いかはビジネスの要件によって回答が異なるかと思います。

AWS公式のドキュメントには、「大規模なトランザクションや長期にわたる復旧プロセスによって、フェイルオーバー時間が増加する場合があります」との記載があります。

次回は大規模なトランザクションが発生している状態で、実際のフェイルオーバーまでどれぐらい時間がかかるかを確認していきます。

リストへ戻る

技術Topics

このサイトをシェアする