Skip to main content

ジャーナル入出力エラー

ここでは、ジャーナル・ファイルの入出力エラーが発生したときに、InterSystems IRIS® データ・プラットフォームがどのように応答するかを説明します。

応答は [エラー時に凍結] のジャーナル設定によって異なります。この設定は、管理ポータルの [ジャーナル設定] ページにあります。[エラー時に凍結] 設定は次のように機能します。

  • [エラー発生時に凍結する] 設定が [いいえ] (既定) の場合、ジャーナル・デーモンは成功するまで、またはいくつかの条件が満たされるまで、失敗した操作を再試行します。成功または条件が満たされた時点で、すべてのジャーナリングは無効化されます。 このアプローチにより、システムは引き続き利用可能になりますが、ジャーナリングを無効にすることでデータの整合性と回復性が損なわれます。

  • [エラー発生時に凍結する][はい] に設定されている場合、すべてのジャーナリングされたグローバル更新が凍結されます。これにより、システムは使用できなくなりますが、データの整合性は保護されます。

ローカル・トランザクションのロールバックに失敗すると、[エラー発生時に凍結する] 設定もアプリケーションの動作に影響します。

このページの情報を使用して、業務上の必要性を確認し、環境に最適な手法を取ることをお勧めします。

ジャーナルの [エラー時に凍結] 設定が [いいえ] の場合

ジャーナル・ファイル入出力エラー時にフリーズしないよう InterSystems IRIS を構成している場合、ジャーナル・デーモンは、成功するまで、または以下の条件のいずれかが満たされるまで、定期的に (通常 1 秒ごと) 失敗した操作を再試行します。

  • デーモンが事前設定された期間 (通常 150 秒) 操作を再試行した

  • システムがそれ以上ジャーナリングされた更新をバッファできない

上記の条件のいずれかが満たされると、ジャーナリングは無効化され、データベースの更新がジャーナリングされなくなります。結果として、ジャーナルは、システムがクラッシュしたときにデータベースを回復するためソースとしては、信頼性に欠けるものになります。ジャーナリングが無効になっている場合は、以下の状況が発生します。

  • トランザクションのロールバックは失敗し、<ROLLFAIL> エラーが生成され、トランザクションが部分的にコミットされた状態になります。

  • コミットされていないデータのクラッシュ回復機能が無効になります。

  • 完全に回復するためのデータが存在しなくなります。前回のバックアップの状態にのみ回復できます。

  • ECP のロック機能とトランザクションの回復可能性から信頼性が失われます。

  • システムがクラッシュすると、ジャーナリングが無効になる前に始まっていたトランザクションが不完全な状態になっていても、InterSystems IRIS が起動するときのリカバリ・プロセスではそのトランザクションはロールバックされません。これは、トランザクションはコミットされていてもジャーナリングされていないからです。

ジャーナリングが無効になった場合の措置

ジャーナリングが無効になった場合に実行する手順を以下にまとめます。

  1. 問題の解決 — 可能な限り早急に、ジャーナリングの無効化を引き起こした問題を解決します。

  2. ジャーナル・ファイルの切り替え — ジャーナル・デーモンは、失敗した入出力処理を定期的に再試行し、ジャーナリングが無効になる前に蓄積されたジャーナル・データを保持しようとします。必要に応じ、ジャーナル・ファイルを新しいディレクトリに切り替えてエラーを解決できます。ただし、InterSystems IRIS は、失敗した入出力の処理に成功してジャーナリングを新しいファイルに切り替えても、ジャーナリングを自動的に再び有効にすることはありません。また、ジャーナル・ファイルを手動で切り替えた場合も、ジャーナリングが自動的に再び有効になることはありません

  3. データベースのバックアップ — メイン・サーバのデータベースをバックアップします (バックアップを実行すると、ジャーナリングは自動的に再び有効になります)。

    エラーの発生後は、データの損失を防止するために、できる限り早い時点でデータベースをバックアップすることを強くお勧めします。実際に、ジャーナリングの無効化の原因となった入出力エラーが解決済みで、ユーザに適切な特権があれば、そのエラーでジャーナリングが無効になっている状態でオンライン・バックアップを実行すると、ジャーナリングが自動的に再開されます。^JRNSTART を実行してジャーナリングを有効にすることもできます。

    バックアップが正常に完了してジャーナリングが再開されると、InterSystems IRIS では、保留中のすべてのジャーナル入出力が破棄されます。これは、保留中のジャーナル入出力で扱われているデータベース更新はすべて、正常に完了したバックアップに記録されているからです。

    Important:

    ジャーナリングを開始するには、バックアップを実行する場合よりも高い特権が必要です。

ジャーナルの [エラー発生時に凍結する] 設定が [はい] の場合

ジャーナル・ファイルに入出力エラーが発生したときにフリーズするように InterSystems IRIS を構成しておくと、すべてのジャーナリングされたグローバル更新は、そのようなエラーの発生時に直ちにフリーズされます。これにより、システムの可用性は低下しますが、ジャーナル・データの喪失を防止できます。ジャーナル・デーモンがジャーナル書き込みを最低 30 秒間完了できない場合にも、グローバル更新はフリーズされます。

ジャーナル・デーモンは失敗した入出力操作を再試行し、成功するとグローバル更新のフリーズを解除します。グローバル更新がフリーズしている間、その他のジョブも停止されます。一般的な結果として、ジャーナリングの問題が解決するまで InterSystems IRIS は停止したままとなり、エンドユーザにはシステムの運用が停止したように見えます。InterSystems IRIS が停止している間に問題の対策をとることができます。例えば、ディスクの領域の解放、別のディスクへのジャーナル切り替え、ハードウェア障害の修正などの措置をとります。

このオプションの利点は、問題が解決して InterSystems IRIS が通常の動作を再開した時点で、失われるジャーナル・データは存在しないことです。欠点は、問題を解決している間、システムの可用性が低下するか、まったく使用できなくなることです。

失敗した入出力処理をジャーナル・デーモンが再試行している間、InterSystems IRIS はアラート (深刻度 3) を messages.log ファイルに定期的に記録します。

ジャーナルの [エラー発生時に凍結する] 設定の TROLLBACK を使用したトランザクションのロールバックに対する影響

選択した [エラー発生時に凍結する] 設定がジャーナリングと関係のないアプリケーションの動作に大きな意味を持つ可能性があるということを認識しておくことが重要です。アプリケーションが TROLLBACK コマンドを使用して開いているトランザクションをロールバックしようとして ("TROLLBACK" を参照)、これに失敗すると、ジャーナル入出力エラー発生時に直面するトレードオフ (データの整合性と可用性) と同じトレードオフが発生します。ジャーナリングと同様に、TROLLBACK[エラー時に凍結] 設定を使用して、以下のように適切な動作を決定します。

  • [エラー発生時に凍結する] 設定が [いいえ] (既定) の場合、トランザクションおよび TROLLBACK を開始したプロセスがエラーを受け取り、そのトランザクションが閉じられ、そのトランザクションに対して保持されているロックが解放されます。このアプローチにより、アプリケーションは引き続き利用可能になりますが、データの整合性と回復性が損なわれます。

  • [エラー発生時に凍結する][はい] に設定されている場合、開始したプロセスは停止し、CLNDMN は開いているトランザクションのロールバックを繰り返し試行します。CLNDMN が再試行している間、トランザクションに対して保持されているロックは変更されませんが、アプリケーションは停止する場合があります。これにより、アプリケーションは使用できなくなりますが、データの整合性は保護されます。

(メッセージ・ログで報告されるように) 停止したジョブの開いているトランザクションのロールバックを CLNDMN が何度も試行して失敗している場合、Manage^CLNDMN ユーティリティを使用して、トランザクションを手動で終了できます。

Note:

[エラー発生時に凍結する] 設定はローカルの (ECP でない) トランザクションのロールバックにのみ影響します。

関連項目

FeedbackOpens in a new tab