| 前段时间在项目中做了一次Exchange 2010灾难恢复,在恢复过程感慨颇深遇到了不少的问题和麻烦,还好磕磕绊绊的修复过来了。借此我把我的恢复过程和遇到的问题和大家分享一下。在论坛中我也见到不少的朋友也遇到同样的问题,我希望该帖能帮助到大家。 环境:单台Exchange 2010,三台域控制器,系统 windows 2008 R2,域(林)构架windows 2008 R2。 灾难恢复原因:Exchange 2010系统完全崩溃。 采用灾难恢复方案:setup/m:recoverserver 灾难恢复步骤: 1. 在域控制器上重置邮件服务器帐号。 2. 重新安装Exchange 2010操作系统。必须保证硬件,计算机名,IP地址一致(据说IP不一样也无所谓)。 3. Exchange 2010新系统加入域。 4. 执行Setup /recoverserver 具体操作我不仔细讲了,网上有很多步骤。我主要讲我遇到的问题和解决方法。 问题来了: 第一次执行: 将恢复下列服务器角色 语言 集线器传输角色 客户端访问角色 邮箱角色 管理工具 正在执行 Microsoft Exchange Server 先决条件检查 语言包检查 ......................... 失败 进程 MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=3168)。拓扑发现失败,错误 0x80040a02 (DSC_E_NO_SUITABLE_CDC)。 应用程序错误ID: ID:2114 进程 MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=3168)。拓扑发现失败,错误 0x80040a02 (DSC_E_NO_SUITABLE_CDC)。 第二次执行: setup /m:recoverserver 将恢复下列服务器角色 语言 集线器传输角色 客户端访问角色 邮箱角色 管理工具 正在执行 Microsoft Exchange Server 先决条件检查 语言包检查 ......................... 失败 安装 HubTransport 角色时曾发生安装失败。只对此角色重新运行安装程序,或使用 控制面板删除此角色。 查看了若干的帖子都无法解决,崩溃中。。。。。 Exchange 2010 正常卸载也无法成功,修复也不行。报错说需要执行完recoverserver才能卸载。 当时就一个想法,只要把数据都恢复过来就成,HUB我不装了之后我在另一台服务器搭建一个HUB Transport不就成了吗,但是前提怎么让服务器跳过HUB的检查。 还好老天眷顾我,让我找到了一个办法。 解决办法: 对于使用Setup /m:Recoverserver修复,如果在此过程中失败是没有办法正常重新安装/卸载。必须完成修复才能进行正常安装和卸载。对于该问题需要通过修改注册表和ADSI才能进行Setup /m:Recoverserver修复。之后我在进行HUB的卸载和安装。 1. 使用 regedit.exe;对于每个已成功恢复的角色,通过对其在 HKLM\Software\Microsoft\Exchange\v8.0 下对应项添加 0 来将其重新命名,或者更改对应项的名称。 解析:我当前想跳过HUB Transprot检查,我就需要在V8.0注册表下把HUB Transprot名称改成0. 2. 使用 AdsiEdit (AdsiEdit.msc) 找到要恢复的服务器的 Exchange 服务器对象。例如,以下是某个服务器对象的路径: CN=<服务器名称>,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=<组织名称>,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=<域名称> 邮箱角色 2 , 客户端访问角色 (CAS) 4, 统一消息角色 16 ,集线器传输角色 32 , 边缘传输角色 64 msExchCurrentServerRoles 的当前值减去与已恢复角色对应的值,然后将该属性修改为新值。例如,如果在安装了集线器服务器角色(值 = 32)、邮箱服务器角色(值 = 2)和 CAS 服务器角色(值 = 4)的服务器上成功恢复了邮箱角色,当前值为 38,用该值减去邮箱角色的值 2,得到msExchCurrentServerRoles 的值为 36。 解释:使用ADSIedit更改 msExchCurrentServerRoles 键值,算法:我首先要让域认为我们成功安装了 HUB Transprot ,未安装mailbox,CAS。该值就为32. 3. 重新运行Setup /m:RecoverServer 4. 成功修复完之后,我们就要考虑HUB的问题。修复完之后其实HUB Transport角色被安装的,只是跳过当前的HUB检查。但是为了安全起见,最好的办法就是在控制面板在把它删除掉,之后在重新安装HUB Transport。 5. OK,修复成功,Exchange 2010一切正常。 数据可移植性解决方案 当时在Setup /m:Recoverserver怎么都无法修复过来时哥们尝试采用了最后应急的方法,最多客户端重新配置一遍只要数据能恢复过来就成。这个办法就是使用Exchange 2010数据可移植性(该方法只能在Exchange2010中使用)。 数据可移植性就是在Exchange 组织下再搭建一台Exchange 2010服务器之后把数据库COPY到这个机器上,重新挂载数据库。在把邮箱的用户信息转移到该数据库上。 弊端:MAPI客户端需要重新配置。 1. 在Exchange 2010组织内搭建一台Exchange 2010邮件服务器 2. 在服务器上建立和原服务器对应的数据库。(不对应也无所谓了) 3. 把原服务器数据文件COPY新服务器上。 4. 之后把原服务器edb文件和新服务器数据库文件进行名字互换。 5. 删除新服务器LOG。 6. 使用ESEUTIL /mh检查数据库是否是clean.(有时候即使是干净的库也需要进行一致性的修复的) 7. 使用ESEUTIL /P “数据库文件”进行一致性修复。(必须要做) 8. 挂载数据库。 4-8步和文档不一样,因为我实在看不懂官方文档写的。 http://technet.microsoft.com/zh-cn/library/dd876926(EXCHG.140).aspx 9.数据库挂载成功后转移客户端邮箱配置信息到新数据库上。 Get-Mailbox -Database <SourceDatabase> |where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'}| Set-Mailbox -Database <TargetDatabase> 实例: Get-Mailbox -Database <datebase-bj> |where {$_.ObjectClass -NotMatch '(SystemAttendantMailbox|ExOleDbSystemMailbox)'}| Set-Mailbox -Database <batebase-new> 原来数据库:datebase-bj 新数据库:batebase-new 执行后可以选择全部转移,还是单个用户转移。比较灵活的。 |
| 欢迎光临 邮件服务器-邮件系统-邮件技术论坛(BBS) (http://bbs.5dmail.cn/) | Powered by Discuz! X3.2 |