トランザクションログ

Domino® のトランザクション記録では、データベースへの変更を収集して、それをトランザクションログに書き込みます。記録されたトランザクションは、リソースが利用可能なときやスケジュールされた時刻に一括してディスクに書き込まれます。

トランザクションは、サーバーのデータベースに加えられる一連の関連した変更のことです。例えば、新規文書を開き、テキストを入力して、その文書を保存するといった操作がトランザクションです。この場合のトランザクションは、NotesOpen、NoteUpdate、NoteClose という 3 つの暗黙的で独立した API コールから構成されます。

トランザクションログとは、Notes® データベースに加えられた変更のレコードです。トランザクションログは、ログエクステントとログ制御ファイル (NLOGCTRL.LFH) から成ります。ログエクステントは、トランザクションログを書き込むログファイルの 1 つです。ログエクステントは Sxxxxxxx.TXN の形式を備えており、xxxxxxx は、そのサーバーで一意の 7 桁の数字を表します。Domino では、各エクステントにはデータが順次書き込まれ、いっぱいになると新しいエクステントにデータが書き込まれます。これらのレコードは、専用のバイトストリーム形式で保護されています。各サーバーはトランザクションログを 1 つだけ備えており、このログが有効なデータベースに加えられた変更がすべて取り込まれます。

トランザクションログでは、次の機能を利用できます。

  • バックアップの定期的なスケジュール設定。トランザクションログに基づくバックアップは、トランザクションログを使用しないデータベースの完全バックアップと比べて、迅速かつ容易に行うことができます。
  • メディア不良からの復旧。メディア不良が発生した場合は、最近の完全バックアップをテープから復元できます。次に、ディスクに書き込まれなかったデータをトランザクションログを使用して追加します。
  • システムクラッシュからの復旧。再起動したサーバーでは、トランザクションログの最後が確認され、クラッシュの時点でディスクに書き込まれなかったデータがある場合はそのデータを復旧します。ログが有効なデータベースでは、一貫性のチェックを必要としません。
  • データベースビューのログ記録。大部分のビューでは、再構築を回避できます。

バックアップとバックアップ復旧におけるトランザクションログ機能をすべて利用するには、Domino C API ツールキットのバックアップ方法と復旧方法を使用したサードパーティ製のバックアップユーティリティが必要です。例えば、メディア復旧の場合は、サードパーティ製のユーティリティでデータベースのバックアップをとり、同時にデータベースの更新内容を記録します。その後、データベースのデータが失われたときは、トランザクションログを調べて現在の状態をバックアップで復元し、データベースのバックアップ開始以降、データベースで発生した更新を適用します。

再起動時の復旧では、サードパーティ製のユーティリティを必要としません。この場合、更新中もログ記録は継続されます。クラッシュしたサーバーを再起動すると、トランザクションログを設定していなければ失われていた更新内容がデータベースに書き込まれます。これにより、サーバークラッシュに起因するデータの損失とデータベースの損傷が大幅に減少します。さらに、データベースの一貫性のチェックが不要になるため、全体の再起動時間が短縮されます。

注: Domino 8.5 以降で使用できる Domino 添付ファイルとオブジェクトサービスを使用して、添付ファイルをサーバーリポジトリ内に統合する場合は、トランザクションログが必要でこれを有効にしておく必要があります。

データベースインスタンス ID (DBIID) を理解する

トランザクションログを有効にすると、Domino では、Domino データベースごとに一意のインスタンス ID (DBIID) が割り当てられます。Domino でトランザクションログが記録されるとき、この DBIID も追加されます。復旧中に、Domino ではデータベースに一致するトランザクションを検出する際に DBIID が使用されます。

オプションを指定して Compact コマンドを使用するなど、データベースの一部の保守管理作業では、Domino によってトランザクションログの古いレコードを無効にするなどの方法でデータベースが再構築されます。こうした再構築時には、DBIID が新たにデータベースに割り当てられます。この時点以降、そのデータベースで新たにログ記録されたトランザクションでは、すべて新しい DBIID が使用されます。データベースに DBIID が新たに割り当てられた後に、データベースの完全バックアップを新規実行します。新しい完全バックアップでは、DBIID が新たに割り当てられた、現在の状態のデータベースが取り込まれます。その後、データベースの復旧が必要な場合には、Domino では新しい DBIID が割り当てられている新規トランザクションだけが必要になります。

Domino では、DBIID の新規割り当ては、次の場合に行われます。

  • トランザクションログ機能を初めて有効にした場合
  • オプションを指定して Compact タスクを実行した場合 -- 例えば、ファイルサイズを小さくするオプションを指定した場合など
  • 壊れたデータベースに対して Fixup タスクを実行した場合
  • ログを記録しているサーバーに Domino データベースを移動した場合