概述
今天主要分享下sqlserver的完全备份,差异备份,增量备份,内容比较多,先介绍下相关概念...
01
相关概念
完全备份:
备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份,换言之,清除存档属性)。完全备份也叫完整备份。
差异备份:
差异备份是针对完全备份:备份上一次的完全备份后发生变化的所有文件。(差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,即:备份后不标记为已备份文件,换言之,不清除存档属性)。
增量备份:
增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件。(增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,即:备份后标记文件,换言之,清除存档属性。)
事务日志备份:
在特定事务日志备份之前执行的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执行的所有事务日志备份或在特定事务日志备份之前执行的差异备份(如果还原了差异备份)。
部分备份:通过指定READ_WRITE_FILEGROUPS创建的备份称为“部分备份”。在简单恢复模式下,只允许对只读文件组执行文件组备份。还原的数据备份类型:数据库备份、部分备份或文件备份。对于数据库备份或部分备份,日志备份序列必须从数据库备份或部分备份的结尾处开始延续。对于一组文件备份,日志备份序列必须从整组文件备份的开头开始延续。
文件备份:“文件备份”包含一个或多个文件(或文件组)中的所有数据。
日志链:连续的日志备份序列称为“日志链”。日志链从数据库的完整备份开始。通常,仅当第一次备份数据库时,或者将恢复模式从简单恢复模式切换到完整恢复模式或大容量日志恢复模式之后,才会开始一个新的日志链。除非在创建完整数据库备份时选择覆盖现有备份集,否则现有的日志链将保持不变。在该日志链保持不变的情况下,便可从媒体集中的任何完整数据库备份还原数据库,然后再还原相应恢复点之前的所有后续日志备份。恢复点可以是上次日志备份的结尾,也可以是任何日志备份中的特定恢复点。
02
备份方案例子
某个站点在星期天晚上执行完整数据库备份。在白天每隔4小时制作一个事务日志备份集,并用当天的备份重写头一天的备份。每晚则进行差异备份。如果数据库的某个数据磁盘在星期四上午9:12出现故障,则该站点可以:
1)备份当前事务日志;(已经出现故障了,如何备份当前事务日志?)
2)还原从星期天晚上开始的数据库备份;
3)还原从星期三晚上开始的差异备份,将数据库前滚到这一时刻;
4)还原从早上4点到8点的事务日志备份,以将数据库前滚到早上8点;
5)还原故障之后的日志备份。这将使数据库前滚到故障发生的那一刻。
03
还原步骤
创建一个叫TestBackup的数据库,创建一张叫Table1的表,这个时候进行一次完整备份,备份文件为:TestBackupDB-full.bak;接着创建表Table2后进行差异备份,备份文件为:TestBackupDB-diff.bak;接着创建表Table3后进行事务日志备份(如果数据库设置了恢复模式为【简单】,那么在备份类型选项中将看不到【事务日志】),备份文件为:TestBackupDB-log.bak;
创建一个叫TestBackup2的数据库,用于测试TestBackup数据库的备份文件的还原。
创建库结构
备份类型
下面对三个备份文件:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak进行还原:
步骤1:还原完整备份文件TestBackupDB-full.bak
进入SSMS还原
还原常规
还原选项
完整备份还原
步骤2:还原差异备份文件TestBackupDB-diff.bak,操作如前面所示。
步骤3:还原事务日志备份文件TestBackupDB-log.bak,进入事务日志的还原操作界面;指定事务的时间进行还原(还原过程中的恢复状态都是默认为RESTOREWITHRECOVERY,所以这里没有提及这个选项)
进入事务日志
还原后的数据库