
技術Topics
SCSKのOracle on AWSに関する技術情報をご紹介いたします。
SCSKのOracle on AWSに関する技術情報をご紹介いたします。
Amazon Relational Database Service (Amazon RDS)には、Multi―AZ配置というサービスがあります。
これは常にスタンバイ用のデータベースを用意しておき、マスターデータベースが何らかの原因でサービスが継続できなくなった場合、即座にスタンバイデータベースを起動させてサービスを継続させるという可用性を向上させるサービスです。
Multi-AZの名前の通り、同一リージョン内の、別のアベイラビリティゾーンにスタンバイデータベースが配置されます。
マスターデータベースからスタンバイデータベースに切り替える際の通信元からの接続先をDNSの制御でスタンバイデータベースに切り替えたり、スタンバイデータベースをマスターデータベースに変更するなどの一連の処理を「フェイルオーバー」と呼びます。
本稿ではAmazon RDS for Oracle ( Multi-AZ 配置)のフェイルオーバーの際に必要な時間を検証してまとめます。
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配置 はい(今回の検証に必要)
リージョン 東京
今回の検証の前提として、データベースに格納されるデータ量は新規構築直後となり、またトランザクションは発生しない状態で行います。
Oracle データベースクライアントツールの一つTNSPINGコマンドで、Oracle Netネットワーク上のサービスのリスナーに正常に到達できるかどうかを判断します。
TNSPINGコマンドと併せて以下の簡易PowershellスクリプトでOracleリスナーに到達できるかどうか1秒間隔で時刻を追跡します。
Powershellスクリプトサンプル
上記のPowershellを実行した際の出力結果のサンプル
手動で20回強制フェイルオーバーを実行した結果を以下のグラフにしました。
グラフの通り、フェイルオーバーが発生してからリスナーに正常に到達できるまでに必要な時間はバラバラですが、今回の検証結果を見ると最短で48秒かかり、平均で必要な時間は1分14秒となっています。
2019年08月17日現在、AWS公式のドキュメントには、「Amazon Aurora以外のデータベースエンジンでは、フェイルオーバーが完了するまで1~2分間要する」との記載があります。
https://aws.amazon.com/jp/rds/details/multi-az/
今回、最長でも1分48秒でしたので、この値に収まっていることが確認できました。
今回の検証では、データベースの作成直後かつトランザクションが発生しない状態でデータベースサービスが提供できない時間を計りました。
2分以上かかるケースはありませんでしたが、この時間が早いか遅いかはビジネスの要件によって回答が異なるかと思います。
AWS公式のドキュメントには、「大規模なトランザクションや長期にわたる復旧プロセスによって、フェイルオーバー時間が増加する場合があります」との記載があります。
次回は大規模なトランザクションが発生している状態で、実際のフェイルオーバーまでどれぐらい時間がかかるかを確認していきます。
このサイトをシェアする
ツイート