分类: 系统运维
2017-11-23 13:46:26
【摘要】
Microsoft Server 2007 和 Exchange Server 2003 包括用于数据备份和恢复的两个不同选项:可扩展存储引擎 (ESE) 流式备份 API,并且支持卷影复制服务 (VSS) 备份 API。Exchange 2010 不再支持 ESE 流式 API 用以备份和还原程序文件或数据。而 Exchange 2010 仅支持基于 VSS 的备份。我们今天就对Exchange 的VSS备份做一个简单的介绍。
【正文】
一、Exchange备份简介
Microsoft Exchange Server 2010 为高可用性和站点恢复提供了一个统一的新平台,可更快速简单地部署冗余、高可用邮箱数据库。但是,即使是最大限度的冗余和容错也无法防御每一个潜在的故障或灾难。对于所有组织而言,确保对 Exchange 组织中的关键数据提供充分的保护都是一项非常必要的操作任务。
Microsoft Exchange Server 2007 和 Exchange Server 2003 包括用于数据备份和恢复的两个不同选项:可扩展存储引擎 (ESE) 流式备份 API,并且支持卷影复制服务 (VSS) 备份 API。Exchange 2010 不再支持 ESE 流式 API 用以备份和还原程序文件或数据。而 Exchange 2010 仅支持基于 VSS 的备份。
在成功的完整备份或增量备份结束时所执行的功能之一是截断数据库恢复不再需要的事务日志文件。如果不进行备份,将不会发生日志截断。要防止累积日志文件,请为复制的数据库启用循环日志记录。
使用 VSS 备份和还原 Exchange 数据时,需要注意以下限制:
Exchange 2010 附带的 VSS 插件可用于备份包含主动邮箱数据库副本或仅包含独立(非复制)邮箱数据库的卷。无法将其用于备份包含被动邮箱数据库副本的卷。要备份被动邮箱数据库副本,你需要 Microsoft 系统中心数据保护管理器或基于 VSS 的第三方 Exchange 感知应用程序。
被动邮箱数据库副本是通过使用 Microsoft Exchange 复制服务中的独立 VSS 书写器来备份的。Microsoft Exchange 复制服务 VSS 书写器不支持还原。虽然可以使用 Microsoft 系统中心数据保护管理器或基于 VSS 的第三方 Exchange 感知应用程序来备份被动邮箱数据库副本,但是无法直接对被动邮箱数据库副本执行 VSS 还原。不过,你可以在备用位置执行 VSS 还原,挂起被动副本的复制,然后将数据库和日志文件从备用位置复制到文件系统中被动数据库副本的位置。
二、使用WSB进行备份
WSB就是Windows Server自带的Windows Server Backup这个功能,可以用来备份系统磁盘、文件、Exchange数据库等内容。
它有如下特点:
1、 它使用VSS(卷影副本服务)来从源卷创建区块级别(BLOCK—LEVEL)的备份,以及被高效的增量备份。备份文件以微软虚拟磁盘(VHD)格式存储,这个文件能直接挂接到虚拟机或物理服务器上,但它是不能引导的。
2、 相比Windows Server 2008,R2不仅支持整个卷的备份,同时支持对单个文件或文件夹、System Reserved、裸机恢复备份和图形状态下的系统状态备份。同时,它不支持向一个磁带机进行备份,并且只支持基本磁盘,支持动态或被EFS文件系统进行加密的磁盘。
3、 它无法将备份文件存储在备份对象所在的卷,但系统状态除外。
Microsoft Exchange Server 2010 包括一个用于 Windows Server 备份的插件,通过该插件,你可以对 Exchange 数据创建基于卷影复制服务 (VSS) 的备份。可以使用 Windows Server 备份来备份和还原 Exchange 数据库。
新插件以名为 WSBExchange.exe 的可执行文件的形式提供,该文件被配置为以名为“Microsoft Exchange Server Extension for Windows Server Backup”(此服务的简称是 WSBExchange)的服务形式运行。该插件自动安装在所有 Exchange 2010 邮箱服务器上,并默认配置为手动启动。该插件使 Windows Server 备份能够创建感知 Exchange 的 VSS 备份。
若要使用该插件,你必须安装了 Windows Server 备份功能。但是,你不应安装 Windows Server 备份命令行工具。这些工具需要更早版本的 Windows PowerShell 命令行接口,此接口与 Exchange 2010 不兼容。在安装 Windows Server 备份时,还会安装命令行工具 WBAdmin.exe。此命令行工具可以从 Windows 命令提示符 (cmd.exe) 运行。
使用 Windows Server 备份来备份 Exchange 数据的功能和选项:
使用 Windows Server 备份进行的备份发生在卷级别。要备份数据库及其日志流,你必须备份包含数据库和日志在内的整个卷。如果不备份包含该数据的整个卷,就无法备份任何数据。
只能执行完整备份。仅在包含 Exchange 数据库的卷的完整备份成功完成后,才会发生日志截断。
还原数据时,可以只还原 Exchange 数据。此数据可以还原到其原始位置或备用位置。如果将数据还原到其原始位置,Windows Server 备份和插件将自动处理恢复过程,包括卸除任何现有数据库并将日志重播到已恢复的数据库中。
还原过程不直接支持恢复数据库 (RDB)。但是,如果恢复到备用位置,则可以手动将恢复的数据从备用位置移动到 RDB(如果需要)。
还原 Exchange 数据时,所有备份的数据库都必须一起还原。不能还原单个数据库。
在数据库可用性组成员上使用 Windows 服务器备份:
如果承载要备份的数据的服务器是数据库可用性组 (DAG) 的成员,并且同时承载主动和被动数据库副本,则你必须禁用 Microsoft Exchange 复制服务 VSS 书写器。如果启用了 Microsoft Exchange 复制服务 VSS 书写器,则备份操作会失败。
若要禁用 Microsoft Exchange 复制服务 VSS 书写器,请执行以下步骤:
使用具有本地管理员访问权限的帐户登录到服务器,然后启动注册表编辑器 (regedit)。
导航到:
HKEY_LOCAL_MACHINE\Software\Microsoft\ExchangeServer\v14\Replay\Parameters。
添加一个名为 EnableVSSWriter 的新 DWORD 值,并将其值设置为“0”。
退出注册表编辑器,然后重新启动 Microsoft Exchange 复制服务。
三、使用第三方备份系统
如果你以后需要使用另一种备份解决方案在禁用了 Microsoft Exchange 复制服务 VSS 书写器的服务器上备份被动数据库副本,则需要删除前面的注册表项,然后重新启动 Microsoft Exchange 复制服务。
一般第三方备份软件支持在DAG上同时备份主动副本和被动副本。
系统提供了2个VSS Writer来用进行Exchange数据库的备份,一个是:【Microsoft Exchange Replica Writer】,另一个是:【Microsoft Exchange Writer】,也就是上面提到的,如果使用WSB进行备份的话,需要禁用【Microsoft Exchange Replica Writer】。
那这两个VSS Writer有上面不同呢?各种担任什么功能呢?简单地说,【Microsoft Exchange Writer】负责备份Exchange的主动副本(或无DAG的独立副本),而【Microsoft Exchange Replica Writer】则负责备份Exchange的被动副本。所以要第三方备份软件能够支持在DAG上同时备份主动副本和被动副本,需要同时开启这两个VSS Writer。
我们可以通过在CMD命令行下查看到这两个VSS Writer的状态:vssadmin list writers,如下图:
而这两个VSS Writer在平时及执行备份时,可能会出现的状态有如下几种:
1、 没有进行任何备份作业时:
2、 备份任务在开始阶段:
3、 正在进行备份时:
4、 备份状态出现错误时:
如果VSS Writer在状态出现失败的时候,可能会导致备份失败,所以要先修复VSS Writer的状态才能重新开始执行备份,那么要修复的话也比较简单。
1、 如果是【Microsoft Exchange Writer】状态失败了,那么重启服务器上的【Microsoft Exchange 信息存储】服务即可,但是重启此服务会导致这台服务器上的数据库短时脱机,会造成用户影响,所以建议非工作时间进行。
2、 如果是【Microsoft Exchange Replica Writer】状态失败了,那么需要重启服务器上的【Microsoft Exchange复制】服务,重启此服务部影响用户使用,不影响服务器正常运行,只是会短暂中断副本直接的复制,所以可以在工作时间大胆地进行操作。
3、 如果重启服务和重启服务器都无法使得这些VSS Writer恢复正常的话,那么你还可以选择对VSS 相关的DLL进行重新注册,如下命令:
Re-registering Vss Dlls
cd /d %windir%\system32
net stop vss
net stop swprv
regsvr32 /s ole32.dll
regsvr32 /s oleaut32.dll
regsvr32 /s vss_ps.dll
vssvc /register
regsvr32 /s /i swprv.dll
regsvr32 /s /i eventcls.dll
regsvr32 /s es.dll
regsvr32 /s stdprov.dll
regsvr32 /s vssui.dll
regsvr32 /s msxml.dll
regsvr32 /s msxml3.dll
regsvr32 /s msxml4.dll
vssvc /register
net start swprv
net start vss
四、备份注意事项
? 如使用WSB,则需要将数据库路径和日志路径都包含在备份内容中;
? 如使用WSB,备份选择使用VSS完整备份;
? 如新建数据库,建议将其单独进行一次完整备份后再列入已有的备份策略中;
? 如有删除数据库的,也需要将其从备份策略中移除;
? 对备份策略有调整后,需要检查避免遗漏或出现重复项;
有时我们需要针对备份失败问题进行故障排除,那么我们可以将VSS的日志级别调高,可以获取更多更详细的VSS日志信息,有助于我们进行事件分析。
启用VSS高级日志
Set-EventLogLevel -Identity "ServerName\MSExchange Repl\Exchange VSS Writer" -Level Expert
Set-EventLogLevel -Identity "ServerName\MSExchangeIS\9002 System\Exchange Writer" -Level Expert
Set-EventLogLevel -Identity " ServerName\MSExchangeIS\9002 System\Backup Restore" -Level Expert
关闭日志只需要把Expert改为Loweset即可,例如:
Set-EventLogLevel -Identity “ServerName\MSExchange Repl\Exchange VSS Writer” -Level Lowest
Set-EventLogLevel -Identity “ServerName\MSExchangeIS\9002 System\Exchange Writer” -Level Lowest
Set-EventLogLevel -Identity “ServerName\MSExchangeIS\9002 System\Backup Restore” -Level Lowest