SQLServer备份还原策略解析

a、数据丢失的原因:
程序错误
人为错误
计算机错误
磁盘失败
灾难(如火灾,地震)和偷窃

b、什么是备份
备份即建立数据的副本
用于在系统发生故障后还原和恢复数据
文件复制不等于备份

c、备份类型
完全备份:备份完成时刻的数据库提供了任何其他备份的基准
差异备份:事先已执行过一次完全备份,对上一次完全备份之后所有的更改的数据做备份
事务日志备份:事先已执行过一次完全备份,从上一次事务日志备份或者完全备份到当前事务日志的尾部截断已确认的事务日志的备份。
文件或文件组备份

d、SQL Server支持的备份媒体
磁盘
磁带
网络共享文件

e、备份设备
物理设备:c:backupfull.bak
逻辑备份:存储在系统数据库master数据库的sysdevices表中,使用命令sp_addumpdevice新建一个逻辑设备

f、备份策略
完全备份和还原:小型数据库,数据库很少改变或只读
完全备份+差异备份和还原:数据库频繁更改,想要最少的备份时间
完全备份+日志备份和还原:数据库经常更改,完整备份时间过长
完全备份+差异备份+日志备份和还原:可以减少所需还原事务日志备份的数量,缩短恢复数据库的时间

完全备份及还原:
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with init,format;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with recovery;

完全备份+差异备份及还原:
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with init,format;
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with differential;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with file=1,norecovery;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with file=2,recovery;
PS:with file=<n> 表示备份文件同时包含完全备份&差异备份,要还原的完整数据库备份是设备上的第1个备份集,差异备份是设备上的第2个备份集
如果是不同的文件则不需要指定with file=<n>
多次差异备份,还原时只需要使用你需要的时间点的最后一次差异备份就可以了

完全备份+事务日志备份及还原
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with init,format;
backup log <database_name> to disk=’d:backupdatabase_name.trn’;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with norecovery;
restore log <database_name> from disk=’d:backupdatabase_name.trn’ with recovery;
PS:多次日志备份则需要还原多次

完全备份+差异备份+事务日志备份及还原
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with init,format;
backup database <database_name> to disk=’d:backupdatabase_name.bak’ with differential;
backup log <database_name> to disk=’d:backupdatabase_name.trn’;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with norecovery;
restore database <database_name> from disk=’d:backupdatabase_name.bak’ with file=2,norecovery;
restore log <database_name> from disk=’d:backupdatabase_name.trn’ with recovery;
或者使用下面的,还原到特定的时刻:
restore log <database_name> from disk=’d:backupdatabase_name.trn’ with recovery,stopat = ‘2014-09-09 13:26:00’;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注