Lotus Domino支持事务日志记录和恢复。启用此功能后,系统捕获数据库更改并将其写入事务日志。
如果系统或介质发生故障时,您可以使用事务日志和第三方备份实用程序恢复您的数据库。
重要:启用事务日志在大多数情况下可以提高服务器性能。事务日志可以节省处理时间,因为它允许Domino在服务器活动高峰期间延迟数据库更新到磁盘。事务顺序地记录在日志文件中,这比数据库更新随机的,非顺序的磁盘内容更快。因为事务已被记录到日志文件中,Domino服务器可以把对数据库的更新安全地推迟到服务器活动相对低谷期。
什么是事务日志?
事务日志按顺序记录对数据的每个操作。如果数据库损坏,您可以恢复数据库到损坏之前的某个点,然后重放事务日志中记录的改变。
单个事务是对服务器上一个数据库所作的一系列的更改,例如:一个事务可能包括打开一个新的文档,添加文字,然后保存该文档。
事务日志有三个主要优点:
1. 在大多数情况下,在系统发生意外故障时,您不再需要运行Fixup 去修复数据库。在服务器重启时,如果不强制做Fixup(即:一致性检查)将大大提高服务器启动的速度,这是因为Fixup必须逐一检查每个数据库里的每个文档,而恢复事务日志仅仅是重放或者回滚那些在系统发生故障时未写入到磁盘的事务。
2. 事务日志节省处理时间,因为它允许Domino服务器活动高峰期间延迟数据库更新。事务顺序地记录在日志文件中,这比数据库更新随机的,非顺序的磁盘内容更快。因为事务已被记录到日志文件中,Domino服务器可以把对数据库的更新安全地推迟到服务器活动相对低谷期。
3. 使用事务日志将使每日的备份变得更简单。您可以使用第三方备份实用程序执行日常的事务日志增量备份,而不是执行完全数据库备份。
重要:事务日志工作要求数据库格式 ODS 41 或者更高版本而不是先前的版本格式(ODS 20将不工作)。启用事务日志以后,所有数据库会自动启用记录。要检查数据库格式版本,请点击Domino 管理客户端中的文件标签。
注意:使用事务日志记录和恢复的所有功能,您需要一个支持Domino事务日志的第三方备份实用程序。
什么是事务?
每次API调用被看做一个事务。它包括创建、修改、阅读(更改未读标记)或删除文档。当用户对数据库的修改被写入到磁盘时,事务即被视为完成。例如,如果一个用户修改数据库中的文档,还没有来得及保存,服务器就宕机了,这个事务并不被视为完成。只有用户在服务器宕机前保存了更改,事务才被认为是完成的。已完成的事务被"提交"到事务日志。
什么是事务日志?
事务日志是一个用于记录事务的二进制文件。事务日志以.txn为文件扩展名。不要随意删除这些.txn文件。每个事务日志存根(.txn文件)最大为64 MB。根据服务器文档的设置,可以有多个 .txn 日志文件。总的.txn文件上限为 4 GB。
什么是数据库实例标识(DBIID)?
当您启用事务日志, Domino给每个Domino数据库指定一个数据库实例标识(DBIID)。当Domino在日志里记录事务时会包含这个DBIID。在需要恢复时, Domino使用DBIID将事务与数据库匹配对应(它指明变化应该应用于哪个数据库)。这个DBIID和数据库ID,数据库副本ID一起被存储在文件头。注意,DBIID和数据库ID还有副本ID没有什么关系。
一些数据库维护活动,例如带参数的Compact导致Domino给数据库分配一个新的数据库实例标识(DBIID)。从那个时刻以后,所有新事务记录在日志中使用新的DBIID;不过,所有的旧的事务记录仍然使用旧的数据库DBIID,与数据库的新DBIID不匹配。因此, Domino无法将这些旧事务恢复到数据库中。
要避免丢失数据,您应该在数据库被分配新的DBIID时立即执行完全数据库备份。当您执行此备份,在备份时间之前所有的数据库事务都被记录,这样Domino只需要新的事务日志(与新的DBIID匹配)就能完成恢复。如果是在备份之后,数据库被分配了新的DBIID,数据库就无法被成功恢复(备份的数据与旧的DBIID匹配,而事务日志无法"识别"旧的DBIID)。
注意,DBIID和数据库ID还有副本ID没有什么关系。
在以下场景,Domino服务器为数据库分配一个新的DBIID:
- 首次启用事务日志
- 先禁用然后重新启用事务日志
- 对数据库执行拷贝样式的压缩
- 对数据库执行Fixup -J 修复
重要注释:
· 如果数据库已启用事务日志,缺省不带参数的数据库压缩等同于参数 -b(小写)
·
· 如果数据库是禁用事务日志,缺省不带参数的数据库压缩等同于参数 -B(大写)。
·
· 不带参数的压缩和带参数 -b 的压缩不会更改数据库的DBIID。
·
· 当数据库以拷贝模式压缩时,数据库的DBIID就会改变,是由于这种拷贝方式创建了一个具有全新结构的全新数据库,基本上事务日志与旧的数据库的结构已经不再匹配了。注: -L,-c,和-i是启用拷贝样式压缩的参数, -B有时也使用拷贝样式压缩。
· Compact -B可能改变DBIID。此参数对数据库进行现场压缩,除非收到改变数据库结构的请求,那种情况下对数据库进行拷贝样式压缩。因此,在启用事务日志后,使用此参数对数据库进行压缩完成之后,请做一个完全数据库备份。
注:关于更多的压缩参数说明,请参阅:
Switches for COMPACT Server Task for Domino (#1084388)
· 对数据库执行 fixup -j 时,DBIID将会改变
· 将Notes数据库从启用事务日志的服务器移动到另外一个启用事务志的服务器,或者从一个没有开启事务日志的服务器移动到另一个开启日志服务的服务器,DBIID将会改变。
注意: 更改事务日志路径或最大日志文件大小(在初始设置和运行中)不改变DBIID。
如何设置事务日志记录
1. 确保所有要记录的数据库位于Domino数据目录,根或子目录中。
2. 在Domino Administrator中,单击配置选项卡。
3. 在"使用目录"域,选择服务器的Domino目录。
4. 单击服务器配置,然后单击当前服务器文档。
5. 单击事务记录选项卡。
6. 填写这些字段,然后保存该文档。
字段 |
操作 |
事务记录* |
选择以下某个选项:缺省情况下,此选项处于禁用状态 · 启用 -- 启动事务记录 · 禁用(缺省)-- 不使用事务记录 |
日志路径* |
输入事务日志的路径名位置。 为达到最佳效果,请使用单独的镜像设备,如带有专用控制器的 RAID(独立磁盘冗余阵列)0 或 1。这样就比使用 Domino 数据目录中的缺省路径 (\LOGDIR) 提供了更好的性能和数据完整性。 注意:如果该设备仅用于存储事务日志,请将使用日志设备上的所有可用空间字段设置为是。 |
使用日志设备上的所有可用空间 |
仅用于循环和线性记录。选择以下某个选项: · 是 -- 将设备上的所有可用空间用于事务记录。如果使用单独的设备专用于存储日志,则选择“是”。 · 否 - 使用缺省值或在最大日志空间字段中指定的值。 |
最大日志空间 |
仅用于循环和线性记录。事务日志的最大值 (MB)。缺省值为 500MB。最大值为 4096MB (4GB)。 应该单独为事务记录分配一个至少具有 1,024MB (1GB) 磁盘空间的磁盘。 Domino 将根据所分配的最大日志空间至少格式化 3 到 64 个日志文件。 |
自动修正已损坏数据库 |
选择以下某个选项: · 启用(缺省)- 如果数据库已损坏,且 Domino 无法使用事务日志对其进行恢复,则自动运行 Fixup 任务。Domino 将分配新的 DBIID,并通知管理员需要新的数据库备份。 · 禁用 -- 不自动运行 Fixup 任务。 Domino 通知管理员对已记录的损坏数据库运行带有 -J 参数的 Fixup 任务。 |
运行时/重新启动首选项 |
此字段控制 Domino 在事务日志中对恢复检查点进行记录的频率。这样会影响服务器的性能,因为数据库会从高速高速缓存中刷新到磁盘上。 为记录恢复检查点,Domino 会评估每个活动的已记录数据库,以确定在系统故障后需要多少事务来恢复数据库。Domino 完成此评估后会: · 在事务日志中创建恢复检查点记录,列出每个打开的数据库和进行恢复所需的起始事务 · 如果数据库更改仍未保存,则强制将它们保存到磁盘中
· 标准(缺省选项,建议采用)-- 定期记录检查点。 · 运行时 -- 记录更少的检查点。此选项需要的系统资源较少,并可改善服务器运行时性能,但会导致在重新启动过程中应用更多的日志。 · 重启恢复时间 -- 记录更多的检查点。此选项可改善重启恢复时间,因为其需要恢复的事务较少。 |
记录样式** |
选择以下某个选项: · 循环(缺省)-- 重复使用日志文件并覆盖旧事务。 · 归档(推荐)-- 在对日志文件进行归档后重复使用它们。日志文件可以在非活动时复用,非活动意味着它并不包含进行重启恢复时所需的任何事务。请使用第三方备份实用程序来复制和归档现有的日志。如果 Domino 再次使用现有的文件启动,Domino 会增大日志文件名。如果所有日志文件都是非活动的且未归档,则 Domino 将创建其他日志文件。 · 线性 -- 在日志大于 4GB 时重复使用日志文件并覆盖旧事务。 |
* 如果更改了此字段,必须重新启动服务器以使更改生效。
** 如果更改了此字段,Domino 会为每个数据库分配一个新的 DBIID。您必须重新启动服务器,并另外执行一次完整备份。
如何禁用特定数据库的事务日志
在大多数情况下,不建议禁用事务日志(在服务器或数据库级别)因为这样你就无法享受到事务日志带来的好处,(禁用事务日志也没有什么副作用)。其中之一就是可以使得服务器重启速度更快。禁用事务日志,将导致Fixup检查所有打开的数据库(或服务器上所有数据库)导致服务器重新启动所需的时间变得更长。
您启用事务日志之后,所有数据库格式在ODS 41(相当于Domino 5.x)或更高版本格式的所有数据库都将被记录。您可以对特定的数据库禁用事务日志。
附件也被包含在事物日志中,但是事务日志对于附件的记录仅仅是重做而已。因此,如果您使用备份介质来恢复数据库,您将回到那个附件被记录的最后一份拷贝(一旦被记录在日志中就不会丢失)。但是如果服务器宕机前,附件的更改没有被记录在事务日志中,因为不可能创建撤销记录,所以这些对于附件的更改将无法还原。
视图不会被事务日志记录,因此介质恢复后,您将需要重建视图索引。
首先,执行下列任何一项:
· 创建新的数据库时,在高级数据库选项对话框上选择"禁用事务日志记录"
·
· 对于一个现有的数据库,在数据库属性,豌豆图案选项卡上选择"禁用事务日志记录"
·
· 在Domino Administrator中,在文件选项卡里选择一个数据库,选择"工具"-"数据库"-"高级属性",然后选择"禁用事务日志记录"
·
· 执行Compact -t
然后,确保所有用户已关闭此数据库。接下来,使用"DBCACHEflush"命令关闭数据库缓存中的数据库。 最后,打开数据库。
如何计划备份事务日志和数据库
对于从一个存储介质损坏(服务器的磁盘故障)中恢复,备份是至关重要的。如果您有一个第三方备份实用程序,您应该:
- 计划每日增量备份事务日志。使用备份应用程序每日备份事务日志实用的备份备份每天事务日志。
- 计划归档日志文件。如果您使用归档日志记录样式,使用第三方备份实用程序安排日志文件的归档。
- 计划每周数据库完整备份。每周,建议执行 Compact 减少文件大小。因为拷贝样式压缩更改数据库的DBIID,您应在压缩完成后计划进行完全数据库备份。
如何修复损坏数据库
对于ODS 41或更高的数据库版本,启用事务日志记录,数据库损坏不经常发生。当您启用事务日志记录,数据库的变更被记录在事务记录中,在系统发生故障后服务器会自动使用事务日志来还原和恢复数据库,例如在服务器出现故障或电源问题后。如果磁盘出现故障,您可以使用支持事务日志的第三方备份实用程序还原和恢复数据库。
将事务日志用于恢复
在系统故障和存储介质故障恢复时,事务日志是很重要的组成部分。系统故障导致服务器宕机并要求您重新启动服务器。启动期间,Domino自动执行数据库恢复。系统使用事务日志来执行或撤销与在系统故障时打开的数据库相关,还没来得及写回到磁盘的那些数据库事务。
如果您在服务器文档的“自动修正损坏的数据库”设为“是”,Domino 也可以在数据库版本低于ODS 41版本的数据库运行Fixup任务,或者ODS版本高于41(Domino R5)但是禁用事务日志的数据库,或者损坏的数据库上运行Fixup任务。
Fixup -J
在开启事务日志时,会在数据库上执行 Fixup 任务。 如果数据库已损坏,并且您没有用于恢复的数据库备份,才可以执行Fixup -j。
如果不带-j 参数,Fixup 对于启用了事务日志的数据库是不会运行的。Fixup 任务与事务日志记录数据库更改的方式有关。如果您使用的是Domino认证的备份实用程序,重要的是,您应该在 Fixup 完成后尽快执行完整的数据库备份。
Notes.ini参数: Translog_Status
NOTES.INI参数 TRANSLOG_Status用于启用服务器上所有数据库的事务日志记录。"0"是禁用,"1"是启用。
转自: http://www-01.ibm.com/support/docview.wss?uid=swg21604717