Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

作为一名企业管理员,我需要掌握很多技能,我们前面介绍了关于Exchange服务的相关灾难恢复的演示,今天我们介绍的是Exchange2013/2016创建恢复数据库及还原单用户数据,环境介绍为:我们日常会对Exchange的相关数据库进行备份,如果用户不小心删除了一些邮件,我们需要进行还原的环境演练,如果要进行单用户的邮箱数据恢复,我们需要使用恢复数据进行还原用户的相关数据,接下来明晚首先介绍一下恢复数据库的相关介绍:

恢复数据库(RecoveryDataBase)

恢复数据库(RDB)是ExchangeServer2010中一种特殊的邮箱数据库,通过它您可以装入还原的邮箱数据库,并可以在恢复操作中从还原的数据库提取数据。提取后,可将数据导出到一个文件夹或者合并到一个现有邮箱中。并且整个邮件恢复过程中,不会干扰用户对当前数据的访问。

MicrosoftExchangeServer2010支持将数据直接还原到恢复数据库。通过将已恢复的数据作为恢复数据库装入,管理员可以还原单个邮箱或邮箱中的单个项目。

ExchangeServer2010中的恢复数据库(RDB)非常类似ExchangeServer2007中的恢复存储组(RSG)。使用过ExchangeServer2007中的RSG的朋友,对ExchangeServer2010中的RDB会比较容易上手,但在2007版本中可以通过图形界面管理控制台(EMC)完成RSG的创建和管理,而在ExchangeServer2010中,几乎所有对RDB的操作都需要在EMS下进行,这无形中也增加了RDB理解和学习的难度。

恢复数据库与标准邮箱数据库的不同

首先让我们来看看RDB与标准邮箱数据库在以下几个方面不同:

●RDB是通过Exchange命令行管理程序进行创建的。

●不可以从RDB发送邮件,或将邮件发送给RDB。将阻止所有客户端协议(包括SMTP、POP3和IMAP4)对RDB的访问。此设计可防止使用RDB将邮件插入邮件系统或将邮件从邮件系统中删除。

●将阻止使用MicrosoftOfficeOutlook或OutlookWebApp的客户端MAPI访问。RDB支持MAPI访问,但是仅受恢复工具和应用程序的支持。使用MAPI登录RDB中的邮箱时,必须指定邮箱GUID和数据库GUID。

●RDB中的邮箱无法连接到用户帐户。要允许用户访问RDB中的邮箱的数据,则必须将邮箱合并到现有邮箱或导出到文件夹中。不能使用系统管理策略和邮箱管理策略。此设计可以防止恢复过程中系统删除RDB中的项目。

●不能为RDB执行联机维护。

●不能为RDB启用循环日志记录。

●RDB仅用于恢复邮箱数据库数据。不能使用RDB恢复公用文件夹数据。

●任何时候只能在一个邮箱服务器中装入一个RDB。RDB的使用量不受每个邮箱服务器最多可以有100个数据库的限制。

●不能创建RDB的邮箱数据库副本。

●RDB可用作还原操作的目标,但不能用于备份操作。

●作为RDB装入的已恢复的数据库不会以任何方式绑定到原始邮箱

恢复数据库的应用场景

RDB只能用于Exchange2010邮箱数据库。不支持来自以前版本的Exchange的邮箱数据库。此外,用于数据合并和提取的目标邮箱必须与RDB中装入的数据库位于同一个ActiveDirectory林。

在一些情况下,可将RDB用于恢复数据,例如:

●同一服务器拨号音恢复:从备份还原原始数据库后,可以从RDB进行恢复,作为拨号音恢复操作的一部分。

●备用服务器拨号音恢复:可以使用备用服务器来驻留拨号音数据库,然后在将原始数据库从备份恢复后,从RDB恢复数据。

●邮箱恢复:当超过已删除邮箱的保留期时,可以从备份恢复单个邮箱。然后,从已还原的邮箱中提取数据并将其复制到目标文件夹或与其他邮箱进行合并。

●特定项目恢复:您可以从已从邮箱中删除或清除的备份数据进行还原。

RDB实战演练

为了让大家更加直接的看到RDB的应用过程,笔者模拟了一个实验环境,某收件人jack误删了某些邮件,现致电管理员,要求恢复这些邮件,管理员需要响应Jack的要求,帮助其恢复所需邮件,并且此过程中,其他收件人的邮箱,以及Jack自己的邮箱必须仍然能够使用

创建 RDB 之后,可以通过使用备份应用程序或通过将数据库及其日志文件复制到 RDB 文件夹结构,将邮箱数据库还原到该 RDB 中。然后,可以使用 New-MailboxRestoreRequest cmdlet 从恢复的数据库中提取数据。提取数据后,可以将该数据导出到某个文件夹或合并到某个现有的邮箱中。

邮箱数据库和恢复数据库之间的区别

RDB 和标准邮箱数据库在以下几个方面不同:

RDB 是通过 Exchange 命令行管理程序进行创建的。

不可以从 RDB 发送邮件,或将邮件发送给 RDB。将阻止所有客户端协议(包括 SMTP、POP3 和 IMAP4)对 RDB 的访问。此设计可防止使用 RDB 将邮件插入邮件系统或将邮件从邮件系统中删除。

将阻止使用 Microsoft OfficeOutlook 或 Outlook Web App 的客户端 MAPI 访问。 RDB 支持 MAPI 访问,但是仅受恢复工具和应用程序的支持。使用 MAPI 登录 RDB 中的邮箱时,必须指定邮箱 GUID 和数据库 GUID。

RDB 中的邮箱无法连接到用户帐户。要允许用户访问 RDB 中的邮箱的数据,则必须将邮箱合并到现有邮箱或导出到文件夹中。

不能使用系统管理策略和邮箱管理策略。 此设计可以防止恢复过程中系统删除 RDB 中的项目。

不能为 RDB 执行联机维护。

不能为 RDB 启用循环日志记录。

任何时候只能在一个邮箱服务器中装入一个 RDB。 RDB 的使用量不受每个邮箱服务器的数据库限制。

不能创建 RDB 的邮箱数据库副本。

RDB 可用作还原操作的目标,但不能用于备份操作。

作为 RDB 装入的已恢复的数据库不会以任何方式绑定到原始邮箱。

试验前,我们首先回忆当前试验环境

我们使用user01这个邮箱用户,然后登陆owa;

我们可以看见,user01这个邮箱用户下有不同时间的测试邮件

同样我们查看当前用户user01的数据库信息

Get-mailbox -identity user01 | fl database

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

然后我们首先确认user01用户的邮件信息

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

然后我们创建备份还原路劲,我们在Q盘下创建还原目录

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

所以我们需要对用户的邮箱进行备份,然后进行还原,此次过程中,我们使用系统自带的windos server backup进行备;我们首先安装windows serverbackup服务

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

备份服务安装好后,就是开始备份了

因为我们只是测试,所以我们选择一次性备份

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

我们自定义备份

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

我们选择需要备份的数据库;我们前面看见user01所在的数据库为DB01,所以我们需要备份DB01

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择选择需要备份的数据库,然后单击高级设置

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择VSS设置---VSS完整备份

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择备份路径

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

备份完成

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

备份完成后,我们在Q盘可以看见备份的信息

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

备份后,我们将user01下的用户邮箱中的邮件删除

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

删除后,我们接着就是还原备份数据到指定的路径下:

接下来就是还原数据库了,首先我们将通过windows serverbackup备份的数据还原到RDB01上,

我们打开windows server backup---单击恢复

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择备份日期

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择恢复类型

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择恢复的项目

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

选择恢复的选项----我们选择其他

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

我们选择恢复到还原数据库目录下

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

准备好后可以恢复

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

开始恢复

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

恢复完成

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

接下来我们查看恢复数据库目录下的信息

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

还原备份数据库到指定目录后,接下来我们需要对

使用 Eseutil 将该数据库置于干净关闭状态。在以下示例中,EXX 是数据库的日志生成前缀(例如,E00、E01、E02 等等)。   

1
Eseutil /R EXX /l <RDBLogFilePath> /d <RDBEdbFolder>

以下示例说明了 E01 日志生成前缀、恢复数据库和日志文件路径 E:\Databases\RDB1:    

1
Eseutil /R E01 /l E:\Databases\RDB1 /d E:\Databases\RDB1

注:我们还原目录中的数据库日志生成前缀为E01,所以我们需要使用数据库恢复前缀E01即可

我们首先使用以下命令进行查看恢复的数据库的干净状态

1
Eseutil.ext /mh "Q:\recovery\RDB\db01.edb"

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

我们查看state的状态为dirty shutdown

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

所以我们需要使用以下命令进行将还原的数据库进行处理干净

1
Eseutil.exe /r e01 /I /d "q:\recovery\rdb" /a /l "q:\recovery\rdb"

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

然后我们继续使用以下命令继续查看还原数据库的状态是否为clean shutdown

1
Eseutil.ext /mh "Q:\recovery\RDB\db01.edb"

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

接下来我们就是创建恢复数据库

https://technet.microsoft.com/ZH-CN/library/ee332321(v=exchg.150).aspx

我们在其中一台Mailbox服务器上

创建一个恢复数据库。为该恢复数据库指定一个唯一的名称,但要将数据库文件的名称和路径用于 EdbFilePath 参数,将恢复的日志文件的位置用于 LogFolderPath 参数。

1
New-MailboxDatabase -Recovery -Name <RDBName> -Server <ServerName> -EdbFilePath <RDBPathandFileName> -LogFolderPath <LogFilePath>

注:如果要移除数据库的话

Remove-MailboxDatabase -Recovery -Name <RDBName> -Server <ServerName> -EdbFilePath <RDBPathandFileName> -LogFolderPath <LogFilePath>

所以我们使用以下命令来创建一个恢复数据库

确保EDB文件为clean shutdown后,创建新的RDB,使用从备份中还原出来的DB01.edb文件:

1
New-MailboxDatabase -Recovery -Name RDB -Server IXM-EX01 -EdbFilePath "Q:\Recovery\RDB\DB01.EDB"

-Name中的RDB名称为 RDB数据库的显示名称;

而指定EDBfilepath路劲中的DB01.EDB的名称建议修改为还原数据库的名称,

注:如果提示需要制定logfolderpath的话在参数后面添加即可

1
New-MailboxDatabase -Recovery -Name RDB -Server IXM-EX01 -EdbFilePath "Q:\Recovery\RDB\DB01.EDB" -LogFolderPath "Q:\Recovery\RDB"

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

1
Restart-Service MsexchangeIS

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

创建完成RDB后,我们查看当前的所有数据库信息

1
Get-mailboxdatabase

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

设置RDB可以restore:

1
Set-MailboxDatabase -Identity RDB -AllowFileRestore $true

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

Mount数据库,并查找你要还原的邮箱:

1
Mount-Database -Identity RDB

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

验证已装入的数据库包含您希望还原的邮箱:

1
2
Get-MailboxStatistics -Database <RDBName> | ft -auto
Get-mailboxStatistics -Database RDB | ft -auto

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

接下来就是正式的数据恢复了,我们要将RDB下的数据恢复到user01下

恢复数据库 (RDB) 是一种特殊的邮箱数据库,通过它您可以从在恢复操作中还原的邮箱数据库装入和提取数据。RSG 使您能够从备份或数据库副本中恢复数据,而不会影响用户对当前数据的访问。

创建 RDB 之后,可以通过使用备份应用程序或通过将数据库及其日志文件复制到 RDB 文件夹结构,将邮箱数据库还原到该 RDB 中。然后,可以使用 New-MailboxRestoreRequest cmdlet 从恢复的数据库中提取数据。提取数据后,可以将该数据导出到某个文件夹或合并到某个现有的邮箱中。

https://technet.microsoft.com/ZH-CN/library/ee332351(v=exchg.150).aspx

使用 New-MailboxRestoreRequest cmdlet 将邮箱或项目从恢复数据库还原到生产邮箱中。

以下示例将邮箱数据库 DB1 上具有 MailboxGUID 1d20855f-fd54-4681-98e6-e249f7326ddd 的源邮箱还原到具有别名 Morris 的目标邮箱。   

1
New-MailboxRestoreRequest -SourceDatabase DB1 -SourceStoreMailbox a10d9f18a5b94028a73 5bb90fd67c1a4-user01 -TargetMailbox user01

以下示例将邮箱数据库 DB1 上具有显示名称 Morris Cornejo 的源邮箱的内容还原至 Morris@contoso.com 存档邮箱。   

1
New-MaiboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox "Morris Cornejo" -TargetMailbox Morris@contoso.com -TargetIsArchive

所以我们需要通过命令查看RDB数据库中所需要还用用户所需要的信息:

1
Get-MailboxStatistics -Database RDB | fl displayname,mailboxguid,itemcount

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

上面的命令是显示的是列fl,所以我们为了方便显示显示table方式

1
Get-MailboxStatistics -Database RDB | ft displayname,mailboxguid,itemcount

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

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

从RDB数据库中选择源为User01的数据库信息还原到本地用户数据对应的用户user01中

1
New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox User01 -TargetMailbox user01

sourceDatabase : RDB 为还原数据库

SourceStoreMailbox:user01 位RDB中显示需要还原的用户信息

targetMailbox user01: 要还要的目标的用户信息

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

当然我们也可以使用mailboxguid进行还原

1
Get-MailboxStatistics -Database RDB | ft displayname,mailboxguid,itemcount

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

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

从RDB数据库中选择源为User01的数据库信息还原到本地用户数据对应的用户user01中

1
2
3
4
New-MailboxRestoreRequest -SourceDatabase RDB -SourceStoreMailbox 6aabcdc9-83df-49a8-af6d-2fe3a725bebc -TargetMailbox user01
sourceDatabase : RDB 为还原数据库
SourceStoreMailbox:guid 位RDB中显示需要还原的用户信息字符中的guid
targetMailbox user01: 要还要的目标的用户信息

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

使用 Get-MailboxRestoreRequest 定期检查邮箱还原请求的状态。    
当还原状态为“已完成”时,使用 Remove-MailboxRestoreRequest 删除还原请求。例如:    

1
Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

查看后我们可以删除还原记录

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

最后我们查看user01删除的邮件是否还原成功了

Exchange2013/2016下通过RDB(恢复数据库)还原用户邮箱数据

最后我们总结一下相关命令

1
2
3
4
Dismount-database -identity RDB01 断开数据库
Remove-mailboxdatabase -identity RDB01 删除数据库
eseutil /p “Q:\Recovery\RDB\DB01.EDB” 修复数据库
Restart-service msexchangeis 重启exchange存储服务




本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1726201,如需转载请自行联系原作者
上一篇:ServiceBase 备份


下一篇:在Sbo Add-on插件中实现通用的模态数据选择