文章目录
数据库恢复技术
事务的基本概念
- 为了解决运行因故障而终止(在操作之间发生故障导致数据库不正确)和并发(同时交替进行书记处更改导致原来的数据被覆盖等导致数据库不正确)的问题
- 事务的定义- 一个数据库操作序列(由多个操作组成的有序序列)- 事务是一个不可分割的工作单位(一个事务包含多个操作组成的有序序列 这些有序序列是一个整体 不可分割 必须全部执行或者全部不执行 不可部分执行)- 恢复和并发控制的基本单位- 分类:只包含一条SQL语句的事务称为单语句事务 包含多条SQL语句的事务称为多语句事务事务和程序的比较- 一个程序通常包含多个事务- 在关系数据库中,一个事务可以是一条或多条 SQL 语句,也可以是一个或多个程序- 定义事务的SQL语句- 显式定义方式
begin transition 1...2...commit--全部操作完成begin transition 1...2...rollback--全部操作都取消掉
- 隐式定义方式当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务(自动认为一条 DDL 或者一条 DML 就是一个事务)EG1 在查询分析器中执行下列语句,BDMS将理解为____个事务select*from student update student set sdept='IS’ where sno='201215121' update student set sdept='CS’ where sno='201215125'
3EG2 在查询分析器中执行下列语句,BDMS将理解为____个事务select*from student begintransactionupdate student set sdept='IS’ where sno=‘202015121'update student set sdept='CS’ where sno=‘202015125'commit
2EG3 在查询分析器中执行下列语句,BDMS将理解为____个事务 运行之后对数据产生什么样地影响select*from student begintransactionupdate student set sdept='IS'where sno='201215121'update student set sdept='CS'where sno='201215125'rollback
2 对数据没有产生任何影响第一个事务是查询 对数据没有产生影响第二个事务是rollback 全部操作都取消掉。对数据从也没产生影响 - 事务的ACID特性- 原子性 事务不可再分- 一致性 即正确性 事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态- 隔离性 对并发执行而言一个事务的执行不能被其他事务干扰 一个事务内部的操作及使用的数据对其他并发事务是隔离的 并发执行的各个事务之间不能相互干扰- 持续性 永久性 事务一旦提交 他对数据库中数据的改变就应该是永久性的 接下来的其他操作或故障不应该对其执行结果有任何的影响EG4 银行转帐:帐号A上有1000元,帐号B上有2000元。从帐号A向帐号B 转500元这个 事务包含两个操作 如果这些操作全都做的话 数据库进入一致性状态如果全部做 数据库也进入一致性状态但是如果只做一个操作的话,数据库就进入不一致性状态结论 只要事务的原子性不遭到破坏 就能保证事务的一致性 一致性是原子性的结果
数据库恢复概述
- DBMS对故障的对策 - DBMS提供恢复子系统- 保证故障发生后,能把数据库从错误状态恢复到某一已知的正确状态 就是数据库的恢复- 保证事务的ACID特性
- 数据库恢复技术是衡量系统优劣的重要指标数据库恢复机制是数据库管理系统的重要组成部分
恢复实现技术
- 恢复操作的基本原理:冗余,用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。(比如把U盘的没被破坏数据下回到数据被破坏的电脑上)
- 如何建立冗余数据- 数据转储1. DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本2. 如何使用- 数据库遭到破坏后可以将后备副本重新装入- 重装后备副本只能将数据库恢复到转储时的状态3. 转储方法分类- 转存状态分类- 静态转储系统中没有运行事务的时进行转储1. 转储开始时数据库处于一致性状态2. 转储期间不允许对数据库的任何存取、修改活动3. 优点:实现简单缺点:降低了数据库的可用性转储必须等事务结束才能开始,转储过程中不能有新的事务能将事务恢复到Tb时刻- 动态转储1. 动态转储操作与用户事务并发进行。转储期间允许对数据库进行存取或修改。2. 优点:效率高缺点:不能保证一致性- 转存方式分类- 海量转储:每次转储全部数据库- 增量转储:只转储上次转储后更新过的数据- 登录日志文件1. 日志文件的格式和内容- 日志文件是用来记录事务对数据库的更新操作的文件- 日志文件的格式 是以记录为单位的日志文件或以数据块为单位的日志文件- 日志文件的内容:- 各个事务的开始标记 begin transaction- 各个事务的结束标记 commit- 各个事务的所有更新操作以上均为日志文件中的一个日志记录注意区分修改语句和查询语句****EG5 分析下面的事务会产生多少条日志记录?
Begintransactionselect*from student where sno='201915121'Update student Set sdept='IS'Where sno='201915121'select*from student where sno='201915125'Update student Set sdept='CS'Where sno='201915125'COMMIT
4- 基于记录的日志文件- 每条日志记录的内容 - 事务标识 标明是哪个事务- 操作类型 插入删除或修改- 操作对象 记录内部标识- 更新前数据的旧值 对插入操作而言 此项为空值- 更新后数据的旧值 对删除操作而言 此项为空值- 基于数据块的日志文件- 每条日志记录的内容- 事务标识(标明是那个事务)- 被更新的数据块2. 日志文件的作用1. 进行事务故障恢复2. 进行系统故障恢复3. 协助后备副本进行介质故障恢复在恢复数据的时候结合转储和日志文件3. 登记日志文件- 基本原则- 按照并行事务执行的时间次序- 必须先写日志文件 再写数据库- 写日志文件操作 把标识这个修改的日志记录写到日志文件- 写数据库操作 把对数据的修改写到数据库中- 为什么?如果先修改数据库之后发生故障,日志文件中没有相应的数据 从而导致可能无法恢复
恢复策略
- 事务故障的恢复 DBMS自动恢复 不需要用户干预
- 系统故障的恢复 软故障 DBMS重新启动系统的时候自动恢复 不需要用户干预
- 介质故障的恢复 硬故障恢复方法- 重装数据库- 重做已完成的事务- 备份和还原策略备份类型****说明完整备份备份完成时刻的数据库 提供了任何其他备份的基准差异备份事先已执行过一次完整备份 对上一次完整备份之后所有更改的数据作备份事务日志备份事先已执行过一次完整备份 从上一次事务日志备份到当前事务日志的尾部 截断已确认的事务日志 备份T-SQL语句,而不是数据库结构、文件结构或数据策略****说明完整备份和还原小型数据库 数据库很少改变或只读完整+差异备份与还原数据库频繁更改 想要最少的备份时间完整+事务日志备份与还原数据库和事务日志备份相结合 数据库经常更改 完整备份时间过长完整+差异+事务日志备份与还原可以减少所需还原事务日志备份的数量 缩短恢复数据库的时间- 如果有三次完整备份****只能选择任意的一个完整数据库备份进行还原- 完整性备份+差异备份与还原**EG6 ** 如果要还原到11:00时的数据库状态 完整数据库备份1 + 差异数据库备份2如果要还原到12:30时的数据库状态 完整数据库备份2+差异数据库备份3- 完整备份+日志备份与还原可以恢复到某一时刻如果还原到11:00时的数据库状态 完整数据库备份1+日志数据库备份1如果还原到12:30时的数据库状态 完整数据库备份2+日志数据库备份3或者完整备份1+日志备份1+日志备份2+日志备份3恢复到10:45时的状态 完整备份1+日志备份1+日志备份2 指定到10:45的恢复即时点
本文转载自: https://blog.csdn.net/weixin_50895611/article/details/125033009
版权归原作者 Wang Xinyu 所有, 如有侵权,请联系我们删除。
版权归原作者 Wang Xinyu 所有, 如有侵权,请联系我们删除。