Exchange Server 2016通过RDB(恢复数据库)还原用户邮箱数据

在 Microsoft Exchange Server 2016 中,将归档的数据库文件(.edb 文件)重新挂载到 Exchange 管理中心 (ECP) 上,可以通过以下步骤实现。此过程主要包括还原数据库、将其挂载到Exchange,并在 ECP 中管理用户归档邮箱。以下是具体步骤:

---

步骤 1:确保文件准备就绪


1. 确认 `.edb` 文件以及相关日志文件(如果有)完整无损。
2. 确认归档数据库的物理路径位置,并确保文件权限允许 Exchange 服务访问。

---

步骤 2:恢复数据库到 Exchange


1. **打开 Exchange 管理外壳 (EMS):**  
   使用管理员权限打开 Exchange Management Shell。
   
2. **检查数据库状态:**

  eseutil /mh "C:\Path\To\YourDatabase.edb"


   - 确认数据库状态是 `Clean Shutdown`。

 
   - 如果状态是 `Dirty Shutdown`,需要修复数据库:

 eseutil /r E10 /l "C:\Path\To\LogFiles" /d "C:\Path\To\YourDatabase.edb" 


     - 替换 `E10` 为日志文件的前缀。

这里报错说没找到日志文件的路径,使用/p恢复

eseutil /p "E:\ExchV15\Mailbox\IDC-ArchDB-11-20220822\IDC-ArchDB-11-20220822.edb"


 

再次验证数据库状态

eseutil /mh "C:\Path\To\YourDatabase.edb"

3. **创建恢复数据库:**
   使用以下命令创建一个恢复数据库(RDB):
 

   New-MailboxDatabase -Recovery -Name "ArchiveDB_Restore" -Server "YourServerName" -EdbFilePath "C:\Path\To\YourDatabase.edb" -LogFolderPath "C:\Path\To\LogFiles"

在这一步可能会报错

移走目录下的*.log文件再次挂载就行

重启exchange服务

Restart-Service MsexchangeIS

设置RDB可以Restore:

Set-MailboxDatabase -Identity RDB -AllowFileRestore $true

4. **挂载恢复数据库:**
   挂载恢复数据库到 Exchange:
 

Mount-Database -Identity "ArchiveDB_Restore"

这一步可能报错:

报错说挂载的数据库邮箱太多,

a、移除一些不必要的数据库(特别是之前回挂的归档数据库 经测试一次在一台Host 只能挂一个Recovery状态数据库)

或者

b、删除了一些没用的数据库依旧这个报错,查看到KB说是由存在日志文件,所有*.log文件都需要移走,重复新建数据库步骤,再挂载。

运行以下命令列出恢复数据库中的邮箱

Get-MailboxStatistics -Database "IDC-ArchDB-11-20220822" | Select DisplayName,ItemCount,MailboxGuid

有了上面的数据后,我们就可以还原邮件了

这里新创建一个数据库,用于新建目标邮箱(也可以使用生产中正常邮箱)

注意磁盘空间大小

新建邮箱账号(archiveuser133)与数据库(archiveuser133-re)时

把页面中所有size限制都设置为 “unlimited”。

步骤 3:将归档邮箱恢复到用户邮箱


1. **列出恢复数据库中的邮箱:**
  

Get-MailboxStatistics  -Database "IDC-ArchDB-11-20220822" |ft displayname,mailboxguid,itemcount
DisplayName                                                    MailboxGuid                          ItemCount
-----------                                                    -----------                          ---------
SystemMailbox{773d9152-5edf-412b-9499-2f95411886e6}            9386c5a1-57cf-4888-aa6e-a79019f7ad9f        27
HealthMailbox-IDC-SR-MAIL-06-IDC-ArchDB-11-20220822            98dc413a-0cb0-49df-af11-783ec091064f       186
就地存档 - HealthMailbox-IDC-SR-MAIL-06-IDC-ArchDB-11-20220822 23dbbdd3-957c-462e-9e2f-14d0e3dfa161        33
邮件存档033                                                    0069759e-39cd-430e-9d09-4685ddb6379b    106017


2. **恢复邮箱到目标邮箱:**


   使用以下命令将恢复数据库中的邮箱归档数据合并到用户的主邮箱:

   New-MailboxRestoreRequest -SourceDatabase "ArchiveDB_Restore" -SourceStoreMailbox "MailboxGuidOrDisplayName" -TargetMailbox "TargetMailbox"

   - 替换 `MailboxGuidOrDisplayName` 为要恢复的邮箱的 GUID 或显示名称。
   - 替换 `TargetMailbox` 为目标用户邮箱。

这里报错了,按照提示命令后面添加 -AllowLegacyDNMismatch

3. **检查恢复进度:**

   Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics


  

### 注意事项
- 如果归档数据库涉及旧版本 Exchange 或迁移场景,请确保与当前 Exchange 版本兼容。
- 确保有完整备份,特别是在修复或挂载数据库之前,以防数据损坏。
- 如果数据库过大,恢复可能需要较长时间,请确保有足够磁盘空间和计算资源。

-恢复邮件数据时 可以查看下有没有速率限制

Set-Mailbox -Identity xxx@some.com -ThrottlingPolicy CMMigratePolicy

微软官网步骤: 使用恢复数据库还原数据:Exchange 2013 帮助 | Microsoft Learn

Eseutil: Exchange 2007 帮助 | Microsoft Learn

后续:    

由于在挂载邮箱数据库时未开启循环日志,把文件系统撑爆了,无法正常完成恢复邮件的任务


1. 检查邮箱是否已禁用或存在损坏

检查邮箱启用状态:

Get-Recipient -Identity "archiveuser135" 

确认邮箱是否处于禁用状态。如果没有返回信息,可能需要进一步检查邮箱是否被隐藏或禁用。

检测邮箱是否损坏:

New-MailboxRepairRequest -Mailbox "archiveuser135" -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,FolderView 

这将启动邮箱修复过程,用于修复常见的邮箱损坏问题。


2. 测试邮箱访问和连接

使用 Test-MAPIConnectivity 检查邮箱数据库

Test-MAPIConnectivity -Database "archiveuser135-re"

Test-MAPIConnectivity -Identity "archiveuser125"

此命令会验证邮箱的 MAPI 连接是否正常。如果返回错误,请根据错误消息进一步排查。

邮箱故障

3. 检查邮箱是否被隔离

使用以下命令确认邮箱隔离状态:

Get-MailboxStatistics -Identity "archiveuser135" | Select DisplayName, IsQuarantined 

如果 IsQuarantined 返回 True,邮箱已被隔离。


4. 手动解除邮箱隔离

方法一:直接删除隔离状态

删除隔离状态的注册表项:

  1. 打开注册表编辑器 (regedit)

  2. 导航到以下路径:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<ServerName>\Private-<Database GUID>\QuarantinedMailboxes

  3. 找到 archiveuser135 对应的键并删除。(我在注册表中没找到对应服务名)
方法二:通过 PowerShell 停止隔离

可以使用 PowerShell 解除隔离:

Stop-Service MSExchangeIS 

Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\MSExchangeIS\<ServerName>\Private-<Database GUID>\QuarantinedMailboxes\<Mailbox GUID>" -Force Start-Service MSExchangeIS
Start-Service MSExchangeIS

 

再次验证邮箱及数据库连通性,这里等待2分钟

重建恢复请求

这里会接着上次的进度恢复

后续2:

进度已完成100%,但是StatusDetail报错failedOther

使用命令查看详细:

Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics -IncludeReport | Format-List
2024/12/2 9:45:50 [IDC-SR-MAIL-06] 出现致命错误 TooManyBadItemsPermanentException。

使用命令调大BadItemPermanentException的值

Set-MailboxRestoreRequest -Identity "MailboxRestore" -BadItemLimit 50 -AcceptLargeDataLoss

查看进度

Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics -IncludeReport | Format-List

进度恢复

最后删除任务

Get-MailboxRestoreRequest | Where-Object {$_.Status -eq "Completed"} | Remove-MailboxRestoreRequest -Confirm:$false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值