RDS for Oracle DatabaseのMulti-Azについて考える

このエントリは、
JPOUG Advent Calender 2013(http://www.zusaar.com/event/1687004) の16日目
AWS Advent Calendar 2013 (http://www.zusaar.com/event/1117005) の16日目
のクロスエントリで、JAWS FESTA Kansai 2013のアンカンファレンスで
話し合われた内容を元にしています。


RDSといえば、MySQLになりがちですが、Oracleだって使えます。
そんな中で最も興味深い機能がMulti-Azです。

このエントリでは、RDS for Oracle DatabaseのMulti-Azについて考えていきます。

まずは、公開された情報からの推測してみます。
・エディションの縛りがない(SE1でも使える)ことから、Data Guardではない。

  • 以上-

・・・・公開された情報だけだと推測のしようがないので、
実際にMulti-AZ環境でフェールオーバさせて、アラートログを確認します。

検証はケチってdb.t1.microのSE1(licence-included)を使います。

フェールオーバ前後のアラートログを確認します。

<アラートログ抜粋>
Current log# 2 seq# 12 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_2_8r2sbor6_.log
Tue Dec 03 09:41:13 2013
Archived Log entry 5 added for thread 1 sequence 11 ID 0x4ffec4be dest 1:
Tue Dec 03 09:44:27 2013 <<<<<<<<<<フェールオーバ後の再起動
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Autotune of undo retention is turned on.
IMODE=BR
ILAT =15
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up:
Oracle Database 11g Release 11.2.0.2.0 - 64bit Production.
〜〜〜

Tue Dec 03 09:44:38 2013
alter database open
Beginning crash recovery of 1 threads  <<<<<<<<<<クラッシュリカバリ開始
Started redo scan
Completed redo scan
read 264 KB redo, 45 data blocks need recovery
Started redo application at
Thread 1: logseq 10, block 5
Recovery of Online Redo Log: Thread 1 Group 4 Seq 10 Reading mem 0
Mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_8r2sbtx5_.log
Recovery of Online Redo Log: Thread 1 Group 1 Seq 11 Reading mem 0
Mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_1_8r2sbrg1_.log
Recovery of Online Redo Log: Thread 1 Group 2 Seq 12 Reading mem 0
Mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_2_8r2sbor6_.log
Completed redo application of 0.20MB
Completed crash recovery at       <<<<<<<<<<クラッシュリカバリ完了
Thread 1: logseq 12, block 3, scn 243193
45 data blocks read, 45 data blocks written, 264 redo k-bytes read
LGWR: STARTING ARCH PROCESSES
Tue Dec 03 09:44:39 2013
<ここまで>


アラートログを見る限り、フェールオーバ後、
クラッシュリカバリが実行され、Oracleインスタンスが正常起動しています。
こういったアラートログの見え方がするのは、Active-StandbyのHA構成なのですが、この場合疑問が残ります。


データの同期はどうやっている?
クラッシュリカバリが走っている以上、オンラインRedoが同期されていると考えられ、
オンラインRedoを同期するとなると、以下が考えられます。

・共有ディスク
EBSボリュームはAzをまたぐことはできないので、EBSではないと思われます。
また、NFSiSCSIとした場合、IOPSを保障することは難しいと思われますので、
これもまた違うと思われます。

・フェールオーバ直前にEBSボリュームをコピー
フェールオーバ直前はOracleからのI/Oはとまっている(はず)ので、
ここでEBSスナップショット等を取得し、待機側へのEBSへ反映する。
ただ、このやり方だと、容量が大きい場合フェールオーバの時間が増大することが考えられ、
現実的ではないように思われます。



と、いろいろ考えてみたのですが、結論は出ませんでした。
JAWS FESTA Kansai 2013開催後から2ヶ月程考えているんですが、いい案が浮かばず、、、)

データの同期はこうやってるんじゃない?とか、間違いの指摘などありましたら、
コメントいただければと思います。