数据库恢复

  • 事务
    • 特性
      • 原子性、一致性、隔离性、持续性。
    • 状态
      • 活动:事务正常执行时的状态。
      • 部分提交:事务中的所有语句全部完成,数据还在内存中,未永久写入。
      • 失败:事务无法成功执行。
      • 中止:事务出现失败后回滚后的状态。
      • 提交:数据写入,事务完成。
  • 故障
    • 系统故障:导致系统停止运行,需要重启。正在运行的事务非正常终止,内存数据丢失。
    • 事务故障:事务在提交前发生非预期的失败,应用程序无法处理。
    • 介质故障:储存设备发生故障。
  • 恢复技术
    • 数据转储
      • 定义
        • 定期将数据库复制到其他储存设备,故障发生后将副本重新装入。
      • 分类
        • 静态和动态转储:
          • 静态转储时不响应用户事务。实现简单、降低可用性。
          • 动态转储时同时转储和响应用户事务。有并发性,不能保证数据正确有效。
        • 海量和增量转储:
          • 海量转储每次转储所有数据。恢复方便。
          • 增量转储只转储更新数据。转储性能更高。
    • 日志
      • 定义
        • 记录所有操作的信息,包括事务标识、操作、操作对象、数据值等。
      • 原则
        • 日志登记要按照事务执行的时间顺序。
        • 先写日志再写数据库。
      • 恢复
        • 重做技术:按照日志重新执行事务。按照日志记录顺序重做。
        • 撤销技术:按照日志恢复数据到修改前。按照日志记录逆序撤销。
      • 恢复策略
        • 系统故障
          • 对未完成事务,根据日志撤销修改。
          • 对部分提交事务,根据日志重做修改。
        • 事务故障
          • 根据日志撤销修改。
        • 介质故障
          • 重装数据库,装入最近的数据库转储,再装入日志重做已完成事务。
          • 如果使用动态转储,需要同时装入转储过程中产生的日志。
          • 需要 DBA 介入。
    • 检查点
      • 定义
        • 检查点是某时刻数据库运行状态的记录。
        • 日志文件中添加检查点记录,包括最近一个日志记录和正在运行的事务。
        • 增加重启动文件,其中记录所有检查点记录地址。
      • 更新
        • 创建检查点的步骤:
          • 写入日志缓冲区的日志。
          • 写入检查点记录。
          • 写入数据缓冲区的数据。
          • 写入检查点记录地址到重启动文件.
      • 恢复
        • 找到最后一个检查点,将此刻的事务加入撤销队列。
        • 在日志中,从检查点记录开始顺序扫描
          • 如果是事务的开始,则把事务放入撤销队列。
          • 如果是事务的结束,则把事务从撤销队列中移除,放入重做队列。
        • 撤销或重做队列中的事务。
    • 镜像
      • 定义
        • DBMS 自动维护当前数据库的副本,即时同步更新到镜像。
      • 恢复
        • 数据库故障时,自动使用镜像数据库,并用镜像恢复原数据库,不需要关闭系统。
        • 没有故障时,可以把镜像作为读数据库,提高查询性能。