システム・クラッシュなどの重大なシステム障害が発生した場合には、WIJ のリカバリが必要となります。InterSystems IRIS を起動すると、WIJ が自動的にチェックされます。異常なシャットダウンが検出された場合はリカバリ・プロシージャが実行されます。2 つのフェーズで構成されるライト・プロトコル・プロセスのどちらに WIJ があるかに応じて、リカバリは以下のように実行されます。
WIJ のリストア
WIJ が “アクティブ” とマークされている場合、ライト・デーモンは WIJ への変更されたディスク・ブロックの書き込みを完了していますが、それぞれのデータベースへの書き込みは完了していません。この場合、WIJ のリストアが必要です。リカバリ・プログラム iriswdimj は、以下を実行します。
通常すべてのリカバリは、iriswdimj プログラムの 1 回の実行で処理されます。
データセット・リカバリ
データセットは、特定の InterSystems IRIS システム上の特定のデータベース・ディレクトリです。iriswdimj プログラムは、異常なシャットダウン後に再起動する InterSystems IRIS インスタンスで構成されたすべてのデータセットをリストアします。
iriswdimj プログラムは、対話式または非対話式で実行できます。実行方法は、以下のようにプラットフォームによって異なります。
Note:
UNIX/Linux システムで iris start quietly コマンドを使用すると、このコマンドは常に非対話式で実行されます。
リカバリ・プロシージャが完了すると、iriswdimj は WIJ の内容に “削除済み” とマークし、起動が継続されます。
書き込み中にエラーが発生した場合は、WIJ がアクティブ状態のままとなり、InterSystems IRIS は起動しません。このオプションが (対話モードで) 上書きされない限り、次回の InterSystems IRIS 起動時にリカバリが繰り返されます。
Caution:
オプションを上書きして WIJ をリストアすると、データベースが破損するか、またはデータが消失します。
以下の項目を詳細に説明します。
対話式のデータセット・リカバリ
リカバリ手順により、データセットごとにリカバリするかどうかを確認できます。通常は、すべてのデータセットを指定します。それぞれのデータセットのプロンプトの後、以下を入力します。
-
Y — データセットをリストアする
-
N — データセットをリストアしない
また、データセットへのパスが失われても、そのデータセットにアクセスできる場合は、そのデータセットの新しい場所を指定できます。データセットがリカバリされると、リカバリを要求するデータセットのリストからそのデータセットは削除されます。また、iriswdimj プログラムが引き続き実行されている間は、リカバリする必要が発生してもリカバリされません。
非対話式のデータセット・リカバリ
リカバリ手順が非対話式で実行される場合、InterSystems IRIS はすべてのデータセットをリストアし、WIJ を削除済みとマークしようとします。Unix® プラットフォームおよび Windows プラットフォームでは、InterSystems IRIS は、最初にすべてのデータセットの高速並行リストアを試行します。高速リストア中に 1 つまたは複数のエラーが発生すると、データセットは一度に 1 つずつリストアされ、完全にリカバリされたデータベースを識別できるようにします。少なくとも 1 つのデータセットをリストアできない場合、以下のようになります。
WIJ ブロック比較
通常、実行中の InterSystems IRIS インスタンスがデータベースへのアクティブな書き込みを行うのはわずかな時間のみです。したがって、ほとんどのクラッシュでは、WIJ に最後に書き込まれたブロックは、クラッシュの前にデータベースに確実に書き込まれたことが確認されます。WIJ はアクティブとマークされず、実行される WIJ のリストアはありません。しかし、このようなクラッシュの後に InterSystems IRIS が起動すると、最新の WIJ 更新が行われたブロックは、影響を受けたデータベースの対応するブロックと高速整合性チェックの形式で比較され、ストレージ・サブシステムの障害を伴ったクラッシュの後に不明な状態でインスタンスを開始しないようにします。この比較は、可用性への影響を回避するために短時間で実行され、スループットを最大化するために非同期入出力が利用されます。すべてのブロックが一致するまたは 10 秒以内に不一致が検出されない場合、通常どおりに起動が続行されます。この時間内に不一致が見つかった場合、以下のようになります。
-
使用可能なすべての WIJ ブロックの比較が完了するまで比較動作が継続されます。
-
一致しなかった WIJ ブロックは、WIJ ディレクトリにある MISMATCH.WIJ というファイルに書き込まれます。
-
通常の起動が中止され、InterSystems IRIS はシングル・ユーザ・モードで起動し、以下のようなメッセージが表示されます。
There exists a MISMATCH.WIJ file.
Startup aborted, entering single user mode.
Enter IRIS with
iris terminal [instancename] -B
and D ^STURECOV for help recovering from this error.
Caution:
MISMATCH.WIJ が見つかった場合は、先に進む前にインターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。
この状況はデータの整合性に影響を与えるため、早急な対応が必要です。ただし、MISMATCH.WIJ に対して間違ったアクションを実行すると、状況が悪化する可能性があります。MISMATCH.WIJ の使用経験がある場合を除き、既知の良好なバックアップに戻して、そこから続行するか、WRC に問い合わせる方が安全です。
後に続く情報を利用して、適切な処置を判断してください。リカバリ手順が完了したら、InterSystems IRIS の起動を続行する前に、STURECOV ルーチンを使用するかまたは外部から、MISMATCH.WIJ ファイルの名前を変更する必要があります。このファイルは永続的で、存在するとインスタンスを通常どおり起動できません。
指示されたコマンドを実行し、システム管理者として緊急ログインを行います ("システム管理ガイド" の “ライセンス” の章にある "管理者ターミナル・セッション" を参照してください)。
これで管理者のネームスペースに入ることができたので、Do ^STURECOV コマンドを使用してスタートアップ・リカバリ・ルーチンを実行できます。UNIX®/Linux システムでは、次の WIJ 不一致リカバリ・メッセージおよびメニューが表示されます。
The system crashed and some database blocks do not match what was
expected based on the contents of write image journal (the WIJ).
The WIJ blocks have been placed in the MISMATCH.WIJ file. If any
database files, or the WIJ, were modified or replaced since the crash,
you should rename the MISMATCH.WIJ. Otherwise, MISMATCH.WIJ probably
contains blocks that were lost due to a disk problem. You can view
those blocks and apply them if necessary. When finished, rename the
MISMATCH.WIJ in order to continue startup.
1) List Affected Databases and View Blocks
2) Apply mismatched blocks from WIJ to databases
3) Rename MISMATCH.WIJ
4) Dismount a database
5) Mount a database
6) Database Repair Utility
7) Check Database Integrity
8) Bring up the system in multi-user mode
9) Display instructions on how to shut down the system
--------------------------------------------------------------
H) Display Help
E) Exit this utility
--------------------------------------------------------------
Windows システムでは、オプション 8 および 9 が 8) Bring down the system prior to a normal startup に置き換えられます。
オプション Rename MISMATCH.WIJ は日付を追加することでファイル名を変更します。既にその名前で変更された MISMATCH.WIJ が存在する場合は、数値 (_1 など) が追加されます。
WIJ 不一致発生時の適切なアクションは、企業のニーズおよびポリシーに基づいて異なりますが、データ整合性の問題を示唆するイベントに対応する際にユーザのサイトにおいて行う既存の慣行とほぼ同じです。考慮事項には、リスクに対する許容範囲、影響を受けるデータベースの重要度、稼働時間の要件、疑われる原因などがあります。
次に、WIJ ブロック比較プロセスに固有の考慮事項および推奨事項を示します。
-
クラッシュの後かつリカバリの前にデータベースまたは WIJ ファイルを置換、リストア、または変更すると、不一致が発生する可能性があります。この不一致は、WIJ 比較時に見つかり、MISMATCH.WIJ ファイルに記録されます。 これが発生した場合は、MISMATCH.WIJ の名前を変更してください。
Note:
クラッシュの後にデータベースをリストアする場合、このリストアを実行する前に必ず WIJ およびジャーナルのリカバリを行わない状態でインスタンスを開始してください (このドキュメントの “バックアップとリストア” の章の "自動 WIJ およびジャーナル・リカバリを使用しない InterSystems IRIS の起動" を参照)。こうすることによって、WIJ 比較で検出されることになる不一致の作成と WIJ ブロックまたはジャーナル・データ (このドキュメントの “ジャーナリング” の章を参照) の意図しないデータベースのバージョンへの誤った適用の両方が回避されます。
-
一部のストレージ・サブシステム (特に、ラップトップおよびワークステーションのローカル・ドライブ) は、バッテリまたは非揮発性のメモリでバックアップされていない安全でない形式のライト・バック・キャッシュを使用しています。これは、InterSystems IRIS が実行する 2 フェーズ・ライト・プロトコルを無効にし、ハードウェアのクラッシュまたは電源の喪失の後の破損 (WIJ 比較時に検出される) をもたらす可能性があります。このことがユーザのシステムに当てはまる場合、MISMATCH.WIJ にはより新しいデータが格納されている可能性が高く、したがって、データベースに安全に適用できます (多くの注意を必要としないシステムであることが前提)。
-
WIJ 比較の後にデータベースを変更した場合、MISMATCH.WIJ は有効ではなくなり、WIJ ブロックの適用は安全ではなくなります。
-
全社クラスのストレージ、または安全でない形式のライト・バック・キャッシュを使用していないストレージ・サブシステムを備えたサーバの場合、WIJ 比較時に見つかった不一致は常に予期しないものであり、より深刻で広範囲に及ぶ問題の兆候である場合があるため、重視する必要があります。
-
問題の原因によっては、データベースには問題がなく、破損しているのは WIJ である場合があります。 影響を受けたデータベースの整合性チェックによってこの可能性を判断できます。
-
WIJ 比較は最後に書き込まれたブロックのみを対象とするため、追加のブロックに影響する問題がある可能性があり、これは完全な整合性チェックで検出できます (このガイドの “データ整合性の概要” の章にある "構造的な整合性の検証" を参照してください)。
-
データベースが小さく、時間が許すのであれば、次のような手順に従うことによって最大限の安全性を確保できます。
-
データベースの完全な整合性チェックを実行します。
-
破損がない場合、 MISMATCH.WIJ の名前を変更して起動します。
-
1 つまたは複数のデータベースが破損している場合、すべてのデータベースの IRIS.DAT ファイルをコピーし、MISMATCH.WIJ からすべてのブロックを適用し、完全な整合性チェックを再実行します。
-
MISMATCH.WIJ を適用した後に破損しているデータベースがある場合、そのデータベースを前のコピーに戻すか、以前のバックアップからリストアできます。
-
暗号化データベースは、WIJ ブロック比較から除外されます。