NEWSニュース&ブログ

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

この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。

投稿日:2014/9/25

前回から引き続きAmazon Relational Database Service (以下RDS)のリカバリについて記載しています。
今回はDBスナップショット(手動バックアップ)を使用したリカバリ方法について検証します。
(自動化バックアップとDBスナップショットについてはこちらをご参照ください。)

 

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

検証で使用する環境を紹介します。
AWS上にRDS(Oracle 11gR2)を一つ作成し、検証環境上のOracle Client 11gR2から接続します。

図1:検証環境の構成 ・実施する内容

①テストデータ挿入
②自動化バックアップを使用した最新時刻へのリカバリ
③リカバリ結果確認
⇒①~③はブログ「RDS for Oracleのバックアップ検討中の人注目!(②RDSのバックアップとリカバリ)」を参照してください。
④テストデータ挿入
⑤自動化バックアップを使用した特定時刻へのリカバリ
⑥リカバリ結果確認
⇒④~⑥はブログ「RDS for Oracleのバックアップ検討中の人注目!(③RDSのバックアップとリカバリ)」を参照してください。

今回は以下の⑦~⑨を実施!!!
⑦テストデータ確認
⑧DBスナップショットを使用したリカバリ
⑨リカバリ結果確認

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

今回リカバリ確認する作業の流れは以下の通りです。

図2:検証する手順 ・テストデータを挿入後、手動バックアップを取得します
・手動バックアップ取得後、テーブルを削除します
・異なるDB名にてリストアを行います
・手動バックアップ取得時点のデータが挿入されていることを確認します

それでは検証結果を見ていきます。

 

DBスナップショット(手動バックアップ)を使用したリストアの検証 ⑦ テストデータ確認

DBスナップショット(手動バックアップ)を使用したリストアを検証します。
DBスナップショットからのリストア時は、ユーザーによる時間指定の設定箇所はありません。

 

(1)DBスナップショット取得

1)テストテーブルの作成
以下のコマンドを実行しテストテーブルを作成します。
SQL> select * from test_table;
SQL> create table test_table (no varchar2(5), text varchar2(10)) tablespace USERS;
16:57:36 SQL> select * from test_table;
select * from test_table
              *
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。

16:57:38 SQL> create table test_table (no varchar2(5), text varchar2(10)) tablespace USERS;
表が作成されました。

 

2) テストデータ挿入
以下のコマンドを実行しテストデータを挿入します。
それぞれ16:58、17:03に実行します。
--16:58に実行
SQL> insert into test_table (no,text) values ( '1658','AAAAAAAAAA');
SQL> commit;
--17:03に実行
SQL> insert into test_table (no,text) values ( '1703','BBBBBBBBBB');
SQL> commit;
16:58:11 SQL> insert into test_table (no,text) values ( '1658','AAAAAAAAAA');
1行が作成されました。

16:58:13 SQL> commit;
コミットが完了しました。

16:58:17 SQL> select * from test_table;
NO         TEXT
---------- --------------------
1658       AAAAAAAAAA
~中略~
17:03:04 SQL> insert into test_table (no,text) values ( '1703','BBBBBBBBBB');
1行が作成されました。

17:03:05 SQL> commit;
コミットが完了しました。

17:03:10 SQL> select * from test_table;

NO         TEXT
---------- --------------------
1658       AAAAAAAAAA
1703       BBBBBBBBBB

 

3) DBスナップショット(手動バックアップ)の取得
「Instances」画面の「Instance Actions」プルダウンから「Take DB Snapshot」を押します。

図3:DBスナップショット(手動バックアップ)の取得 Snapshot Nameの欄にスナップショット名を入力し、「Yes, Take Snapshot」を押します。

図4:DBスナップショット(手動バックアップ)の取得 左ペインで「Snapshots」を選択し、取得したDBスナップショット名の「Status」が「available」になっていることを確認します。

図5:DBスナップショット(手動バックアップ)の取得

 

4)テストテーブル削除
リストアが実行されたことを確認するために、テストテーブルを削除します。
17:08:07 SQL> drop table test_table purge;
表が削除されました。

17:08:11 SQL> select * from test_table;
select * from test_table
              *
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。

 

⑧DBスナップショットを使用したリカバリ


(1)DBスナップショットからリストアを実行
「Snapshots」画面で「Restore Snapshot」を押します。

図6:DBスナップショットからリストアを実行

 

(2)インスタンスパラメータ指定
「Restore DB Instance」画面でDBインスタンスのパラメータを指定して、リカバリを実行します。
例として以下のようにDBインスタンスパラメータを指定し、「Launch DB Instance」を押します。
(画像一部省略)

図7:DBインスタンスパラメータ指定1

 

⑨リカバリ結果確認

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

図8:リカバリ完了確認

 

(2)リカバリ完了確認(アラートログ)
例として以下のログが表示されていることを確認します。

・ALTER DATABASE OPEN RESETLOGS
・RESETLOGS after incomplete recovery UNTIL CHANGE <SCN番号>

図9:リカバリ完了確認(アラートログ)

 

(3)リカバリ完了確認
リストアしたDBインスタンスに接続し、DBスナップショットを作成時のデータが新規DBインスタンスで復旧していることを確認します。

1)DBインスタンス接続
以下のコマンドを実行し、DBインスタンスへの接続をします。
(事前にOracle Clientのtnsnames.oraにORCL2の接続情報を追記しています。)
C:\app\administrator> sqlplus oracle@orcl2
SQL> select instance_name from v$instance;
(出力結果省略)

2)データの確認
以下のコマンドを実行し、データを確認します。
SQL> select * from test_table;
以下のようにテーブルが復旧していることが確認できます。今回は17:04にDBスナップショットを取得 していますので、17:04以前のデータが全て復旧していることが確認できます。
17:28:37 SQL> select * from test_table;

NO         TEXT
---------- --------------------
1658       AAAAAAAAAA
1703       BBBBBBBBBB

以上が、DBスナップショット(手動バックアップ)を使用したリカバリの検証になります。
自動化バックアップとDBスナップショットの両方とも、リカバリ時にDBインスタンス名を変更した場合はOracle Databaseの不完全リカバリが実行されていることが確認できました。 シリーズの次回はソースと同一のDBインスタンス名にした場合を検証します。

以上