5.3.1 RDエリア障害が発生した場合の回復手順の例題
ここでは,RDエリア障害が発生した場合の回復手順について,例題を使って説明します。
(1) 障害発生時の状況
RDDATA01(表格納RDエリア),RDLOB01(LOBデータ格納RDエリア)およびRDIDX01(インデクス格納RDエリア)をインメモリ化しました。RDLOB02(LOBデータ格納RDエリア)はインメモリ化していません。
また,RDDATA01,RDLOB01およびRDIDX01は異なるHiRDBファイルシステム領域に作成されているとします。
障害発生時の状況を次の図に示します。
- [説明]
-
-
RDDATA01,RDLOB01およびRDIDX01をインメモリ化しました。
-
更新業務を実行し,インメモリデータバッファとRDLOB02のデータを更新しました。
-
pdhold -bコマンドでインメモリデータバッファとRDエリアの同期を取りました。このとき,RDDATA01およびRDLOB01への書き込みは正常にできましたが,RDIDX01が書き込みエラーによってRDエリア障害になりました。
このときのインメモリデータバッファと各RDエリアの状態を次に示します。
-
インメモリデータバッファの状態:正常(最新の状態)
-
RDDATA01の状態:正常(最新の状態)
-
RDLOB01の状態:正常(最新の状態)
-
RDIDX01の状態:RDエリア障害
-
RDLOB02の状態:正常(最新の状態)
-
(2) 障害回復の手順
インメモリデータバッファ上に最新のデータがあるため,インメモリデータバッファとRDIDX01の同期を再度取り,RDIDX01を最新の状態に回復します。
障害回復の手順を次の図に示します。
コマンドの実行手順を次に示します。
-
サーバプロセスをリフレッシュします。
pdpfresh -s BES1
ディスク交換を行う場合にこの操作を実行してください。この操作を実行しないとディスクを切り離すことができません。
-
RDDATA01およびRDLOB01の閉塞を解除します。
pdrels -r RDDATA01,RDLOB01
pdhold -bコマンドを実行したため,RDDATA01およびRDLOB01が参照可能バックアップ閉塞状態になっています。閉塞を解除して,RDDATA01およびRDLOB01に対する更新業務を続行します。
-
RDIDX01の障害を取り除きます。
ディスク障害が発生した場合は,マニュアル「HiRDB システム運用ガイド」の「ディスク障害が発生したときの対処方法」を参照して対処してください。
-
インメモリデータバッファとRDIDX01の同期を取ります。
pdhold -r RDIDX01 -b
インメモリデータバッファ上のデータがRDIDX01に書き込まれました。これによって,RDIDX01は最新の状態に回復されました。
-
RDIDX01の閉塞を解除します。
pdrels -r RDIDX01
- 参考
-
RDエリア障害の回復を行う場合は,バックアップファイルを使用しません。
(3) 障害回復時のインメモリデータバッファおよびインメモリRDエリアの状態遷移
障害回復時,インメモリデータバッファの状態およびインメモリRDエリアの状態は次の表のように遷移します。表の項番は,「障害回復の手順」の実行手順の番号と対応しています。なお,表中の実行コマンドは,一部オプションを省略しています。
項番 |
実行コマンド |
障害が発生したRDエリア |
障害が発生していないRDエリア |
||
---|---|---|---|---|---|
RDIDX01 |
RDDATA01,RDLOB01 |
||||
コマンド実行後のバッファの状態※1 |
コマンド実行後のRDエリアの状態※2 |
コマンド実行後のバッファの状態※1 |
コマンド実行後のRDエリアの状態※2 |
||
− |
− |
RDエリア障害状態 |
障害閉塞かつオープン状態 |
DB同期状態 |
参照可能バックアップ閉塞状態 |
1 |
pdpfresh |
↓ |
↓ |
↓ |
↓ |
2 |
pdrels -r RDDATA01,RDLOB01 |
↓ |
↓ |
↓ |
オープン状態 |
3 |
− |
↓ |
↓ |
↓ |
↓ |
4 |
pdhold -r RDIDX01 -b |
DB同期状態 |
参照可能バックアップ閉塞状態 |
↓ |
↓ |
5 |
pdrels -r RDIDX01 |
↓ |
オープン状態 |
↓ |
↓ |