1、 寒山 sql 数据库修复中心 http:/ 数据库恢复概述 2 恢复的实现3 恢复策略4 SQL Server 的恢复技术2013 年 3 月 21 日数据库恢复技术21 数据库恢复概述1、引入“恢复”技术的原因 事务故障、系统故障、介质故障 计算机病毒2、恢复的基本原理 冗余3、恢复的含义(1)数据库本身被破坏 (2 )数据库没有被破坏,但数据 可能不正确 所谓数据库的恢复就是利用存储在系统其他地方的冗余 数据来修复数据库中被破坏的或不正确的数据,使数据 库从错误状态恢复到某一已知的正确状态。2013 年 3 月 21 日 数据库恢复技术 32 恢复的实现技术恢复机制涉及的两个关键问题:
2、数据转储 登记日志文件 ? 如何建立冗余数据如何利用冗余数据实施数据库恢复不同故障的恢复 策略有所不同2013 年 3 月 21 日 数据库恢复技术 42.1 数据转储1、含义 DBA 定期地将整个数据库复制到磁带或另一个磁盘上 形成后备副本保存起来的过程。2、利用转储方法进行恢复的过程 3、转储状态 静态转储 正常运行 动态转储Ta 转储 Tb 重新运行事务 运行事务 故障发生点 Tf4、转储方式 海量转储 增量转储 2013 年 3 月 21 日恢复重装后备副本数据库恢复技术52.2 登记日志文件? ? 日志文件的格式和内容 日志文件的作用 登记日志文件2013 年 3 月 21 日数据库
3、恢复技术6一、日志文件的格式和内容什么是日志文件 日志文件(log)是用来记录事务对数据库的更新操作的文件。日志文件的格式 以记录为单位的日志文件以数据块为单位的日志文件2013 年 3 月 21 日 数据库恢复技术 7日志文件的格式和内容(续)以记录为单位的日志文件内容 各个事务的开始标记(BEGIN TRANSACTION) 各个事务的结束标记(COMMIT 或ROLLBACK) 各个事务的所有更新操作 以上均作为日志文件中的一个日志记录 (log record)每条日志记录的内容 事务标识(标明是哪个事务) 操作类型(插入、删除或修改) 操作对象(记录内部标识) 更新前数据的旧值(对插入
4、操作而言,此项为空值) 更新后数据的新值(对删除操作而言, 此项为空值)2013 年 3 月 21 日 数据库恢复技术 8日志文件的格式和内容(续)以数据块为单位的日志文件,每条日志记录的内容 事务标识(标明是那个事务) 被更新的数据块2013 年 3 月 21 日数据库恢复技术9二、日志文件的作用?进行事务故障恢复进行系统故障恢复 协助后备副本进行介质故障恢复2013 年 3 月 21 日数据库恢复技术10利用静态转储副本和日志文件进行恢复转储 Ta Tb 运行事务 故障发生点 Tf正常运行登记日志文件恢复重装后备副本 利用日志文件恢复事务 继续运行登记日志文件2013 年 3 月 21 日
5、数据库恢复技术11三、登记日志文件基本原则 登记的次序严格按并行事务执行的时间次序 必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录 写到日志文件 ?写数据库操作:把对数据的修改写到数据库中2013 年 3 月 21 日 数据库恢复技术 123 恢复策略?事务分类基本的恢复操作 不同故障的恢复策略2013 年 3 月 21 日数据库恢复技术133.1 事务分类圆满事务指日志文件中记录了事务的 commit 标识,说明 日志中已经完整地记录下事务所有的更新活动。 ? 夭折事务 指日志文件中只有事务的开始标识,而无 commit 标识,说明对事务更新活动的记录是不完 整的,无法
6、根据日志来重现事务。为保证事务的 原子性,应该撤销这样的事务。2013 年 3 月 21 日 数据库恢复技术 143.2 基本的恢复操作:Redo 和 UndoRedo 和 Undo 是针对事务的某一次更新操作。Redo 是重新执行这次操作。其处理的方法是,正向扫描日志文件,将日志记录中“更新后的值”重新写入数据库。 ? Undo 是消除这次操作的影响,将事务执行点回退到这次操作 之前。其处理的方法是,反向扫描日志文件,将日志记录中 “更新前的值 ”重新写入数据库。 ? 在利用日志文件进行恢复的过程中,对已结束的事务中的更新 操作进行 Redo,对未结束的事务中的更新操作进行 Undo。201
7、3 年 3 月 21 日 数据库恢复技术 153.3 不同故障的恢复策略事务故障的恢复系统故障的恢复介质故障的恢复2013 年 3 月 21 日数据库恢复技术164 SQL Server 的恢复技术4.1 备份数据库 4.2 还原数据库4.3 备份和还原的策略2013 年 3 月 21 日数据库恢复技术174.1 备份数据库? ? ? SQL Server 数据备份的特点 SQL Server 数据库备份的类型 创建和管理备份设备 备份数据库2013 年 3 月 21 日数据库恢复技术18一、SQL Server 数据备份的特点SQL Server 支持在线备份备份工作由数据库管理员来完成20
8、13 年 3 月 21 日数据库恢复技术19二、SQL Server 数据库备份的类型全数据库备份事务日志备份增量备份(差异备份)文件和文件组备份2013 年 3 月 21 日数据库恢复技术20三、创建和管理备份设备备份设备是 SQL Server 用来存储数据库、事务日志或文件和 文件组备份的存储介质。 ? 备份设备可以是本地机器上的磁盘文件、远端服务器上的磁 盘文件、磁带以及命名管道。 ? 创建一个备份设备时,要给它一个逻辑名称和一个物理名称。 例如:设备类型本地磁盘逻辑名称DB_BACKUP_DISK TAPE_BACKUP NP_BACKUP2013 年 3 月 21 日物理名称D:B
9、ACKUPS DBBACKUP01.BAK .TAPE0 SQLBACKPIPESQLBACKUP数据库恢复技术 21网络磁盘磁带 命名管道TL_BACKUP_SQLBACK SQLBACKBACKUPSTLBACKUP.BAK创建备份设备使用企业管理器 ? 使用系统存储过程 sp_addumpdevicesp_addumpdevice devtype = device_type, disk、pipe、tapelogicalname = logical_name, physicalname = physical_name , cntrltype = controller_type | devs
10、tatus = device_status创建备份设备时,返回 0 表示创建成功,返回 1 表示创建失败。2013 年 3 月 21 日 数据库恢复技术 22示例例 1:创建一个磁盘备份设备:EXEC sp_addumpdevicedisk, student_full, d:xcmstudent.bak例 2:创建一个磁带备份设备:EXEC sp_addumpdevice tape, tapedump1, .tape02013 年 3 月 21 日 23数据库恢复技术管理备份设备列出备份设备 使用企业管理器 使用 sp_helpdevice 系统存储过程删除一个备份设备 使用企业管理器 使用
11、SP_DROPDEVICE 系统存储过程 SP_dropdevice logicalname,DELFILE2013 年 3 月 21 日 数据库恢复技术 24四、备份数据库备份的内容 master 数据库 msdb 数据库 model 数据库 distribution 数据库 所有的用户数据库使用企业管理器来备份数据库 数据库?所有任务? 备份数据库使用备份语句 BACKUP 来备份数据库2013 年 3 月 21 日 数据库恢复技术 25使用 BACKUP 来备份数据库完全备份 BACKUP DATABASE student TO student_full WITH INIT增量备份(差异
12、备份)BACKUP DATABASE student TO DISK = d:xmstudent_diff.bak WITH NOINIT, DIFFERENTIAL ? 日志备份 BACKUP LOG student TO student_log WITH NOINIT文件和文件组备份BACKUP DATABASE student FILE=stu2 TO student_file 26 2013 年 3 月 21 日 数据库恢复技术4.2 还原数据库使用企业管理器还原数据库使用 RESTORE 命令还原数据库 还原整个数据库 还原差异备份 还原日志备份 还原文件和文件组2013 年 3 月
13、 21 日数据库恢复技术27使用 RESTORE 命令还原数据库还原整个数据库 RESTORE DATABASE student FROM student_full还原差异备份 RESTORE DATABASE student FROM student_differ WITH NORECOVERY还原日志备份 RESTORE LOG student FROM student_log WITH RECOVERY2013 年 3 月 21 日 数据库恢复技术 28还原文件和文件组library 数据库创建在 lib1、lib2 和 lib3 文件上。Lib2 备份 在 lib2bk 备份文件上。该
14、数据库的日志备份在 liblog 备份设备 上,现在 lib2 数据文件坏了,可以通过下述命令将它恢复: RESTORE DATABASE library FILE = lib2 FROM lib2bk WITH NORECOVERY GO RESTORE LOG library FROM liblog WITH RECOVERY2013 年 3 月 21 日 数据库恢复技术 294.3 备份和还原的策略还原模型 备份类型 全数据库 数据库差异 简单 必需 可选 事务日志 不允许 文件或文件差异 不允许完全大容量日志记录必需必需可选可选必需必需可选可选2013 年 3 月 21 日数据库恢复技
15、术301. 你备份 SQL Server 数据的理由有哪些? A. 崩溃恢复。 C. 将数据从一种处理器结构转移到另一种。 B. 数据的历史档案。D. 将数据从一个服务器转移到另一个。2. 建立备份并且从中恢复的备份设备类型有哪些? A. 磁带设备 B. 空设备 C. 命名管理设备 D. 本地磁盘设备思考题3. SQL Server 备份是动态备份,对于一名系统管理员,这意味 着什么? A. 你不必计划备份工作; SQL Server 会自动地为你完成。 B. 当用户使用数据库的时候,你可以备份它,只不过性能上有 点影响。 C. 备份和恢复过程会在必要的时候发生,而无需用户干预。 D. 动态备
16、份是事务日志过程,并且这个过程是不断地运行的。2013 年 3 月 21 日 数据库恢复技术 314. 假设你是一个包含着联机事务处理数据库的 SQL Server 的 管理员。数据库每天 24小时运转。将全部数据库备份到磁带 大约要花费 4 个小时;事务日志备份到磁带大约需20 分钟。 主要目的:建立数据库备份结构,允许 1 小时的数据损失。次要目的:允许数据库在一定的情况下及时被恢复,允许用 户在高峰使用期间以一种有效的方式继续工作。请问,下列哪种建议方案可达到主要目的和次要目的。A. 每天执行 4 次数据库的完全备份。 B. 非高峰使用的小时内执行数据库的完全备份,每小时进行 一次把事务
17、日志备份到磁带的操作。 C. 非高峰使用的小时内执行数据库的完全备份。每小时进行 一次把事务日志备份到磁盘的操作。2013 年 3 月 21 日 数据库恢复技术 325、SQL Server 现在有三种方法备份数据库中的数据,分别是【 】备份、 【 】备份和【 】备份。 6、下列哪项不是你应该定期维护的 SQL Server 数据库备份? msdb master distribtion Tempdb7、下列哪条命令是对 library 数据库进行增量备份。 BACKUP DATABASE library to Nw1 WITH INIT BACKUP DATABASE library FILE=lib2 TO librarybk BACKUP LOG library TO nwlog WITH NOINIT BACKUP DATABASE library TO DISK = e:xcmnwdiff.bak WITH NOINIT,DIFFERENTIAL2013 年 3 月 21 日 数据库恢复技术 33本文来自 sql 数据库修复大师 http:/