当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

作者:精品下载站 日期:2024-12-14 03:36:26 浏览:14 分类:玩电脑

如何恢复 Exchange Server 邮箱数据库


Exchange Server 崩溃了,并且无法再启动。我们希望将邮箱数据库安装在第二台 Exchange 服务器上。不幸的是,没有安装邮箱数据库的按钮。在本文中,您将了解如何在不丢失任何数据的情况下还原 Exchange Server 邮箱数据库。

介绍

我们有一个无法启动的故障 Exchange Server 2019 (EX01-2019) 和一个稳定的 Exchange Server 2019 (EX03-2019)。

有两个邮箱数据库:

  • 邮箱数据库 DB01 是 EX01-2019 上使用的唯一邮箱数据库。不幸的是,现在EX01-2019已脱机,数据库邮箱挂载状态为未知(脱机),并且没有任何作用。
  • 邮箱数据库邮箱数据库已安装到 EX03-2019 并且未使用。它的健康状况良好。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

那么我们如何将Exchange邮箱数据库恢复到新的Exchange Server EX03-2019呢?

将 Exchange 邮箱数据库恢复到新服务器

我们有邮箱数据库 DB01 (.edb) 文件。但是我们如何将邮箱数据库 (.edb) 文件安装到新的 Exchange Server 上呢?没有选项可以从 Exchange 管理中心的文件路径或使用 PowerShell 装载数据库。

Exchange Server 有一项称为数据库可移植性的功能。这允许将一台邮箱服务器上的邮箱数据库移动并安装到同一组织内的另一台邮箱服务器上。

重要提示:使用数据库可移植性恢复邮箱数据库时,源和目标 Exchange 服务器上的操作系统版本和 Exchange Server 版本必须相同。例如,如果 Exchange 2016 邮箱数据库之前安装在运行 Windows Server 2016 的服务器上,则仅当将数据库迁移到同时运行 Windows Server 2016 和 Exchange 2016 的服务器时,数据库可移植性才起作用。

步骤1.获取源邮箱数据库关闭状态

我们必须检查数据库关闭状态来决定下一步做什么。

启动命令提示符并运行以下命令。

eseutil /mh "C:\Backup\DB01\DB01.edb"

您还可以运行以下命令以仅显示 State 属性。

eseutil /mh "C:\Backup\DB01\DB01.edb" | findstr "State:"

输出将显示值Clean ShutdownDirty Shutdown

State: Clean Shutdown

步骤2.对源邮箱数据库执行软恢复

如果邮箱数据库处于“干净关闭”状态或者您没有事务日志,则可以跳过此步骤。

当数据库处于脏关闭状态且所有事务日志文件可用时,执行数据库的软恢复。这会将所有未提交的事务日志提交到数据库中,以便不会丢失数据。

在命令提示符中运行以下命令对邮箱数据库执行软恢复。

  • /r:日志前缀
  • /l:日志文件的路径
  • /d:数据库文件路径
  • /s:检查点文件的路径
eseutil /r E00 /l "C:\Backup\DB01 Logs" /d "C:\Backup\DB01" /s "C:\Backup\DB01 Logs"

将出现以下输出。

Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 15.02
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating RECOVERY mode...
    Logfile base name: E00
            Log files: C:\Backup\DB01 Logs
         System files: C:\Backup\DB01 Logs
   Database Directory: C:\Backup\DB01

Performing soft recovery...
                      Restore Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................



Operation completed successfully in 3.78 seconds.

步骤3.创建目标邮箱数据库

以管理员身份运行 Exchange 命令行管理程序。在将用于装载数据库的 Exchange Server 上创建新的邮箱数据库。指定数据库文件和事务日志的路径。

注意:它将在路径中创建文件夹,但邮箱数据库文件或数据库日志不会出现在那里。仅当您挂载邮箱数据库时才会出现。但是,您现在不会装载数据库,因为您需要在后续步骤之一中将其替换为备份。

New-MailboxDatabase -Name "DB01-Recovered" -Server "EX03-2019" -EdbFilePath "E:\DB01-Recovered\DB01.edb" -LogFolderPath "F:\DB01-Recovered"

将出现以下输出。

Name                           Server          Recovery        ReplicationType
----                           ------          --------        ---------------
DB01-Recovered                 EX03-2019       False           None
WARNING: Please restart the Microsoft Exchange Information Store service on server EX03-2019 after adding new mailbox
databases.

将数据库标记为可覆盖。 -AllowFileRestore 参数指定是否允许从备份恢复数据库。

Set-MailboxDatabase "DB01-Recovered" -AllowFileRestore:$true

重要提示:请勿装载邮箱数据库。首先,您必须移动源邮箱数据库文件。

步骤 4. 移动源邮箱数据库和日志文件

从备份或非启动 Exchange Server 获取邮箱数据库。

将源邮箱数据库和日志文件移动到您在上一步中创建的目标路径。

复制邮箱数据库DB01.edb

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

将其粘贴到 EX03-2019 上的路径 E:\DB01-Recovered 中。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

复制邮箱数据库DB01 日志。如果您没有邮箱数据库事务日志,可以跳过此步骤。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

将其粘贴到路径F:\DB01-Recovered中。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

步骤5.挂载目标数据库

装载数据库DB01-Recovered

Mount-Database "DB01-Recovered"

验证您是否看到 Exchange 管理中心中装载的邮箱数据库DB01-Recovered

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

步骤 6. 设置用户邮箱数据库

让我们将邮箱从 DB01 重新放置到 DB01-Recovered

获取数据库 DB01 上的邮箱。

Get-Mailbox -Database "DB01" -ResultSize Unlimited

它向用户显示他们已连接到 EX01-2019,这是完全正常的。

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
Administrator             Administrator        ex01-2019        Unlimited
Max Fraser                Max.Fraser           ex01-2019        Unlimited
Richard Hunter            Richard.Hunter       ex01-2019        Unlimited
Boris Campbell            Boris.Campbell       ex01-2019        Unlimited
Alysia Maverick           Alysia.Maverick      ex01-2019        Unlimited
Christopher Payne         Christopher.Payne    ex01-2019        Unlimited
Nicholas Murray           Nicholas.Murray      ex01-2019        Unlimited
James Paterson            James.Paterson       ex01-2019        Unlimited
sharedmailboxonprem       sharedmailboxonprem  ex01-2019        Unlimited

您必须将邮箱设置为新的数据库名称DB01-Recovered

更改单个用户的邮箱数据库。这会将属性设置为邮箱数据库DB01-Recovered,并自动设置服务器名称EX03-2019

Set-Mailbox -Identity "Boris.Campbell" -Database "DB01-Recovered" -Force

为所有用户设置。

Get-Mailbox -Database "DB01" -ResultSize Unlimited | Set-Mailbox -Database "DB01-Recovered" -Force

如果环境有问题,Get-Mailbox cmdlet 将不会显示邮箱。因此,您需要改用 Get-ADUser cmdlet。

Get-ADUser -Filter * -Properties msExchHomeServerName, homeMDB | Select-Object Name, msExchHomeServerName, homeMDB | Sort-Object Name | Out-GridView

这将显示所有用户。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

并非所有用户都有邮箱,并且他们可以位于不同的数据库中。因此,我们只过滤 Exchange Server EX01-2019 和邮箱数据库 DB01 中的用户。

# Define variables
$msExchHomeServerName = "/o=EXOIP/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=EX01-2019"
$homeMDB = "CN=DB01,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=EXOIP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=exoip,DC=local"

# Get users matching the specified criteria
Get-ADUser -Filter {msExchHomeServerName -eq $msExchHomeServerName -and homeMDB -eq $homeMDB} -Properties msExchHomeServerName, homeMDB | Select-Object Name, msExchHomeServerName, homeMDB | Sort-Object Name | Out-GridView

这就是输出的样子。

[玩转系统] 如何恢复 Exchange Server 邮箱数据库

让我们为所有过滤的用户设置新的邮箱数据库DB01-Recovered

# Define variables
$msExchHomeServerName = "/o=EXOIP/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=EX01-2019"
$homeMDB = "CN=DB01,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=EXOIP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=exoip,DC=local"

# Get users matching the specified criteria
$users = Get-ADUser -Filter {msExchHomeServerName -eq $msExchHomeServerName -and homeMDB -eq $homeMDB} -Properties SamAccountName, msExchHomeServerName, homeMDB

# Iterate through each user and set the mailbox database
foreach ($user in $users) {
    Set-Mailbox -Identity $user.SamAccountName -Database "DB01-Recovered" -Force
    Write-Host "Mailbox database set for user $($user.SamAccountName)" -ForegroundColor Green
}

上述命令仅重新定位邮箱,而不是存档邮箱。要重新定位存档邮箱,您必须更改 msExchArchiveDatabaseLink 属性值。

查找邮箱数据库 DB01 上的存档邮箱。

$msExchArchiveDatabaseLink = "CN=DB01,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=EXOIP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=exoip,DC=local"

# Get users matching the specified criteria
Get-ADUser -Filter { msExchArchiveDatabaseLink -eq $msExchArchiveDatabaseLink } -Properties SamAccountName, msExchArchiveDatabaseLink, msExchHomeServerName | Select-Object Name, msExchArchiveDatabaseLink, msExchHomeServerName | Sort-Object Name | Out-GridView

让我们为所有存档邮箱设置新的邮箱数据库DB01-Recovered

# Define variable
$msExchArchiveDatabaseLink = "CN=DB01,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=EXOIP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=exoip,DC=local"
$msExchArchiveDatabaseLinkNew = "CN=DB01-Recovered,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=EXOIP,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=exoip,DC=local"

# Get users matching the specified criteria
$users = Get-ADUser -Filter { msExchArchiveDatabaseLink -eq $msExchArchiveDatabaseLink } -Properties msExchArchiveDatabaseLink

# Update the msExchArchiveDatabaseLink attribute for each user
foreach ($user in $users) {
    Set-ADUser -Identity $user -Replace @{msExchArchiveDatabaseLink = $msExchArchiveDatabaseLinkNew }
    Write-Host "Mailbox database set for user $($user.SamAccountName)" -ForegroundColor Green
}

步骤 7. 获取目标数据库上的邮箱

验证邮箱是否托管在邮箱数据库DB01-Recovered中。

Get-Mailbox -ResultSize Unlimited -Database "DB01-Recovered"
Get-Mailbox -ResultSize Unlimited | Where {$_.ArchiveDatabase -like "DB01-Recovered"}

检查数据库 DB01 中的邮箱,不会有任何结果。

Get-Mailbox -ResultSize Unlimited -Database "DB01" 
Get-Mailbox -ResultSize Unlimited | Where {$_.ArchiveDatabase -like "DB01"}

接下来是什么?

邮箱数据库DB01-Recovered已上线,每个人都可以连接到Exchange Server并继续他们的工作。

您现在可以恢复EX01-2019服务器。请按照以下文章之一恢复 Exchange Server:

  • 恢复 Exchange Server(独立)
  • 恢复 Exchange DAG 成员服务器

如果您不使用 /Mode:RecoverServer 开关(如两篇文章中所示),您将在组织中安装新的 Exchange Server。虽然这不是推荐的方法,但它会起作用。但是,您必须从 ADSI 编辑中删除旧的 Exchange Server,并在 Exchange Server 上设置更多后期配置。

就是这样!

了解更多:使用 PowerShell 脚本进行 Exchange Server 运行状况检查 »

结论

您学习了如何还原 Exchange Server 邮箱数据库。备份邮箱数据库始终至关重要,因为这是存储所有邮箱信息的地方。按照以下步骤将备份的邮箱数据库装载到另一台 Exchange Server。

您喜欢这篇文章吗?您可能还喜欢在 Exchange Server 中创建用户邮箱。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯