- [返回列表] [ 发布:2011/4/18 16:00:17 ] [ 浏览: ] [ 字体:大 | 小 ]
- SQL SERVER中用户数据库的备份还原策略
随着信息技术的决速发展,企业的信息数据量也急剧增长。如何避免突如其来的数据破坏(如:黑客攻击、病毒袭击、硬件故障和人为误操作等),提高数据的安全性和数据恢复能力一直是用户和厂商关注的焦点。备份是恢复数据最容易和最有效的保证方法,企业应当根据自己的经济情况和所能承受的损失来设计数据库的备份以及还原策略。
1、选择数据库恢复模型
在创建企业数据库时就应当规划好数据库的恢复模型,SQL Server中有三种数据库恢复模型,当损害发生时,每个模型都可以不同程度的恢复数据库:
1.1完全恢复模型
在该模型下,SQL Server可以记录数据库的所有更改,因此如果日志文件本身没有被损坏,除故障发生时没有执行完的事务外,服务器可以还原所有数据,并且可以将数据库还原到任意时间点。该模型的主要间题是日志文件较大产生的存储空间开销和系统性能开销。
1.2大容量日志记录恢复模型
该摸型与完全恢复模型相似,当损害发生时使用数据库和日志备份一同来重建数据库,但是对于CREATE INDEX、大容量转载操作、SELECT INTO,WRITETEXT以及UPDATE-TEXT使用较少的日志空间,不在日志中存储这些操作的详细情况。该模型可以还原所有的数据,但是不能只还原备份的一部分,比如不能像完全模型一样还原到某一个特定标记。
1.3简单恢复模型
对于小型数据库或者不经常更新数据的数据库,可以使用该模型。它便用数据库的完全备份或者差异备份恢复数据,只能将数据还原到最后一次备份的时间点的状态。优点是日志占用空间小。
2、选择备份数据库的方法
SQL Server有四种备份方法来满足数据库恢复的不同的实际需求:
2.1完全数据库备份
完全数据库备份时,服务器备份整个数据库。系统发生故障时完全数据库备份就是恢复的基准。所以任何一个备份策略都必须先对目标数据库进行完全数据库备份。
2.2差异备份
进行差异备份时,服务器备份当前数据库与上一次完全备份数据库时相比更改的部分,以及备份过程中发生的活动、事务日志中所有未提交的事务。
2.3事务日志备份
进行日志备份时,服务器备份上一次执行BACKUP LOG语句到现在执行 BACKUP LOG语句中间的这段事务日志。必须明确的是:在进行日志备份之前一定至少要完成一次完全数据库备份,否则在还原的时候将无法还原事务日志。
2.4数据库文件和文件组备份
微软给超大型的数据库提供了一种备份方式——文件组和文件备份方法,在这种方式中管理员可以将数据库大卸八块,将多个数据文件或者文件组分别进行备份,丽不是传统的备份整个数据文件。需要注意的是,执行这种备份方式时必须同时执行日志备份。
2.5备份策略案例
2.5.1仅使用完全数据库备份策略
当用户数据库较小或者数据库很少进行修改时,可以只选择完全数据库备份,因为完全备份一个小数据库的时间是可以接受的或者少最的数据丢失是可接受的。此时应该注意经常对事务日志进行清理。例如,某数据库11M,每天修改很少,每天下午18点对他进行完全备份。某天上午5点数据库损坏,则使用前一天的完全备份还原数据库。缺点是:最后一次完全备份到5点之间的数据库修改将被丢失。如果对丢失数据有一定的要求,可以考虑完全备份和其他备份的联合使用。
2.5.2完全数据库和事务日志备份策略
需要对经常修改的数据库进行完全数据库备份和日志备份,当然也应考虑它们所需的时间是否可以接受。
例如,某数据库每天下午18行完全备份,上午9点、中午12点、下午16日志备份,某天下午13点物理媒体损坏。可以立刻用WITH NO_TRUNCATE选项备份日志,用前一天的完全数控备份还原数据库,再应用当天的9点、12点的日志备份还原数据库,最后用开始时建立的日志备份还原数据库,此时数据库的数据不会丢失。
2.5.3差异备份策略
当完全数据库和事务日志备份策略还原所消耗的时间用户不能接受时可以考虑使用差异备份策略,该策略可以减少还原的时间,因为它保留最后一次完全备份数据库的更改,而不必使用多个较大的日志文件。应该注意的是:差异备份不能捕获事务日志中的更改,因此也还必须周期性的备份事务日志。
例如,某数据库每周日2点进行一次完全备份,每个工作日的19点进行差异备份,每天上午8点、18点进行日志备份,某天上午8点30数据库损坏。可以立刻用WITH NO_ TRUNCATE选项备份日志,用最近的周日的完全数据备份还原数据库,还原前一天的差异备份,再用上午8点的日志备份还原,最后用刚才用WITH NO_TRUNCATE选项备份日志来还原,此时的数据也不会丢失。
2.5.4文件和文件组备份策略
这种备份策略最常用的情况是:当数据库特别大的时候。例如气象卫星收集的图像数库,数据库数量相当大完全备份可能需要几十个钟头这种情况下可以考虑分别对它的数据文件或者文件组进行备份以减少备份所消耗的时间。
例如,数据库的数据分别存放在三个不同的文件中,每周日2点进行完全备份,星期一1点进行文件一的备份,周二1点备份文件二、周三1点备份文件三,日志文件每天23点进行,周四的时候文件2物理媒休损坏,立刻用WITH NO_TRUNCATE选项备份日志,然后使用周二的备份还原数据,接着使用前一天的日志文件还原,最后用刚才用WITH NO_TRUNCATE选项备份的日志来还原数据库。
3、从不同的备份类型还原数据库
当损坏发生时,对于不同的备份类型可以有不同的还原方法。
3.1从完全数据库备份还原
当数据库的物理磁盘受损,数据库整个损坏或被删除,应该从完全数据库备份进行还原,如果恢复后其后没有任何事务日志或者差异备份,则指定RECOVERY选项,其后还有事务日志备份和差异备份需要还原,则指定NORECOVERY直到最后的备份被还原。
3.2从差异备份还原
必须明确的是,差异备份只还原从它最近的一次完全备份到差异备份时数据库的更改部分,如果后面还有日志文件需要还原则使用NORECOVERY选项。否则指定RECOVERY选项。
3.3从事务日志备份还原
从事务日志备份还原时,事务日志记录的数据库的更改都会被SQL SERVER还原,也就是澎王原事务日志可以将数据库还原到特定的时间点。
3.4从文件组或文件还原
从文件或文件组中还原数据的好处是,它可以减少还原超大型数据库的时间,在指定文件被损坏时恢复数据。
4、总结
本文主要讲解在微软Sql Server服务器中用户数据库的备份还原策略,对当前企业的数据安全和数据恢复提供参考。