事务记录

Domino® 事务记录可以捕获对数据库所作的更改,并将它们写入事务日志。然后,已记录的事务会在资源可用时(或定时)按批写入磁盘。

事务是对服务器上数据库进行的一系列相关更改操作。例如,打开新文档、添加文本和保存文档等可作为一个事务。此时,该事务由三个独立的隐含 API 调用组成:NotesOpen、NoteUpdate 和 NoteClose。

事务日志是对更改 Notes® 数据库所作的一种记录。事务日志由日志扩展数据块和日志控制文件 (NLOGCTRL.LFH) 组成。日志范围是事务日志写入的日志文件之一。其格式为 Sxxxxxxx.TXN,其中 xxxxxxx 字符代表一个对该服务器来说唯一的七位数。Domino® 按顺序填满每个扩展数据块,然后再将数据写入新的扩展数据块。每个记录都通过专用的字节流格式进行保护。每个服务器都只有一个事务日志,捕获对已启用事务记录的数据库所做的所有更改。

使用事务记录可以:

  • 安排定期备份。基于事务日志的备份比未使用事务记录的完整数据库备份更加容易。
  • 从媒体故障中恢复。如果发生媒体故障,可以从磁带上还原最近的完整备份,然后使用事务日志添加未写入磁盘的数据。
  • 从系统崩溃中恢复。重新启动服务器后,它会运行全部事务日志,恢复崩溃时未写入磁盘的任何内容。启用记录的数据库不需要一致性检查。
  • 记录数据库视图。这样就可以尽量避免视图重建。

要使用事务记录的全部备份和备份恢复功能,需要有使用 Domino® C API Toolkit 的备份和恢复方法的第三方备份实用程序。例如,对于媒体故障,使用事务记录跟踪对数据库的更新,但使用第三方实用程序进行数据库备份。如果数据库丢失了,备份就会通过检查整个事务日志,并应用自从执行数据库备份以来对数据库进行的任何更新来回到当前状态。

请注意,重新启动恢复不需要第三方实用程序。在这种情况下,当更新在发生时,记录也在进行。如果服务器崩溃并重新启动,本来可能会丢失的任何更新都会写入数据库。这样就可显著地减少由服务器崩溃导致的数据丢失和数据库损坏,并且由于不需要进行数据库一致性检查,所以从总体上减少了重新启动时间。

注: 如果计划使用 Domino® 附件和对象服务(Domino® 8.5 及更高版本中可用)在服务器存储库中合并文件附件,就必须使用事务记录,并必须将其保持启用状态。

了解 DBIID(数据库实例标识)

启用事务记录时,Domino® 可为每个 Domino® 数据库指定唯一的 DBIID(数据库实例标识)。Domino® 在日志中记录事务时,将包含此 DBIID。在恢复过程中,Domino® 使用 DBIID 将事务与数据库进行匹配。

某些数据库维护活动(如使用带选项的 Compact 命令)可使 Domino® 以特定方式重新构建数据库,这些方式会使旧的事务记录不再有效。发生这种情况时,将为这种数据库分配新的 DBIID。从这时起,记录在数据库日志中的所有新事务都使用新的 DBIID。为数据库分配新的 DBIID 后,请对新的数据库进行完整备份。新的完整备份将捕获具有新 DBIID 的数据库的当前状态。然后,如果必须还原数据库,Domino® 只需要包含新 DBIID 的新事务。

Domino® 在下列情况下, 会分配新的 DBIID:

  • 首次启用事务记录时。
  • 运行带选项(如减少文件大小的选项)的 Compact 任务。
  • 对已损坏的数据库运行 Fixup 任务。
  • Domino® 数据库移至启用记录的服务器。