在越来越多的用户开始重视数据保护的今天,有许多人只考虑将数据进行备份,却多多少少忽略了数据备份的终极目标??数据恢复。
人们认为对备份/恢复的一个误区是:,只要定时做了备份,在需要的时候,自然而然地能将所需数据进行恢复,因为跑得了和尚跑不了庙,所需数据一定在备份磁带里,花点时间和精力找一找,总能找到并成功恢复。果真如此吗?日常生活中的一个例子也许能给我们一些启示。
众所周知,建造大楼时一定会配备消防系统,但是,并非有了消防系统就能高枕无忧。人们经常获悉,有的楼房突遭火灾时,消防系统却无故瘫痪了,或者消防栓里没有水,或者消防通道被堵塞,以致火势蔓延,造成巨大的生命财产损失。因此,并非所有的消防系统,在遭遇火灾时都能起作用。一样的道理,数据备份设施之于IT系统,就相当于消防系统之于楼房,它是保护IT系统的最后一道防线。即使配备了数据备份设施,并不表明在IT系统遇到问题时一定能将丢失的数据成功恢复。
为了进一步阐明恢复的重要性,让我们再来对比一下备份和恢复操作的区别。
一. 备份是计划内的工作,而恢复则是计划外的工作。
对于IT技术人员来说,备份是按照既定的备份策略,每隔一定时间,按部就班地操作即可。而恢复,则是只有当发生数据丢失时,或者要查找历史数据时,才会进行想到的操作。通常情况下,实施恢复操作时,往往都是十万火急,越快越好,同时还希望恢复后的数据可用。
由于备份对系统的影响比较大,所以备份的工作往往是在特定的时间内完成的,也即所谓的“备份窗口”,这时生产系统通常不工作。而恢复,因为是计划外的工作,对生产系统肯定会产生影响。下面以电子邮件数据的备份和恢复为例,来说明恢复对系统的影响。
假定您对电子邮件系统的备份策略是每晚八点定时备份到磁带,备份完成后磁带里就会保存前天晚上八点后,有昨天晚上八点之前收到的所有电子邮件。当然,收发电子邮件是一个连续的动作,晚上八点后,邮箱仍然在不停地收邮件。假设到了今天中午12点,您发现某一个重要的邮件不小心被删掉了,如果这个邮件是昨天晚上八点前收到的,那么您还是有可能从磁带里导回恢复该邮件。这时就要启动恢复操作了。
如果备份软件能够实现邮件一级的恢复(恢复颗粒是单个邮件)的话,您只要您会能找到那封丢失去的email邮件,直接将它恢复自回到了邮箱就可以了,而对恢复的过程对整个邮件系统没有任何影响;但是,如果您的备份软件只能做到邮箱级的恢复(恢复颗粒是一个邮箱),那么如果您想恢复该邮件的话,就不得不把整个邮箱的所有邮件恢复到昨晚八时的状态,造成的后果就是昨天晚上八点到今天上午12点收进的邮件会全部被覆盖。可见,如果从备份的角度来说,两者没什么区别;但是从恢复的角度来讲,两者差别很大。
二. 备份是大批量的数据移动过程,往往需要将所有数据或所有增量数据全部拷贝到备份设备,而恢复往往是少量的数据移动过程,只需将需要恢复的数据从备份设备拷贝回主服务器。
现在市场上流行的很多备份软件,基本上都是在上世纪80年代设计的,那时的数据量相对较小(几十兆到几百兆)。当进行备份操作的时候,备份软件会把所需要备份的数据文件打包成一个备份集(backup set),然后将它拷贝至备份设备中,并且针对该备份集形成相对应的索引,但一般不会对备份集里的内容建立详细的索引。那么当需要恢复该备份集这一千个文件中的某一个文件时,备份软件就必须从备份集中搜索到该文件把这一批备份集全部导回主服务器,然后从中,然后进行恢复。这在只有几百兆数据量的IT环境下,完全可行,;然而来到我们目前所处的海量数据的时代,由于数据量已经高达几十甚至几百TB,如果继续沿用这种方式,势必产生许多问题:从浩如烟淼的备份数据里,找到并恢复您需要的那一个,难度无异于大海捞针!例如,有的用户去电信公司要求查询自己的历史话单(如两年前的某一个月的通话记录),今天,很多电信公司无法满足用户的这一需求,因为很多情况下明知该历史话单一定存在于原先的备份介质中,但由于数据量实在太大,几乎没有可操作性。这种情况下,备份虽然是成功的,但是恢复的成功率却很低。
META Group在2004年4月的一份题为“Proactive Data Protection”的调查揭示了数据恢复的真相:
恢复作业的平均成功率只有70%左右;
主要的恢复需求是恢复单个文件或单个表空间,而不是整个卷;
而恢复单个文件至少要花1个小时, 有时甚至要接近1天。
说了这么多,想必读者朋友已认同了数据恢复的重要性。所以,当考虑数据保护时,应着眼于“恢复”,需着重考虑以下几点:
1. 确保数据能够恢复
2. 恢复速度要尽量快
3. 恢复操作对系统的影响要尽可能小
4. 能够恢复到用户指定的时间点
5. 恢复的数据是可以使用的
当然,恢复是在备份的基础上进行的,;但是如果备份失败,恢复肯定不会成功。为了保证确保能达到恢复的目的,对备份操作有以下几点基本要求:
1. 提高备份成功率
备份过程中,当备份介质、备份设备和网络出现问题时,备份作业就会中断,要提高备份的成功率,备份系统就应具有容错机制。如果是备份介质或备份设备出现问题,可以将备份自动切换到其他的备份介质、设备或路径上,并能确保从中断处继续备份操作。另外,“备份的断点续传”也很重要,当网络发生阻塞时,备份也会中断;一旦网络恢复正常,备份能从中断处自动重启并继续进行。
2. 精细的备份数据索引
当用户希望恢复数据时,绝大多数情况下并不需要恢复整个系统,而只要恢复部分数据,甚至只是一个文件或邮件。索引做得足够精细,有利于在恢复时能快速查找并定位所需要恢复的数据,实现小颗粒恢复,同时将对系统的影响降到最小,恢复速度大幅提高。
3. 能产生多个数据副本
为了防止备份数据意外损坏,产生多个备份副本是必要的,也很有效。产生数据副本的方法有两种:同步和异步。同步的方法是,在备份时,同时把备份数据写入到两个不同的介质中;异步的做法是,先把备份数据写入一个介质,然后再利用空闲时段,将备份数据复制到其他介质上。当然也可以通过网络将其复制到异地,达到数据容灾的目的。
4. 离场保护
本刊上一期曾提到过“数据备份的离场保护”。如果数据备份是为了恢复而进行的,就应该考虑到万一数据中心遭遇灾难时,怎样进行恢复。这时“离场保护”中保存的数据副本就会起到很大的作用。
5. 操作界面应足够简单
用户界面应该面向恢复,而非面向备份。在面向数据恢复的用户界面,所有的备份数据是按照数据原先的结构来组织的,需要恢复哪个数据,很快就能找到,轻松点击一下就能恢复该数据了。
综上所述,一个真正有效的数据备份系统应该是这样的:以恢复为目的来设计数据保护系统,管理简便,能轻易快速便捷地实现恢复。除此以外,正如前文提到的消防系统的事例,为了确保消防系统在遭遇火灾时能够正常工作,应该定期进行防灾演习,数据备份系统也应该经常做些数据恢复演习,确保在真正需要时,能够实现对数据的有效恢复。