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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

作为一名企业管理员,我需要掌握很多技能,我们前面介绍了关于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月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
27天前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
157 61
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
137 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
25天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
2月前
|
人工智能 Cloud Native 容灾
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
|
2月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
139 3
|
2月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
2月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
420 4
|
2月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
下一篇
DataWorks