昨天帮同事救火,去客户那边抢修Exchange服务器。

客户的情况是这样的,两前端两后端的Exchange2007结构,两个前端是集线器传输服务器和客户端访问服务器角色,两个后端是邮箱服务器。

    故障是后端的一个节点出现了问题,其中出问题这个阶段整个服务器不可用了。正常来说邮箱服务业务应该会转到另外一个节点,但是在这次出故障前两周,两节点间的数据库其实就已经停止同步了。

目前,故障节点已经损坏,正常节点上的数据库能够强制挂载上去,但数据为两周前的。

    经过努力将故障节点的硬盘读取出来,并将EDB数据库复制到正常节点。

    我们如何去对这个数据进行修复呢?

  1. 使用Eseutil /mh对数据库EDB文件进行状态确认,例:Eseutil/mh f:\EDB\user.edb

  2. 通过Eseutil /mh返回的信息,复制日志文件

  3. 使用Eseutil/r 进行EDB文件软恢复,例: Eseutil /R E00/Lf:\EDB\logfiles

  4. 软恢复如果不成功那么进行硬恢复Eseutil /p f:\EDB\user.edb.(硬恢复会有较大概率造成邮件数据丢失)

  5. 创建恢复存储组,注意这里的log文件夹路径和数据库路径需要填写之前修复的EDB文件的路径,因为我们从已经修复的EDB文件中进行恢复。
    new-storagegroup -Server -LogFolderPath -Name -SystemFolderPath  -Recovery

  6. 创建恢复存储组中的数据库
    new-mailboxdatabase -mailboxdatabasetorecover -storagegroup \ -EDBFilePath

  7. 设置允许所有文件恢复
    new-mailboxdatabase -mailboxdatabasetorecover -storagegroup \ -EDBFilePath

  8. 将所创建的恢复存储组中的数据库载入
    new-mailboxdatabase -mailboxdatabasetorecover -storagegroup \ -EDBFilePath

  9. 对某个邮箱进行恢复
    new-mailboxdatabase -mailboxdatabasetorecover -storagegroup \ -EDBFilePath