一、数据库恢复模式
1、完整恢复模式
所有影响数据库的活动都会记录到事务日志中;可恢复任何事务,可恢复到任何时点
2、大容量日志恢复模式
以下操作按最小化方式记录:
除此之外,其他同完整恢复模式相同。该模式日志比较小,但是日志备份比较大。可恢复到任何备份的结尾,但不支持时点恢复
3、简单恢复模式
日志自动截断清除。该模式只能恢复到备份的结尾,事务日志不能备份并用于数据恢复。
在完整恢复模式和大容量日志恢复模式下,必须进行日志备份。如果不想进行日志备份,则使用简单模式。
二、备份类型
1、完整备份
—>备份所有数据页
事务日志标记备份开始 —>事务日志标记备份结束—>备份日志(A)
—>事务日志记录数据库活动(A)
- BACKUP DATABASE 数据库名 TO DISK = ''
2、差异备份
备份最后一次完整备份后的事务日志
- BACKUP DATABASE 数据库名 TO DISK = '' WITH DIFFERENTIAL
3、文件/文件组备份
如果一个数据库分成多个文件和文件组时,可采取这种备份方式,这种备份方式对超大型数据库特别有效
备份数据页,然后备份针对该文件或文件组的事务日志(同完整备份模式的备份流程)
- BACKUP DATABASE 数据库名 FILEGROUP = '' TO DISK = ''
- BACKUP DATABASE 数据库名 FILE = '' TO DISK = ''
4、差异文件/文件组备份
同差异备份的备份流程
- BACKUP DATABASE 数据库名 FILEGROUP = '' TO DISK = '' WITH DIFFERENTIAL
- BACKUP DATABASE 数据库名 FILE = '' TO DISK = '' WITH DIFFERENTIAL
文件和文件组备份只有在数据库处于完整或大容量日志恢复模式下才可用,除非在简单恢复模式下,文件和文件组被标记为只读。
5、事务日志备份
- BACKUP LOG 数据库名 TO DISK = ''
6、部分备份
只备份允许更改的文件组
- BACKUP DATABASE 数据库名 READ_WRITE_FILEGROUPS TO DISK = ''
三、备份选项
--数据库备份选项
NOSKIP(默认):检查备份媒体的过期日期,防止覆盖以前的备份
SKIP:忽略备份媒体的过期日期
NOINIT(默认):新备份追加到原备份上
INIT:新备份覆盖原有备份
NOFORMAT(默认):防止覆盖备份条带集中的备份文件
FORMAT:创建一个新的备份媒体集,它将覆盖目标中现有的所有媒体集
DIFFERENTIAL:差异备份
UNLOAD(默认):备份完成时重绕并卸载磁带
NOUNLOAD:使磁带保持打开并加载的状态
NORECOVERY:将数据库置于不可访问的RESTORING状态
--日志文件备份选项
NO_TRUNCATE:把当前数据库所有活动记录写入事务日志中
四、还原
任何恢复过程的第一步是备份日志结尾
恢复序列从完整、文件或文件组恢复开始
如果执行恢复时使用NORECOVER选项,可应用后续的差异和事务日志备份
如果执行恢复时使用RECOVERY选项,数据库会恢复,不能将任何附加的备份恢复到数据库中
如果需要读取数据库的内容,同时要求能够恢复附加的差异事务日志备份,那么可以在恢复期间指定STANDBY选项
只要事务日志文件原封未动,就可执行事务日志备份,即使数据库的所有数据文件均已损坏。
如果指定CONTINUE_PAST_ERRORS选项,恢复就可跳过备份介质损坏的地方继续。如果遇到错误,数据库就会在恢复后进入EMERGENCY模式
备份
- --创建压缩的、镜像的完整备份
- BACKUP DATABASE STAR
- TO DISK='E:\BACKUP1\STAR.BAK'
- MIRROR TO DISK='E:\BACKUP2\STAR.BAK'
- WITH COMPRESSION,INIT,FORMAT,CHECKSUM,STOP_ON_ERROR
--COMPRESSION 压缩备份- --INIT 新备份覆盖原有备份
- --FORMAT 创建一个新的备份媒体集,它将覆盖目标中现有的所有媒体集
- --CHECKSUM 在读取页时验证任何页校验和或撕裂页的信息
--STOP_ON_ERROR 遇错备份终止并报错- /*操作数据库*/
- --创建事务日志备份
- BACKUP LOG STAR
- TO DISK='E:\BACKUP2\STAR1.TRN'
- MIRROR TO DISK='E:\BACKUP2\STAR2.TRN'
- WITH COMPRESSION,INIT,FORMAT,CHECKSUM,STOP_ON_ERROR
- /*操作数据库*/
- --创建差异备份
- BACKUP DATABASE STAR
- TO DISK='E:\BACKUP1\STAR.DIF'
- MIRROR TO DISK='E:\BACKUP2\STAR.DIF'
- WITH DIFFERENTIAL,COMPRESSION,INIT,FORMAT,CHECKSUM,STOP_ON_ERROR
还原
- --每次恢复操作的第一步都是备份日志结尾。BACKUP LOG命令向事务日志和主数据文件分别写了一条。
- --如果数据库是脱机的,可以备份事务日志,但不能写到主数据文件中。使用NO_TRUNCATE选项,可以在
- --不写入主数据文件的情况下备份事务日志
- --备份日志结尾
- BACKUP LOG Star
- TO DISK='E:\BACKUP1\STAR_TAIL.TRN'
- WITH COMPRESSION,INIT,NO_TRUNCATE
- --恢复完整备份
- RESTORE DATABASE STAR
- FROM DISK='E:\BACKUP1\STAR.BAK'
- WITH STANDBY='E:\BACKUP1\STAR.STN'
- --恢复差异备份
- RESTORE DATABASE STAR
- FROM DISK='E:\BACKUP1\STAR.DIF'
- WITH STANDBY='E:\BACKUP1\STAR.STN'
- --恢复事务日志备份
- RESTORE DATABASE STAR
- FROM DISK='E:\BACKUP1\STAR_TAIL.TRN'
- WITH STANDBY='E:\BACKUP1\STAR.STN'
- --恢复数据库
- RESTORE DATABASE STAR
- WITH RECOVERY
本文出自 “杨金澎” 博客,谢绝转载!