关于Exchange循环日志和备份(2)
来源:asp之家 发布时间:2010-02-22 19:11:00
四、LOG文件的重大作用
前面提到过了,他是霸占磁盘空间的罪魁祸首,有些管理员一看日志文件很多的时候,于是开始删除日志文件,删到后来觉得烦琐了,于是就“启用循环日志”来减少烦琐的工作。我前面说了,你启用这个功能的话,你就可以向上帝祈求了...
很多刚接触Exchange的管理员会提出疑问:日志文件到底有什么用?是不是多余的?那我们来看看日志的重大作用。
对于一个SG来说,系统会产生一系列的日志,每个大小为5M,这些日志的扩展名为LOG,前缀一般是E00、E01……除了这些连续的日志文件外,还有一些特殊的日志文件(res1.log,res2.log,e0x.chk),它们又有什么用呢?如果对Exchange数据做完全备份(Full Backup)的话,备份后日志文件会自动删除的,然后重新产生。老实说,十个管理员有九个对备份工作都怕怕,因此对这些日志是痛恨不已啊。我自己也做系统管理,对数据备份这个麻烦的工作的确很感冒,但是说到最后:备份工作必须做!不得不做!话题好像扯远了,呵呵...
那么微软在Exchange数据库系统中引入日志到底有什么作用呢?我们从以下几个方面来考察一下日志的作用:
1、作为一个企业级的邮件系统,必须要保证数据安全和完整。必须能够面对随时可能发生的意外灾难,把数据损失降低到最小。
2、必须提供高性能的邮件处理能力,对数据库中的邮件的事务操作在完成后必须马上(或是说立即)被记录在存储介质上(见前面的事务持久性说明)
3、灾难发生后,使用数据库备份恢复必须要返回到灾难发生前一刻的数据库状态(这是至关重要的!)
现在我们来更进一步的看一下,当用户要修改邮箱中的内容时,被修改的内容首先被提取出来放到内存中,实际的修改是发生在内存里的,这是众所周知的,当修改完成后,这些内容必须被尽快写回存储介质,这样才表示一个事务成功完成了。
从事务的描述中我们可以看到,事务是具有Atomic特性的,为了保证数据库的一致和完整,事务必须全部成功或全部失败,如果事务失败,则必须回滚到事务开始的状态。而当邮件在内存中修改完成后,此时事务并没有完成,因为还没有写到磁盘上。一旦系统崩溃,这些修改就丢失了。所以要确保事务修改完成,必须尽快将修改写回到数据库里去(也就是硬盘上),这也是事务的持久性要求。
注意,这里说的第一时间或是尽快,是一个什么样的概念呢?如果我们直接修改EDB文件,由于EDB文件比较大,那么在硬盘上修改一个大文件,就需要花费大量的时间在等待和寻找数据存储块上(学过操作系统原理的人应该知道的),当系统出现高负载的繁忙状态时,这将是一个非常大的瓶颈,也就无法做到“尽快”了。那怎么办呢?所以数据库系统使用了日志文件,而日志文件只有5MB大小,向这些文件写入修改肯定是很快速的,因此当内存的修改完成后,这些结果就会立即写入日志中,以保证了事务的持久性。当成功写入日志后,该事务就成功完成了(现在在硬盘上了,不会因为当机丢失了)接下来,ESE引擎会在后台慢慢将这些日志里的修改记录写回真正的数据库里去(这对用户来说已经不是那么重要了,这时候可能你的邮件都已经到对方了),这就是日志的第一个作用:确保事务在第一时间(尽可能快的)保存到非易失存储器上(磁盘上),提供了事务持久性支持。我自己是变相的把他理解为邮件数据缓存的,不知道这样是否科学,呵呵!
根据上面的描述,我们看到运行中的Exchange数据库,是由三个部分组成的:
* 内存中已经完成处理还没有写会到日志里的内容(Dirt page)
* 还没有写到数据库文件里的日志内容
* EDB和STM数据库文件
对于第一个部分(内存中的),一旦掉电就会丢失的,是最不安全的。而对于第二部分的内容,系统通过检查点文件(CHK)来标记哪些日志已经被写入数据库了,而哪些还没有。CHK文件类似一个指针。我们可以用“ESEUTIL /MK”来检查CHK文件里的内容,在该命令的输出中的checkpoint:<0x8,26d1,29>这样的东西就是检查点位置,它表示E0x00008的日志的页面序号已经被成功写入数据库了。大家可以自己看看。。:)
前面提到过,Exchange系统在出现灾难时,应该能恢复到灾难发生前时刻的状态。这是非常重要的。我在最前面就说过了“我就不相信你有做到时时备份”,但即使是最勤快的管理员,也只能在指定的预定时间内做数据备份。那么在备份完成后到灾难发生之前的这段数据该如何保护呢?是不是就任由它丢失呢?显然是不可能的。那答案是什么呢?就是日志文件。从前面对日志功能的描述中知道,任何对数据库的更改都先写入日志里,再由日志写入数据库,这样我们只要找到日志文件,就可以重新进行模拟的操作来完成备份后的数据库文件的更改了,举个例子来看先:
假设我在凌晨3点完成了一次FULL BACKUP,备份完成后,系统正常运行,到下午4点的时候,系统突然崩溃。我用凌晨3点的数据恢复了数据库,那么从凌晨3点到下午4点这段时间的数据哪里去找呢?这个时候就只能依赖于日志了。当完成数据库恢复后,系统会自动的跟踪到关联的日志文件,如果发现有比当前数据库还新的日志存在,系统就会自动的按照日志的顺序将更改写回到数据库中去。因此这样一来,从凌晨3点到下午4点的数据变更就被完整的恢复了。这就是日志的第二个作用:保证系统备份和恢复的完整性。当然前提是没有使用循环日志!
看到了吧,启用循环日志的危害是多么的大啊?备份是多么的重要啊?...如果你看到这里还执迷不悟启用循环日志的话,寡人可就要骂你#%@¥*#%!@)$%^&*(%…
说到这里,有人可能要问,如果数据库和日志同时损坏,如何办?答案是:你赶紧去买体育彩票吧,呵呵!我在这里也只能说“尽量避免这样的情况发生”。首先日志文件损坏的几率要远远低于数据库;第二,微软建议将数据库和日志分别存储在不同的磁盘上;第三,我是绝对相信你的Exchange服务器用了RAID的!要是这样还会同时坏,那就去买体育彩票吧,呵呵...对于管理员对日志文件的抱怨,合理的解决方法是定期做备份,虽然麻烦,但是公司付薪水给你就是让你做这个事情的。寡人再强调一次:启用循环日志是冒险的做法,当启用循环日志后,一旦系统或者数据库发生灾难,想要恢复时,你就抱头后悔或者跺脚吧!磁盘和数据谁更重要,相信你这位做系统管理的,应该很清楚的。


猜你喜欢
- 10月12日国际报道 微软新版电邮和通信服务器软件Exchange 2010的程序开发已经完工。开发进度一直超前Office家族其他产品的E
- 二、MDaemon设置MDaemon的管理界面很专业,它所提供的选择和设置项目非常多,但是实际上真正需要设置的选项并不是很多。(1)双击任务
- 在上一期,我们为站长介绍了“活动”功能,活动的功能主要是满足站长组织线下活动的需要,形成了一条从活动的报名、组织到活动回顾的主线,不仅能增强
- 网站定位准确,就可以让您的网站成为用户眼中的首选。成为用户眼中第二的网站,就等于把更多的用户推给了竞争对手,因为对于用户选择一个网站来说,仅
- 北京时间11月14日消息,据国外媒体报道,Google企业软件部门总裁戴夫·格罗伍德(Dave Girouard)表示
- 导读:互联网给小公司带来了在世界范围内拥有海量用户的机会。这造就了一些公司和组织,即使只有相对较少数量的员工,但是仍然可以为大量用户提供服务
- DNS 是域名系统 (Domain Name System) 的缩写。大家在上网时输入的网址,是通过域名解析系解析找到相对应的IP地址才能访
- 背景使用idea配合docker,实现从javaweb开发,部署,运行全过程。环境:已经配置好的docker、已经安装好的mysql8容器、
- 个人网站越来越多,据说现在中国个人站长已经超过了3200万。而且由于CN域名一元促销活动的推动,越来越多的网民走向了个人站长的道理。但是,网
- 网站的定位跟网站的目标用户群,市场的潜力和竞争对手都相关,所以,它也不简单。做网站时,首先要解决两个问题:一是网站有没有定位,二是网站定位是
- 网络游戏越来越赚钱,成本增加门槛也越来越高,网络游戏视乎成为了大公司和投资家的专利,小公司和小资本往往望而却步,近年来随着网络带宽的增加和游
- 其他不再赘述,发挥二的性格,我们直奔主题。用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DN
- 在2007年,我们根据中国发布商的需求发布了“允许的网站”和“广告在新窗口中打开”等功能,为了让 AdSense 广告更好地服务本地发布商,
- 《暮光之城 新月》刚刚在北美公映几天,其票房就创造了北美单日最高票房以及首映日最高票房两项纪录。《新月》再次演绎了吸血鬼与人之间近乎完美的爱
- 链接建设是指在搜索引擎优化战略中,一种让其他网站链接到自己网站上的一种优化方式。通过产生相关的和权威的网站链接到自己的网站上。除了会提升你的
- 网站推广方法有很多种,本文简单地价绍一下今天流行的网站推广方法。方法一:搜索引擎不可否认搜索引擎在网站推广中的重要性仍然是第一位,新网站可以
- 一、概述最近在研究skywalking,打算使用k8s部署 skywalking 并将 pod 中的应用接入 skywalking 进行服务
- 从昨天22:00开始,在落伍者就不断有站长就在说自己的站点解封了,如果仅仅是几个站长在说的话我们会当作是正常范围内的小调整,但是越来越多的站
- “创业”这是我们讲得最多的一个话题,网络创业的故事也被我们津津乐道;只要留心观察下,就不难发现这样一个有趣的现象——很多网络创业的朋友会选择
- tags.php页面不会自动刷新你最近添加的文档,很不利于SEO,因此需要解决该问题。使用版本 dedecms 5.6在论坛里面找好好久怎么