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