SQL Server2008完整备份+差异备份及还原过程
(2015-01-09 15:01:57)
标签:
完整差异备份还原数据库备份方案数据库还原方案sqlserver数据备份sqlserver数据还原 |
分类: 数据库学习 |
一、恢复模式
SQL Server2008的恢复模式:
1、完整恢复模式:默认恢复模式,它会完整记录下操作数据库的每一个步骤。使用完整恢复模式可以将整个数据库恢复到一个特定的时间点,这个时间点可以是最近一次可用的备份、一个特定的日期和时间或标记的事务。
2、大容量日志恢复模式:是对完整恢复模式的补充。简单地说就是要对大容量操作进行最小日志记录,节省日志文件的空间(如导入数据、批量更新、SELECT INTO等操作时)。比如一次在数据库中插入数十万条记录时,在完整恢复模式下每一个插入记录的动作都会记录在日志中,使日志文件变得非常大,在大容量日志恢复模式下,只记录必要的操作,不记录所有日志,这样一来,可以大大提高数据库的性能,但是由于日志不完整,一旦出现问题,数据将可能无法恢复。因此,一般只有在需要进行大量数据操作时才将恢复模式改为大容量日志恢复模式,数据处理完毕之后,马上将恢复模式改回完整恢复模式。
3、简单恢复模式:在该模式下,数据库会自动把不活动的日志删除,因此简化了备份的还原,但因为没有事务日志备份,所以不能恢复到失败的时间点。通常,此模式只用于对数据库数据安全要求不太高的数据库。并且在该模式下,数据库只能做完整和差异备份。
二、备份方式
1、完整备份:备份整个数据库的所有内容,包括事务日志。该备份类型需要比较大的存储空间来存储备份文件,备份时间也比较长,在还原数据时,也只要还原一个备份文件。
2、差异备份:差异备份是完整备份的补充,只备份上次完整备份后更改的数据。相对于完整备份来说,差异备份的数据量比完整数据备份小,备份的速度也比完整备份要快。因此,差异备份通常作为常用的备份方式。在还原数据时,要先还原前一次做的完整备份,然后还原最后一次所做的差异备份,这样才能让数据库里的数据恢复到与最后一次差异备份时的内容相同。
3、事务日志备份:事务日志备份只备份事务日志里的内容。事务日志记录了上一次完整备份或事务日志备份后数据库的所有变动过程。事务日志记录的是某一段时间内的数据库变动情况,因此在进行事务日志备份之前,必须要进行完整备份。与差异备份类似,事务日志备份生成的文件较小、占用时间较短,但是在还原数据时,除了先要还原完整备份之外,还要依次还原每个事务日志备份,而不是只还原最后一个事务日志备份(这是与差异备份的区别)。
4、文件和文件组备份:如果在创建数据库时,为数据库创建了多个数据库文件或文件组,可以使用该备份方式。使用文件和文件组备份方式可以只备份数据库中的某些文件,该备份方式在数据库文件非常庞大时十分有效,由于每次只备份一个或几个文件或文件组,可以分多次来备份数据库,避免大型数据库备份的时间过长。另外,由于文件和文件组备份只备份其中一个或多个数据文件,当数据库里的某个或某些文件损坏时,可以只还原损坏的文件或文件组备份。
备份方式归纳说明:
1、完整备份:备份时,如果数据文件比较大,备份所花时间较长;还原时,一次能还原到备份的状态。
2、差异备份:在一个周期内,只需要保存一份完整备份数据,其他的都是差异备份;在还原时,只需要恢复一次完整备份 和
最后一次差异备份,还原时间相对较少。如果完整备份的数据文件丢失,那么数据将无法还原。
3、事务日志备份:做一次完整备份 和 多次日志备份;还原时,需要做一次完整还原和多次日志还原。
4、文件和文件组备份:根据表数据的变化情况,将表分别存储在不同的文件或文件组里,然后通过不同的频率来备份这些文件或文件组;还原时,要分多次还原处理,除非数据库文件大到备份困难,否则不要使用该备份方式。
备份需要考虑的因素:
首先是数据安全,其次是备份文件大小,最后是做备份和还原能承受的时间范围。
一般数据库备份方案建议:
1、数据库每天变动的数据量较小:可以采用 完整备份+事务日志备份 方案,也可以采用 完整备份 + 差异备份
方案实现数据备份。
2、数据库每天变动的数据较频繁:可以采用 完整备份+差异备份 + 事务日志备份(包括尾日志备份)
方案来实现数据备份(交替使用三种备份方式)。
三、完整备份+差异备份+尾日志
备份还原实例
1、备份数据
--完整备份数据库
backup
to
select
insert
select
--差异备份数据库
backup
to
with
--备份尾日志文件
use
go
backup
to
with
2、还原数据
--完整恢复数据库
restore database mytest
from
with
--恢复差异数据库
go
restore database mytest
from
with
go
--恢复尾日志
restore log mytest
from
with
select * from mytest.dbo.streets
注意:在还原数据库时会提示数据库正在使用,此时需要断开该数据库的所有连接,才能进行还原操作,可以通过如下命令将数据库置为脱机状态,还原操作完成后再置为联机状态。
alter database mytest set offline with rollback immediate
--脱机
alter database mytest set online with rollback
immediate