在默认软恢复情形中,外部事件意外地停止 Exchange 数据库,但数据库和日志文件保留完好并处于正确的位置。当再次装入数据库时,Exchange 读取检查点文件并开始重播作为检查点日志列出的事务日志。如果不存在检查点文件,重播开始时会使用存储组事务日志文件夹中最早的可用日志文件。
Exchange 将在日志文件中发现的没有写入的已完成事务写入数据库文件,并反转任何未完成事务。在撰写事务的所有操作被保护到日志文件之前,Exchange 从不会开始将事务写入数据库文件。如果在意外停止时存在的所有未提交的事务日志在重播开始时仍存在,不需要物理撤消或停止数据库中的事务。
如果从重播序列中删除了任何必需的事务日志,Exchange 会立即中止软恢复。如果所需的事务日志缺失,则必须使用更早的数据库(不要求这些日志)还原副本来执行恢复,或者使用 Exchange Server 数据库实用程序 (Eseutil.exe) 工具修复数据库。
在大多数情况,运行软恢复的最佳方法是装入存储组中的任何数据库。因为存储组中的所有数据库共享多个日志文件的一个流,所以软恢复发生在整个存储组级别而不是单个数据库级别。
在某些特殊情况中,使用 Eseutil.exe 运行软恢复会有一些优势。最常见的情况是:
-
要恢复缺失一个数据库的存储组。
-
要在不影响其他数据库或存储组日志文件的情况下恢复单个“不在适当位置”的数据库。
Eseutil.exe 软恢复功能的完整语法,且列出了所有可能的开关,即是:
ESEUTIL /r enn /L[path to log files] /s[path to checkpoint file] /d[path to database file] /i
示例: ESEUTIL /r e01 /Lf:\mdbdata /sc:\exchsrvr\mdbdata /dg:\mdbdata /i
注意: |
|---|
|
Eseutil.exe 命令行参数不区分大小写;之所以要在上述情况中混合使用大小写,是为了避免混淆“L”和“I”字符。
|
上面的示例说明了对存储组数据库的恢复,其中日志文件的前缀是 E01,日志文件位于 f:\mdbdata 目录,检查点文件位于 c:\exchsrvr\mdbdata 目录,数据库和流式文件位于 g:\mdbdata 目录,并且忽略了缺失的数据库(因为命令末尾使用了 /i 开关)。
运行软恢复所需的最短 Eseutil.exe 命令行是:
仅在从设置为事务日志目录的提示符运行时该命令才有效。使用 Eseutil.exe 来运行软恢复时还应注意以下事项:
-
如果命令行上未指定任何文件路径,Eseutil.exe 使用当前命令提示符目录作为日志文件和检查点文件的默认目录。
-
数据库文件不必位于日志文件路径。日志文件记录了数据库路径,因此,Eseutil.exe 可以通过读取日志文件发现所有数据库路径。只有在确信日志文件中的路径不正确的情况下,才可以使用 /D 开关来覆盖存储在日志文件中的路径。
-
如果检查点文件与事务日志不存在于同一路径中,在重播期间将扫描所有日志文件而不会从检查点日志开始重播。可以将现有检查点文件临时复制到日志文件路径。软恢复完成后,Exchange 在正常数据库操作中将不再使用此检查点文件副本。
如果检查点文件中的信息不正确,则软恢复会失败但不会损害数据库。在删除检查点文件或找到正确的文件后,可以尝试再次恢复。检查点文件对于成功恢复不是必需的,但如果日志文件数量很大,它可以节省大量时间。
如果要在存储组中的一个数据库缺失时开始恢复,请使用此命令:
/i 开关意味着忽略缺失的数据库。如果使用此开关后装入缺失的数据库,Exchange 会提示您创建新数据库。如果想要还原某个时刻的旧数据库,将不能将新数据重播到其中。现在有了同一逻辑数据库的两个独立版本。
在这种情况下,存储组中的一个数据库已被一个空数据库替代,并且恢复存储组能够发挥作用。可以在恢复存储组中装入额外数据库,并使用 ExMerge 将一个数据库的内容添加到另一个数据库。
如果要在不影响存储组中其他数据库的情况下开始“不在适当位置”的恢复来恢复单个数据库,应该创建一个新的空文件夹,并将要恢复的数据库文件、要重播的事务日志和检查点文件(如果需要)移动到此路径。此路径必须不包含其他数据库文件。
一旦将数据库和日志一起隔离到一个文件夹,从该文件夹运行以下命令:
通过使用 /d 开关而不指定路径,可以覆盖日志文件中设置的数据库路径。此外,因为在此文件夹中没有其它可用数据库,因此会通过此特定恢复进程隐藏服务器上的其他数据库。
如果不正确地使用 /d 参数,恢复过程可能影响服务器上的其他数据库。即使在最坏情况下,恢复过程都不会损害其他数据库。但是,在正在使用的数据库上,恢复可能失败。恢复操作甚至可能影响未来对其他数据库的日志文件重播功能。
注意: |
|---|
|
在命令行变得更加复杂的同时,错误的可能性也会增加。一条通用的准则是:使用 Eseutil.exe 时,尽可能地减少命令行上的特定路径信息。在此情况下,更改到这些文件所在的目录,并将 \exchsrvr\bin 目录包含到系统路径中。
|
要运行软恢复,重播序列中最后一个日志文件必须命名为 Enn.log。如果最终日志文件已经关闭和编号,则必须在软恢复成功之前将日志重命名。此要求并不意味着当前 Enn.log 文件已损坏或破坏,可以忽略它并将序列 Enn.log 中的前一个日志重命名。在 Exchange 2000 中,数据库头中的 Logs Required 值列出了恢复所需的最低日志序列,它从检查点日志开始一直延续到当前日志。在 Exchange 的早期版本中,尽管不存在 Logs Required 值以实施当前的必需日志,但是如果没有找到所需的最后一个日志,恢复仍然会失败。Exchange 2000 和更高版本的唯一区别是恢复会在日志重播末尾失败,而不是在开头。