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日志并进行多维度分析。
相关文章
|
22天前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
4天前
|
存储 SQL 关系型数据库
数据库事务:确保数据完整性的关键20
【7月更文挑战第20天】事务是数据库操作的基本逻辑单位,确保数据一致性。ACID原则包括:原子性(操作全成或全败),一致性(事务前后数据合法性),隔离性(并发操作互不影响),持久性(提交后更改永久保存)。MySQL的InnoDB引擎支持事务,通过undo log实现回滚,redo log确保数据持久化。开启事务可使用`BEGIN`或`START TRANSACTION`,提交`COMMIT`,回滚`ROLLBACK`。
131 70
|
9天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7天前
|
存储 负载均衡 定位技术
现代数据库系统中的数据分片策略与优化
数据分片在现代数据库系统中扮演着关键角色,特别是在面对海量数据和高并发访问的情况下。本文探讨了数据分片的基本概念、常见的分片策略(如水平分片与垂直分片)、以及如何通过优化和选择合适的分片策略来提升数据库系统的性能和可扩展性。
|
8天前
|
数据采集 分布式计算 大数据
MaxCompute产品使用合集之数据集成中进行数据抽取时,是否可以定义使用和源数据库一样的字符集进行抽取
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
10天前
|
Java 关系型数据库 数据库
实时计算 Flink版产品使用问题之如何将增量数据直接写入下游数据库
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
数据的资产怎么被AI驱动的数据库理解
数据的资产怎么被AI驱动的数据库理解
|
10天前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之从OceanBase(OB)数据库调度数据到MySQL数据库时遇到连接报错,该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
11天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之从MySQL数据库中捕获变更数据并进行实时处理如何按天分表同步CDC数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之JdbcSink是否支持将数据写入到MySQL数据库中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。