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

clip_image001

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

clip_image002

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

clip_image003

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

clip_image004

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

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

clip_image005

我们自定义备份

clip_image006

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

clip_image007

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

clip_image008

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

clip_image009

选择备份路径

clip_image010

备份完成

clip_image011

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

clip_image012

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

clip_image013

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

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

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

clip_image014

选择备份日期

clip_image015

选择恢复类型

clip_image016

选择恢复的项目

clip_image017

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

clip_image018

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

clip_image019

准备好后可以恢复

clip_image020

开始恢复

clip_image021

恢复完成

clip_image022

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

clip_image023

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

使用 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"

clip_image024

我们查看state的状态为dirty shutdown

clip_image025

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

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

clip_image026

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

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

clip_image027

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

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"

clip_image028

1
Restart-Service MsexchangeIS

clip_image029

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

1
Get-mailboxdatabase

clip_image030

设置RDB可以restore:

1
Set-MailboxDatabase -Identity RDB -AllowFileRestore $ true

clip_image031

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

1
Mount-Database -Identity RDB

clip_image032

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

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

clip_image033

接下来就是正式的数据恢复了,我们要将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

clip_image034

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

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

clip_image035

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

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

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

sourceDatabase : RDB 为还原数据库

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

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

clip_image036

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

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

clip_image035[1]

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

从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: 要还要的目标的用户信息

clip_image037

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

1
Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest

clip_image038

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

clip_image039

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

clip_image040

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

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,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
JSON 前端开发 JavaScript
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
SSMP整合案例第五步 在前端页面上拿到service层调数据库里的数据后列表
6 2
|
1天前
|
SQL druid Java
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
7 1
|
2天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之odps数据库T1有几百行的数据,为什么出来只有5行的数据
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4天前
|
存储 关系型数据库 MySQL
关系型数据库mysql数据文件存储
【6月更文挑战第15天】
14 4
|
5天前
|
Java 数据库连接 数据库
实现Spring Boot与MyBatis结合进行数据库历史数据的定时迁移
实现Spring Boot与MyBatis结合进行数据库历史数据的定时迁移
20 2
|
4天前
|
SQL 数据库
零基础学习数据库SQL语句之操作表中数据的DML语句
零基础学习数据库SQL语句之操作表中数据的DML语句
7 0
零基础学习数据库SQL语句之操作表中数据的DML语句
|
1天前
|
时序数据库
时序数据库工具grafana里的$timeFilter查询1个小时内的数据如何写查询条件
【6月更文挑战第24天】时序数据库工具grafana里的$timeFilter查询1个小时内的数据如何写查询条件
3 0
|
4天前
|
SQL 前端开发 关系型数据库
零基础学习数据库SQL语句之查询表中数据的DQL语句
零基础学习数据库SQL语句之查询表中数据的DQL语句
5 0
|
7天前
|
人工智能 Cloud Native 大数据
涛思数据荣获 CCF 数据库专委会铂金合作伙伴
CCF SiftDB 2024在南宁落幕,聚焦数据库前沿,200余专家共议数据要素。涛思数据签署成为CCF铂金合作伙伴,创始人陶建辉强调技术创新与生态建设,TDengine已服务全球超545k实例,广泛应用于多元领域。未来,将持续深化合作,共创数据库产业辉煌。
14 0
|
8天前
|
关系型数据库 MySQL API
实时计算 Flink版操作报错合集之同步MySQL数据到另一个MySQL数据库,第一次同步后源表数据发生变化时目标表没有相应更新,且Web UI中看不到运行的任务,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

热门文章

最新文章