灾难恢复王然wangran@itgoldenbridge.com微软金牌认证讲师概述设计一个备份策略备份用户数据库还原用户数据库从数据库快照中还原数据系统数据库和灾难恢复第1节:设计一个备份策略SQLServer备份类型什么是恢复模式?什么是完全数据库备份策略什么是数据库和事务日志备份策略?什么是差异备份策略?什么是文件或文件组备份策略备份操作员备份媒体SQLServer备份类型备份类型描述完全所有的数据文件和日志事务日志日志文件中的任何数据更改尾日志日志的活动部分差异自完全备份以来数据库更改的部分文件/文件组指定备份的文件或者文件组段落按顺序还原主文件组,读/写文件组和特定的只读文件组Copy-only数据库或日志(不影响备份序列)什么是还原模式?还原模式描述简单使用数据库的完全或差异副本。截断事务日志完全包括数据库备份和事务日志备份大容量日志包括数据库和事务日志备份,但是对于一些操作使用很少的日志空间。什么是完全数据库备份策略?以下情况下执行完整备份:数据库很小很少的数据库更改或者数据库为只读如果使用完整还原模式定期清除事务日志SundayMondayTuesday什么是数据事务日志备份策略?以下情况下结合数据库和事务日志备份:数据库经常更改完全备份花费太长时间SundayMonday什么是差异备份策略?以下情况下使用差异备份:数据库更改频繁希望最小化备份时间单独的备份事务日志MondayTuesday什么是文件或文件组备份策略?以下情况下使用文件或文件组备份:数据库非常大完全备份花费太长时间单独的备份事务日志管理复杂SundayMondayTuesdayWednesdayDatafile1Datafile2Datafile3备份操作员以下角色的成员拥有备份数据库的权限:sysadmindb_ownerdb_backupoperator备份媒体SQLServer支持备份到以下设备:磁带磁盘备份设备备份文件的长期存储位置备份集一个或多个备份设备的集合第2节:备份用户数据库如何执行一个完整数据库备份如何执行一个事务日志备份如何执行一个差异备份如何执行文件和文件组备份确保备份一致性选项练习:备份数据库如何执行一个完整数据库备份备份整个数据库包括部分的事务日志文件BACKUPDATABASE{database_name|@database_name_var}TObackup_device[,...n][WITH[FORMAT][[,]{INIT|NOINIT}]]]如何执行一个事务日志备份还原数据库到宕机时刻当使用完全或者大容量日志还原模式时,单独的备份事务日志可以频繁的创建BACKUPLOG{database_name|@database_name_var}TObackup_device[,…n][WITH[{INIT|NOINIT}]]如何执行差异备份备份自上次完全备份后的数据库更改比完全备份快而且小BACKUPDATABASE{database_name|@database_name_var}TObackup_device[,...n][WITH[DIFFERENTIAL]]如何执行文件和文件组备份用于大型的数据库管理复杂BACKUPDATABASE{database_name|@database_name_var}[file_or_filegroup[,...m]]TObackup_device[,…n]]Wherefile_or_filegroupis:{FILE={logical_file_name|@logical_file_name_var}|FILEGROUP={logical_filegroup_name|@logical_filegroup_name_var}}确保备份完整性的选项使用Backup语句的MIRRORTO选项使用BACKUP和RESTORE语句的CHECKSUM选项使用RESTOREVERIFYONLY语句来验证备份的可用性练习:备份数据库在此练习中,您将:适用MIRRORTO和CHECKSUM选项来备份一个数据库使用RESTOREVERIFYONLY验证备份的可用性第3节:还原用户数据库还原过程如何工作如何还原数据库如何还原事务日志如何还原文件和文件组练习:还原数据库还原过程如何工作还原阶段数据复制(Datacopy)重做(Redo)撤销(Undo)使用NORECOVERY和RECOVERY选项如何还原一个数据库从完全或差异备份中还原还原数据库文件重新创建数据库对象使用RECOVERY或NORECOVERY控制还原操作使用MOVE…TO选项更改文件存储使用REPLACE选项来替换已经存在的数据库USEmasterRESTOREDATABASEAdventureWorksFROMAWBackWITHNORECOVERYRESTOREDATABASEAdventureWorksFROMAWBackDiffWITHRECOVERY如何还原事务日志从一个事务日志备份中还原将记录在事务日志中的更改还原到数据库在要还原的最后一个日志中使用RECOVERY选项RESTOREDATABASEAdventureWorksFROMAWBackWITHNORECOVERYRESTORELOGAdventureWorksFROMAWBackLogWITHFILE=1,NORECOVERYRESTORELOGAdventureWorksFROMAWBackLogWITHFILE=2,RECOVERY如何还原文件和文件组降低还原大型数据库所用的时间当特定的文件丢失或损坏时还原数据保持数据库在线状态,还原文件和文件组USEmasterRESTOREDATABASEAdventureWorksFILE=AW2FROMAW2BackupWITHNORECOVERY练习:还原数据库在这个练习中,您将还原一个数据库第4节:从数据库快照中还原数据什么是数据库快照?数据库快照如何工作数据如何从数据库快照中还原练习:从数据库快照中还原数据什么是数据库快照?12:00Snapshot数据库在某个时间点的只读的,一致性视图用于测试或者开发数据库,或者报表以及灾难恢复必须与原数据库保留在相同的服务器上数据库快照如何工作SourceDBSnapshotDBCopy-On-WriteSELECT…SELECT…UPDATE…如何从数据库快照中恢复数据INSERTINTOProduction.WorkOrderRoutingSELECT*FROMAdventureWorks_dbsnapshot_1800.Prod.WorkOrderRouting从快照中插入原始数据还原删除的行UPDATEHR.DepartmentSETName=(SELECTNameFROMAdventureWorks_dbsnapshot_1800.HR.DepartmentWHEREDepartmentID=1)WHEREDepartmentID=11ScripttheobjectinthedatabasesnapshotExecutethescriptinthesourcedatabase2Repopulatetheobject(ifappropriate)3RESTOREDATABASEAdventureWorksFROMDATABASE_SNAPSHOT=‘AdventureWorks_Snapshot1200’从快照中获得原始的值撤销更新从快照中生成脚本,然后复制数据还原删除的对象从数据库快照中还原数据库还原数据库练习:从数据库快照中还原数据在此练习中,您将:创建数据库快照恢复数据库第5节:系统数据库的灾难恢复备份系统数据库的考虑还原系统数据库的考虑如何还原master数据库备份系统数据库的考虑备份系统数据库:在修改了master数据库之后使用CREATEDATABASE,ALTERDATABASE,或者DROPDATABASE语句执行特定的存储过程在修改msdb数据库之后在修改model数据库之后还原系统数据库的考虑从备份中还原master,model,和msdb数据库如果没有master数据库的可用备份,需要重新创建,使用以下工具SQLServerManagementStudio脚本重新附加未损坏的数据库如何还原master数据库如果SQLSevrer实例可以访问启动SQLServer为单用户模式还原最新的master数据库备份重新启动服务器如果SQLServer实例不可访问使用Setup.exe重新创建master数据库还原master数据库还原msdb和model数据库123123实验:实现灾难恢复策略练习1:实现备份策略练习2:还原数据库时间允许:还原master数据库