当前位置: 首页 > news >正文

使用NTBACKUP备份和恢复EXCHANGE存储组实战(转)

转自:Winmag亚洲技术社区 www.winmag.com.cn 作者:yinjie

看到论坛一直有人对NTBACKUP能否备份和恢复EXCHANGE的存储组(邮箱存储)表示怀疑,特做了个实验.大家看看吧..

一、实验环境
* 安装有WIN2003的服务器一台
* 安装有活动目录和IIS
* 安装有EXCHANGE 2003企业版
* 建立了几个邮箱,以administrator为操作对象

二、实验步骤
1、首先配置好OUTLOOK2003,并正常收发邮件数次。
正常工作的MAILBOX STORE:

showimg.asp?ID=18445
注意看其中的管理员邮箱的邮件项目是31个!!
正常工作的OUTLOOK状态:
showimg.asp?ID=18446
注意看收件箱中有3封邮件!!

2、使用NTBACKUP备份MAILBOX STORE,一切按向导进行
showimg.asp?ID=18447
备份进行中。。。
showimg.asp?ID=18448
备份已经成功完成,注意:此过程不能将存储组DISMOUNT也不能停止INFORMATION STORE服务。
showimg.asp?ID=18449

3、在OUTLOOK中永久删除收件箱中的邮件。
showimg.asp?ID=18450
可以看到已删除邮件是空的了:
showimg.asp?ID=18451
收件箱中也是空的了哦。
showimg.asp?ID=18452

4、打开ESM,看到MAILBOX STORE里少了3个项目(刚才删除的),确认删除是有效的哦(没有人怀疑吧。呵呵。。)
showimg.asp?ID=18453

5、在ESM里设置MAILBOX STORE的属性为可被还原覆盖,这是非常重要的,否则不能还原成功!
showimg.asp?ID=18454
并且把MAILBOX STORE手工DISMOUNT,这也是必需的。系统无法还原覆盖正在使用的数据库。
showimg.asp?ID=18455

6、进入NTBACKUP,找到刚才备份的文件,打开编录。你会看到其中写着“无数据项目”,别管它,能恢复就可以了。
showimg.asp?ID=18456

7、开始恢复数据库了,注意在日志临时文件中应写一个有效的路径,该路径用于存储在备份文件中的数据库日志,另外,需要注意的是,“上次还原集”请大家慎重选择。如果选择该项目,系统将在还原完成后按日志内容重放操作,这将使你刚才的操作仍然有效,换句话说,我刚才的删除项目操作仍然有效。我不希望这样,因为我希望恢复我刚才删除的文件哦,所以我不选这个选项,实际操作中该项应该是选中的,因为备份的数据比当前服务器的数据要旧,因此只有REPLAY日志才能重新应用备份后的操作。这样恢复后的数据才是服务器的最新状态。
NOTE:只有选中了“上次还原集”,才能在还原后让系统自动将数据库MOUNT。
showimg.asp?ID=18457
OK,还原进行中了。。一切顺利。。
showimg.asp?ID=18458
还原终于完成了,没有错误,说明一切正常。
showimg.asp?ID=18459

8、进入ESM,MOUNT数据库,失败了。WHY?
showimg.asp?ID=18460
看看日志。。
showimg.asp?ID=18468
哦,原来系统告诉我说,数据库不是从硬恢复中恢复的,通俗点说,就是还有日志没有完全记录到数据库中,我们看看数据库状态来验证一下。

9、让我们来看看数据库的状态。(eseutil /mh)
showimg.asp?ID=18461
哦,原来是DIRTY SHUTDOWN,这说明数据库当前是非正常关闭的,当然不能MOUNT啦。怎么办?当然你可以在还原时选择”上次还原集“这样系统会帮助你REPLAY日志,完成REPLAY后,数据库就正常关闭了。但我这里可不希望去REPLAY日志,相反的,我希望系统丢弃所有的日志,于是我只能手工处理了。

10、使用修复命令(eseutil /p)修复数据库,强制数据库关闭。
showimg.asp?ID=18462
注意:只能在确定需要修复数据库时,才能使用该命令。
修复顺利完成了。呵呵。。
showimg.asp?ID=18463

11、再来看看数据库状态。
showimg.asp?ID=18464
哦,现在的数据库状态是CLEAN SHUTDOWN了,就是正常关闭了。成功了。

12、再重新MOUNT数据库,成功了哦。
showimg.asp?ID=18465

13、赶快来检查一下看看是否正常,哈哈,,你看又是31个项目了。恢复了
showimg.asp?ID=18466

14、进入OUTLOOK看看,哦,我的邮件终于回来了,上帝保佑。。
showimg.asp?ID=18467

三、后记
呵呵,,不知道从什么时候开始,我也喜欢在文章的最后加个说明了,权当做后记吧。
从这个实验中你可以看到NTBACKUP确实可以备份和恢复EXCHANGE的存储组数据哦。(MS没有骗我们,呵呵……)但是需要注意的地方还真不少。
1、首先,我们要明白备份只备份当前有效数据,已经被删除的数据不会被备份哦。
2、备份时不能DISMOUNT数据库,也不能停止任何的EXCHANGE服务。
3、备份时最好能使用VSS(卷影副本)或不要使用邮箱
4、还原前,一定要将数据库设置为可覆盖模式。注意:每次正常还原后,系统会自动把这个状态撤消掉,也就是说,你每次还原时都需要重律柚茫欢堑门丁?BR> 5、还原数据库时,要把数据库DISMOUNT哦。这和备份是不一样的。
6、备份的文件里有可能报说”找不到数据项目“别管它,只要你确认备份成功了就不会有问题的。
7、还原时的临时日志位置一定要写,且不能是原始日志目录,因为在备份时,有可能有的事务还没有完全写入数据库,因此系统也会把这部分未写入数据库的日志备份到介质中,当还原的时候,它先把这些日志释放到临时目录,恢复数据库后再按临时目录里的日志REPLAY操作哦,然后删除临时目录里的日志。
8、”上次还原集“按需要选择。如果选择,系统将REPLAY所有日志。但不选择,系统不会自动MOUNT数据库。而且有可能连手工MOUNT都不能。注意哦。
9、还原完成后,如果不能MOUNT,可以先看看日志和数据库的状态(ESEUTIL /MH)这是个有用的命令。
10、最后一点,只有正常关闭的数据库才能被MOUNT,呵呵。。原因,请看我的另一篇关于日志功能的文章。

最后说一下,如果你的服务器坏掉了,你一定要按顺序执行下列操作:
* 安装全新的操作系统和补丁
* 恢复系统状态数据(如果是DC)
* 以灾难恢复选项安装EXCHANGE,不要以正常方式安装,装不上的。不信你试试。
* 恢复数据库内容
* 修复或调整数据库
* MOUNT数据库
* 完成恢复过程。

更详细的过程可参考灾难恢复白皮书或MS网站资源,谢谢大家。。

补充:对备份和恢复原理不明白的朋友请仔细阅读以下白皮书:
《Exchange 2000 Server Database Recovery》,该书也适用于EX2003。
URL: http://www.microsoft.com/technet/prodtechnol/exchange/2000/support/dbrecovr.mspx

相关文章:

  • 不连续曲线 highcharts_帮你快速理解数学中的约尔当曲线
  • 虚拟内存碎片的检测和EXCHANGE的内存优化(转)
  • python 列表比较不同物质的吸热能力_比较不同物质的吸热能力实验探究
  • 使用Windows工具管理Nt上的Oracle数据库
  • 怎么在python中输入矩阵_如何使用NumPy在Python中实现矩阵?
  • Use Nid to Change dbname
  • python脚本运行时网络异常_python 网络异常
  • python字符串操作作业_python 字符串操作一
  • 独立钻石棋(Diamond Chess)算法
  • python3 生成二维码_windows使用python3.4生成二维码
  • 刚刚随便GOOGLE和BAIDU了下PIPO和BLOG
  • python 多进程全局变量_浅谈Python 多进程默认不能共享全局变量的问题
  • 嗯,毕业之前还要整理的几件事
  • pb mdi窗口多sheet_趣头条百 PB 规模 Hadoop 实践
  • 26个日文片假名导致Access搜索(80040e14/内存溢出)的解决办法
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 0x05 Python数据分析,Anaconda八斩刀
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Leetcode 27 Remove Element
  • Less 日常用法
  • Object.assign方法不能实现深复制
  • Python_OOP
  • Redis字符串类型内部编码剖析
  • spring boot下thymeleaf全局静态变量配置
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • webpack+react项目初体验——记录我的webpack环境配置
  • 电商搜索引擎的架构设计和性能优化
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何在GitHub上创建个人博客
  • 用jQuery怎么做到前后端分离
  • 用Visual Studio开发以太坊智能合约
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • !$boo在php中什么意思,php前戏
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $GOPATH/go.mod exists but should not goland
  • (11)MSP430F5529 定时器B
  • (2)Java 简介
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二)JAVA使用POI操作excel
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (译)2019年前端性能优化清单 — 下篇
  • (转)fock函数详解
  • .mysql secret在哪_MySQL如何使用索引
  • .Net Core和.Net Standard直观理解
  • .net 后台导出excel ,word
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)