式:
这是用的最少的恢复模式,读者不要给名字忽悠了,见过很多人在进行大容量操作时切换到这种模式,然后操作完再切换回来,这种操作其实比较危险。不建议使用。另外,它支持日志备份,能进行一定程度的时间点恢复。除了前面提到的可最小化日志的操作,其日常使用和管理与完整模式无疑。可以理解为是完整模式和简单模式的过渡。
缺点:
如果数据文件突然变得不可用,并且日志尾部包含了大容量日志模式下进行的最小化日志操作,那么不可能进行日志尾部备份,因为这种备份要求访问数据修改所发生的区,而这个区在最小化日志操作中仅记录“发生了操作”,而没有完整地记录操作内容。导致无法进行时间点还原,存在一定的数据丢失风险。做好事务管理的话,其实这种模式基本上没什么存在的价值。
备份成份:
现在来说说一个备份会包含什么内容,很多人以为,特别是完整数据库备份,就是把所有东西都备份,其实他们被名字迷惑了。在介绍备份成份前,先介绍SQL Server的数据库成份,SQL Server数据库是一系列基于Windows的文件,最简单的模式包含一个数据文件(默认后缀名为MDF)和一个日志文件(默认后缀名为LDF),后缀名能改,但是没有任何理由去改。后果很严重…。这两个文件在创建数据库时就自动创建,在后续运行当中,可能会创建多个数据文件(默认后缀名为ndf),多个日志文件(大部分情况下没必要,在日志备份一文介绍),还有一些文件组,每个文件组包含若干个文件。
数据文件:
数据文件是用于存储系统及用户数据及对象,简单来说,就是数据、表、视图、存储过程、触发器等等。除此之外,还包含权限信息。每个数据库最少要有一个数据文件,默认为主数据文件,primary data file,默认后缀名为.MDF。存储在主文件组(primary Filegroup中),如果需要新加文件,这些文件就是次要数据文件(虽然名字为次要,但是一点都不次要…),默认后缀名为.NDF。
主数据文件包含:所有系统对象和数据、默认情况下所有用户自定义的对象和数据。还有其他次要数据文件的地址。
文件组:
文件组是文件的一个逻辑集合,它可以包含一个或者多个数据文件,默认创建数据库时就会创建一个primary 文件组,存放primary数据文件。这个同时是default文件组,所有数据都会存放到这里,除非额外指定,default文件组可以改,前提是有两个或以上的文件组,这样可以把数据强制写到别的文件组中,有时候通过这种方式可以缓解磁盘的压力。另外primary文件组还存了其他所有文件组的路径。
对于多个文件组的数据库,可以进行文件组备份,这种方式对于超大型数据库(VLDB)非常有效,因为据我工作经验,即使一个150G的库做一个完整备份,也往往要进行20分钟左右,如果是150T的库,恐怕几个小时都搞不定,这时候,文件组备份就起到很重要的作用,把文件组控制在一定的大小,然后每次备份只对单独文件组进行,这样可以把一个连续的备份操作拆分为很多小操作。另外,文件组可以设为只读(read-only),这样可以在纯读操作中,减少锁和等待的产生,对性能方面有一定程度上的帮助。对于文件组配置放在其他章节,这里不累赘。
需要提醒的是,文件组带来性能方面的改进同时,也带来了管理方面复杂度的提升。所以需要慎重考虑。
事务日志:
这部分也有单独的介绍,这里只做简介,所有SQLServer数据库、所有恢复模式下,都有最少一个事务日志文件。虽然后面有专门的文章介绍,但是这里要不厌其烦地提醒,别因为任何模式、或者LDF文件太大就删除LDF让SQLServer,最严重的情况是会导致你的数据库无法使用。
备份类型:
目前微软已发布的SQLServer版本中,支持以下类型的备份:完整数据库备份、差异数据库备份、事务日志备份(后称日志备份)、文件和文件组备份、部分备份,但是如前面所说,根据SQL Server版本不同,有些备份类型不支持,另外根据恢复模式的不同,某些备份类型也不支持。数据文件、文件组及日志文件组成了SQL Server数据库,并且成为了各种备份类型的对象。下面简介一下各种备份类型:
数据库备份:把主数据文件和次要数据文件(如果有)上面的数据和对象存入备份文件中,这类细分为:
备份需要考虑的因素:
备份时需要考虑以下几个因素,不能认为备份是简单操作,作为任何数据库管理(包括专业DBA或者兼职管理人员),备份都是第一要务,所以要认真对待:
What’s the next
1、准备环境,本系列主要使用Windows Server 2012 R2+SQL Server 2008 R2企业版+AdventureWorks 2008 R2数据库及为了演示而额外创建的一些数据库。
2、下文将演示完整数据库备份,需要注意,是完整数据库备份,而不是完整备份,虽然大部分情况下这是等价的,但是完整备份实际上包含完整文件备份,为了减少误解,这里需要说明是数据库备份。
- 易于管理,大部分情况下不需要
缺点:
- 能够完整记录数据库操作
- 进行时间点恢复,保证数据尽可能0丢失
缺点:
- 需要严格管理事务日志文件
- 数据库规模可能会变得难以控制
- 完整数据库备份:备份特定数据库的所有文件的所有数据和对象,还有足以用于在故障时恢复数据库到一致性状态的日志部分。
- 差异数据库备份:备份特定数据库上自最近一次完整数据库备份之后发生修改的所有数据文件的数据和对象。
事务日志备份:把特定数据库自上一次日志备份后写入LDF文件的日志记录写入备份文件。
文件备份:把数据文件或者文件组中的数据及对象写入备份文件,可以细分为:
- SLA
- 备份存放位置
- 备份周期及备份类型组合
- 备份文件存放周期
- 执行备份的工具
- 对性能的影响
这些部分将在后续陆续介绍。