数据库恢复技术

104 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

数据库恢复技术

事务的基本概念

事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

事务和程序是两个概念,在关系数据库中:

​ 一个事务可以是一条SQL语句,一组SQL语句或整个程序。

​ 一个程序通常包含多个事务。

事务是恢复和并发控制的基本单位。

事务的ACID特性:

  • 原子性(Atomicity)事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做
  • 一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
  • 隔离性(Isolation)一个事务的执行不能被其他事务干扰,一个事务内部的操作及使用的数据对其他并发事务是隔离的;并发执行的各个事务之间不能互相干扰。(比如A 正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账)
  • 持久性(Durability)一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果用任何影响

数据库恢复概述

故障是不可避免的。

  • 计算机硬件故障
  • 软件的错误
  • 操作员的失误
  • 恶意的破坏
  • 故障的影响
  • 运行事务非正常中断,影响数据库中数据的正确性
  • 破坏数据库;全部或部分丢失数据

数据库的恢复

数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复管理系统对故障的对策

  • 恢复子系统是数据库管理系统的一个重要组成部分
  • 恢复技术是衡量系统优劣的重要指标

故障的种类

  1. 事务内部的故障

    有的是可以通过事务程序本身发现的(转账事务的例子)。有的是非预期的,不能由事务程序处理的。(如运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制等)

  2. 系统故障

    称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。如:整个系统的正常运行突然被破坏、所有正在运行的事务都非正常终止、不破坏数据库、内存中数据库缓冲区的信息全部丢失。常见原因:特定类型的硬件错误(如CPU故障)、操作系统故障、DBMS代码错误、系统断电等。

  3. 介质故障

    称为硬故障,指外存故障,如:磁盘损坏、磁头碰撞、操作系统的某种潜在错误、瞬时强磁场干扰。介质故障破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。

    介质故障比前两类故障的可能性小得多,但破坏性大得多。

  4. 计算机病毒

    一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。可以繁殖和传播,造成对计算机系统包括数据库的危害。

恢复的实现技术

恢复操作的基本原理:冗余

  • 利用存储这系统其他地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据

恢复的实现技术:复杂

  • 一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上

恢复机制涉及的关键问题

  1. 如何建立冗余数据(恢复方式)

    数据转储(backup)转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程

    备用的数据文本称为后备副本或后援副本

    登录日志文件(logging)日志文件(log)是用来记录事务对数据库的更新操作的文件

  2. 如何利用这些冗余数据实施数据库恢复

恢复策略

  1. 事务故障:事务在运行至正常终止点前被终止。

    恢复策略:由恢复子系统利用日志文件撤消( UNDO )此事务已对数据库进行的修改,使得该事务像根本没有启 动过一样。

    事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预

  2. 系统故障 造成数据库不一致状态的原因:

    ①未完成事务对数据库的更新已写入数据库

    ②已提交事务对数据库的更新还留 在 缓冲区没来得及写入数据库。

    恢复策略:

    ①Undo 故障发生时未完成的事务

    ②Redo 已完成的事务 系统故障的恢复由系统在 重新启动时 自动完成,不需要用户干预

  3. 介质故障: 称为硬故障,指外存故障,如:磁盘损坏、磁头碰撞、操作系统的某种潜在错误、瞬时强磁场干扰。

    恢复策略:

    ①重装数据库

    ②重做已完成的事务

    介质故障的恢复需要 DBA 介入,DBA 的工作

    ①重装最近转储的数据库副本和有关的各日志文件副本

    ②执行系统 提供的恢复命令。具体的恢复操作仍由 DBMS 完成。