クラウド工房 Powered by Amazon Web Services

  • 03-3342-9620
  • 受付時間 9:00~18:00 定休日:土日祝

クラウド工房 Powered by Amazon Web Services

menu
9:00~18:00(平日)

RDS for Oracleのバックアップ検討中の人注目!(②RDSのバックアップとリカバリ)

今回は、「Oracle+AWS」の環境がハードウェア・OS・ミドルウェアリソースなしで(BYOLは要ライセンス)、スペックも伸縮可能且つ、短時間でセットアップでき、作業後は即時削除可能なAmazon RDS (以下RDS)サービスのバックアップとリカバリについて記載します。前回はバックアップについて書きましたので、今回はリカバリ方法について検証します。
自動化バックアップを使用したリカバリ方法は、GUIから「Use Latest Restorable Time(復元可能な最新時刻)」か「Use Custom Restore Time(復元可能な特定時刻)」の2通りから選択します。
DBスナップショットを使用したリカバリ方法は、DBスナップショットを取得した時点に復元されます。
例としては、通常は削除しているDBインスタンスを、起動する必要が出てきた時点でバックアップからリストアし起動させることができます。

Amazon RDSでのリカバリ方法について

自動化バックアップからは、復元可能な最新時刻または復元可能な特定時刻を指定してDBインスタンスを起動することができます。バックアップ保持期間で指定した日時分が復元可能な特定時刻の範囲となります。(例:バックアップ保持期間が1日の場合、1日よりも前の日時を指定しても復元はできません。) 復元可能な特定時刻の範囲は、エラーメッセージに表示されます。(下記例の場合は2014年7月16日UTC時刻0:37:03以降の日時を、復元ポイントとして指定する必要があります。)
blog_08_01
 図1:復元可能な特定時刻指定のエラーメッセージ 

DBスナップショット(手動バックアップ)を使用してリカバリをする場合、DBスナップショットを取得した時点にリカバリされます。共通の注意点としては、リストアのソースDBインスタンスである既存のDBインスタンスが存在している場合、同一DBインスタンス名を指定してリストアすることはできません。
blog_08_02
 図2:DBインスタンス名重複のエラーメッセージ

RDS ではデフォルトでアーカイブログ運用となっており、また5分毎にREDOログスイッチが実行され、更新されたデータがアーカイブログに保存されます。そのため、自動化バックアップを使用した、復元可能な最新時刻は5分前まで(正確にはリストア実行直前のログスイッチが実行されたタイミングまで)になります。
詳細は以下を参照してください。
 

検証で使用する環境と実施する内容

検証で使用する環境を紹介します。AWS上にRDS(Oracle 11gR2)を一つ作成し、検証環境に入っているOracle Client 11gR2から接続します。
blog_08_03
図3:検証環境の構成

・実施する内容
①-1 テストデータ挿入
①-2 自動化バックアップを使用した最新時刻へのリカバリ
①-3 リカバリ結果確認 (今回は①―1~3までを実施)
②-1 テストデータ挿入
②-2 自動化バックアップを使用した特定時刻へのリカバリ
②-3 リカバリ結果確認

③-1 テストデータ挿入
③-2 DBスナップショットを使用したリカバリ(DBインスタンス名変更)
③-3 リカバリ結果確認

④-1 テストデータ挿入
④-2 DBスナップショットを使用したリカバリ(同一DBインスタンス名)
④-3 リカバリ結果確認

以下に検証結果を記載します。 

①-1 テストデータ挿入

(1) 5分毎にテストデータinsert
リストアポイントを確認するために、テストデータをinsertします。

1) テストテーブル作成
以下のコマンドを実行しテストテーブルを作成します。

2) テストデータ挿入
以下のコマンドを実行しテストデータを挿入します。
それぞれ10:25、10:30、10:35に実行します。

~中略~

~中略~

3) テストテーブル削除
この後のリカバリ操作でテストテーブルが復旧出来ているかを確認するため、テストテーブルを削除します。
リカバリされたことを確認するため、以下のコマンドを実行しテストテーブルを削除します。

 

(2) ログスイッチ確認
5分毎にログスイッチが実行されていることを確認します。

1) アラートログから確認
「Instances」画面の最下部の「Logs」ボタンを押下します。
「Recent Events & Logs」タブの最下部付近に「trace/alert_.log」 が表示されていることを
確認し「view」ボタンを押下します。5分毎に以下が表示されていることを確認します。
・Thread 1 advanced to log sequence <ログ番号> (LGWR switch)
・Archived Log entry <番号> added for thread 1 sequence <ログ番号> ID <文字列> dest 1:
blog_08_12
図4:ログスイッチ確認(アラートログ)

2) (参考) v$logから確認
以下のコマンドを実行し5分毎に「STATUS」列の「CURRENT」が循環していることを確認します。
blog_08_13
図5:ログスイッチ確認(v$log) 

 

①-2 自動化バックアップを使用した最新時刻へのリカバリ

(1) 自動化バックアップからリストアを実行
「Instances」画面で「Instance Actions」のプルダウンから「Restore to Point in Time」を押下します。
blog_08_14
図6:自動化バックアップからリストアを実行 

(2) 復旧時刻指定とDBインスタンスパラメータ指定
「Restore DB Instance」画面で最新時刻を指定します。今回は「Use Latest Restorable Time」を指定します。

1. 「Use Latest Restorable Time」にチェックを入れます。

blog_08_15
図7:復旧時刻の指定

2. DBインスタンスのパラメータを設定してリカバリを実行します。
  例として以下のようにDBインスタンスパラメータを指定し、「Launch DB Instance」を押下します。
blog_08_18
図8:DBインスタンスパラメータ指定 

 

①-3 リカバリ結果確認

(1) リカバリ完了確認
「Instances」画面でリストアしたDBインスタンス名の「Status」列が「creating」から「available」に変わることを確認します。
blog_08_19
図9:リカバリ完了確認

blog_08_20
図10:リカバリ完了確認 

(2) リカバリ完了確認(アラートログ)

「Instances」画面の最下部の「Logs」ボタンを押下します。
「Recent Events & Logs」タブの最下部付近に「trace/alert_.log」 が表示されていることを
確認し「view」ボタンを押下します。例として以下のログが表示されていることを確認します。

・ALTER DATABASE OPEN RESETLOGS
・RESETLOGS after incomplete recovery UNTIL CHANGE <SCN番号>
 SCN番号:システム変更番号。OracleDatabaseで使用される変更が行われた論理的な内部タイムスタンプ。 

(3) リカバリ完了確認

リストアしたDBインスタンスに接続し、リストアポイントで指定した時刻まで挿入したデータが復旧していることを確認します。

1) DBインスタンス接続
以下のコマンドを実行し、DBインスタンスへ接続します。(事前にOracle Clientのtnsnames.oraにORCL2の接続情報を追記しています。設定方法はこちらを参照。)

例として以下のようにリストアしたDBインスタンスに接続できることを確認します
blog_08_22
図11:DBインスタンス接続確認 

2) データの確認
以下のコマンドを実行し、データを確認します。

以下のようにテーブルが復旧していることが確認できます。今回は10:35過ぎにリストアを行っていますので約5分前の10:30までデータが復旧し、10:35以降の更新処理が反映されていないことが確認できます。
blog_08_24
図12:データの確認

以上が、自動化バックアップを使用した最新時刻へのリカバリ検証になります。約5分前へのリカバリが可能であることが確認できました。次回は自動化バックアップを使用した特定時刻へのリカバリとDBスナップショットを使用したリカバリを検証します。

以上

  • このエントリーをはてなブックマークに追加
クラウド工房管理者

クラウド工房管理者


ニュース&ブログ

トピックス

∧