数据库恢复技术

数据库恢复技术

事务的基本概念
  1. 为了解决运行因故障而终止(在操作之间发生故障导致数据库不正确)和并发(同时交替进行书记处更改导致原来的数据被覆盖等导致数据库不正确)的问题

  2. 事务的定义

    • 一个数据库操作序列(由多个操作组成的有序序列)
    • 事务是一个不可分割的工作单位(一个事务包含多个操作组成的有序序列 这些有序序列是一个整体 不可分割 必须全部执行或者全部不执行 不可部分执行
    • 恢复和并发控制的基本单位
    • 分类:只包含一条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'
        

        3

        EG2 在查询分析器中执行下列语句,BDMS将理解为____个事务

        select * from student
        		begin transaction
        		   update student
        		   set sdept='IS’
        		   where sno=‘202015121'
        
        		   update student
        		   set sdept='CS’
        		   where sno=‘202015125'
        		commit
        

        2

        EG3 在查询分析器中执行下列语句,BDMS将理解为____个事务 运行之后对数据产生什么样地影响

        select * from student
        	begin transaction
         	    update student
        	    set sdept='IS'
        	    where sno='201215121'
        
         	   update student
         	   set sdept='CS'
         	   where sno='201215125'
        	rollback
        

        2 对数据没有产生任何影响

        第一个事务是查询 对数据没有产生影响

        第二个事务是rollback 全部操作都取消掉。对数据从也没产生影响

  3. 事务的ACID特性

    • 原子性 事务不可再分

    • 一致性 即正确性 事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态

    • 隔离性 对并发执行而言一个事务的执行不能被其他事务干扰 一个事务内部的操作及使用的数据对其他并发事务是隔离的 并发执行的各个事务之间不能相互干扰

    • 持续性 永久性 事务一旦提交 他对数据库中数据的改变就应该是永久性的 接下来的其他操作或故障不应该对其执行结果有任何的影响

      EG4 银行转帐:帐号A上有1000元,帐号B上有2000元。从帐号A向帐号B 转500元在这里插入图片描述

      这个 事务包含两个操作 如果这些操作全都做的话 数据库进入一致性状态

      如果全部做 数据库也进入一致性状态

      但是如果只做一个操作的话,数据库就进入不一致性状态

      结论 只要事务的原子性不遭到破坏 就能保证事务的一致性 一致性是原子性的结果

数据库恢复概述
  1. DBMS对故障的对策
    • DBMS提供恢复子系统
    • 保证故障发生后,能把数据库从错误状态恢复到某一已知的正确状态 就是数据库的恢复
    • 保证事务的ACID特性
  2. 数据库恢复技术是衡量系统优劣的重要指标数据库恢复机制是数据库管理系统的重要组成部分
恢复实现技术
  1. 恢复操作的基本原理:冗余,用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。(比如把U盘的没被破坏数据下回到数据被破坏的电脑上)

  2. 如何建立冗余数据

    • 数据转储

      1. DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本

      2. 如何使用

        • 数据库遭到破坏后可以将后备副本重新装入
        • 重装后备副本只能将数据库恢复到转储时的状态
      3. 转储方法分类

        • 转存状态分类

          • 静态转储

            系统中没有运行事务的时进行转储

            1. 转储开始时数据库处于一致性状态

            2. 转储期间不允许对数据库的任何存取、修改活动

            3. 优点:实现简单

              缺点:降低了数据库的可用性

              转储必须等事务结束才能开始,转储过程中不能有新的事务

              能将事务恢复到Tb时刻

          • 动态转储

            1. **动态转储操作与用户事务并发进行。**转储期间允许对数据库进行存取或修改。

            2. 优点:效率高

              缺点:不能保证一致性

        • 转存方式分类

          • 海量转储:每次转储全部数据库

          • 增量转储:只转储上次转储后更新过的数据

    • 登录日志文件

      1. 日志文件的格式和内容

        • 日志文件是用来记录事务对数据库的更新操作的文件

        • 日志文件的格式 是以记录为单位的日志文件或以数据块为单位的日志文件

        • 日志文件的内容:

          • 各个事务的开始标记 begin transaction
          • 各个事务的结束标记 commit
          • 各个事务的所有更新操作

          以上均为日志文件中的一个日志记录

          注意区分修改语句和查询语句

          EG5 分析下面的事务会产生多少条日志记录?

          Begin transaction  
              select  * 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. 登记日志文件

        • 基本原则

          • 按照并行事务执行的时间次序

          • 必须先写日志文件 再写数据库

            • 写日志文件操作 把标识这个修改的日志记录写到日志文件

            • 写数据库操作 把对数据的修改写到数据库中

            • 为什么?

              如果先修改数据库之后发生故障,日志文件中没有相应的数据 从而导致可能无法恢复

恢复策略
  1. 事务故障的恢复 DBMS自动恢复 不需要用户干预

  2. 系统故障的恢复 软故障 DBMS重新启动系统的时候自动恢复 不需要用户干预

  3. 介质故障的恢复 硬故障

    恢复方法

    • 重装数据库

    • 重做已完成的事务

    • 备份和还原策略

      备份类型说明
      完整备份备份完成时刻的数据库 提供了任何其他备份的基准
      差异备份事先已执行过一次完整备份 对上一次完整备份之后所有更改的数据作备份
      事务日志备份事先已执行过一次完整备份 从上一次事务日志备份到当前事务日志的尾部 截断已确认的事务日志 备份T-SQL语句,而不是数据库结构、文件结构或数据
      策略说明
      完整备份和还原小型数据库 数据库很少改变或只读
      完整+差异备份与还原数据库频繁更改 想要最少的备份时间
      完整+事务日志备份与还原数据库和事务日志备份相结合 数据库经常更改 完整备份时间过长
      完整+差异+事务日志备份与还原可以减少所需还原事务日志备份的数量 缩短恢复数据库的时间
      • 如果有三次完整备份 只能选择任意的一个完整数据库备份进行还原

      • 完整性备份+差异备份与还原

        **EG6 ** 在这里插入图片描述

        如果要还原到11:00时的数据库状态 完整数据库备份1 + 差异数据库备份2

        如果要还原到12:30时的数据库状态 完整数据库备份2+差异数据库备份3
        在这里插入图片描述

      • 完整备份+日志备份与还原 可以恢复到某一时刻

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCzbGlM6-1653814202302)(C:\Users\wxy\AppData\Roaming\Typora\typora-user-images\image-20220529164201951.png)]

        如果还原到11:00时的数据库状态 完整数据库备份1+日志数据库备份1

        如果还原到12:30时的数据库状态 完整数据库备份2+日志数据库备份3

        或者完整备份1+日志备份1+日志备份2+日志备份3
        在这里插入图片描述
        在这里插入图片描述

        恢复到10:45时的状态 完整备份1+日志备份1+日志备份2 指定到10:45的恢复即时点

雪梨作业总结
  1. 数据库恢复的基础是利用转储的冗余数据,这些转储的冗余数据包括 日志文件、数据库后备副本
  2. 日志文件 用来记录对数据库中数据进行的每一次更新操作
  3. 多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此数据库系统必须进行 并发控制
  4. 事务日志用于保存 对数据的更新操作
  5. 数据冗余不属于并发操作带来的数据不一致性
  6. 事务的持续性是指 事务一旦提交 对数据库的改变是长久的
  7. 事务是数据库进行的基本工作单位。如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于 一致性 状态。
  8. SQL语言的COMMIT语句的主要作用是 提交事务
  9. 若事务T对数据R已加X锁,则其他对数据R 不能再加任何锁
  • 23
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
研究磁盘数据恢复的,可以参考 09\JIAN-H 第9章的9.1 JIAN-H.EXE 建立汉字库头文件 09\HZCALL 第9章的9.2 HZCALL.OBJ 显示汉字程序模块 09\NAME 第9章的9.3 NAME.OBJ 图形方式下处理输入字符 10\ARSE 第10章的10.1 ARSE.EXE 读扇区数据(汇编) 10\CRSE 第10章的10.2 CRSE.EXE 读扇区数据(C) 10\HCRSE 第10章的10.3 HCRSE.EXE 读扇区数据(C、汉显) 11\AWSE 第11章的11.1 AWSE.EXE 写扇区数据(汇编) 11\CWSE 第11章的11.2 CWSE.EXE 写扇区数据(C) 11\HCWSE 第11章的11.3 HCWSE.EXE 写扇区数据(C、汉显) 12\ALLSE 第12章的12.1 ALLSE.EXE 对扇区进行多种操作 12\HALLSE 第12章的12.2 HALLSE.EXE 对扇区进行多种操作(汉显) 13\READSF 第13章的13.1 READSF.EXE 读扇区备份文件 13\HREADSF 第13章的13.2 HREADSF.EXE 读扇区备份文件(汉显) 14\SEDIT 第14章的14.1 SEDIT.EXE 编辑扇区文件字节值 14\HSEDIT 第14章的14.2 HSEDIT.EXE 编辑扇区文件字节值(汉显) 15\SBLOCK 第15章的15.1 SBLOCK.EXE 扇区文件块拷贝 15\HSBLOCK 第15章的15.2 HSBLOCK.EXE 扇区文件块拷贝(汉显) 16\JIAN-H1 第16章的16.2.3 JIAN-H1.EXE 扩充汉字库头文件 16\HZCALL1 第16章的16.2.3 HZCALL1.OBJ 重新编译汉字显示程序模块 16\COMPSF 第16章的16.1 COMPSF.EXE 比较扇区文件 16\HCOMPSF 第16章的16.2 HCOMPSF.EXE 比较扇区文件(汉显) 17\0SE63 第17章的17.1 0SE63.EXE 显示0磁道扇区数据 17\H0SE63 第17章的17.2 H0SE63.EXE 显示0磁道扇区数据(汉显) 18\EARSE 第18章的18.2 EARSE.EXE 扩展读扇区数据(汇编) 19\EAWSE 第19章 EAWSE.EXE 扩展写扇区数据(汇编) 20\RSECTOR 第20章的20.1-20.3 RSECTOR.EXE C调用汇编扩展读 20\HRSECTOR 第20章的20.4 HRSECTOR.EXE C调用汇编扩展读(汉显) 21\WSECTOR 第21章的21.1-21.3 WSECTOR.EXE C调用汇编扩展写 21\HWSECTOR 第21章的21.4 HWSECTOR.EXE C调用汇编扩展写(汉显) 22\EALLSE 第22章的22.1 EALLSE.EXE 对扇区多种扩展操作 22\HEALLSE 第22章的22.2 HEALLSE.EXE 对扇区多种扩展操作(汉显) 23\JIAN-H2 第23章的23.2 JIAN-H2.EXE 扩充汉字库头文件 23\HZCALL2 第23章的23.2 HZCALL2.OBJ 重新编译汉字显示程序模块 23\BOOTF

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值