数据库恢复技术有哪些?
数据库系统类似于一些不同的PC框架,主要依赖于故障,但其中存储的数据应根据需要随时可用。然后,当数据库发生故障时,它应该具备快速恢复的功能。它还应该具有原子性,
例如,要么事务成功完成并提交(其影响永久记录在数据库中),要么事务不应对数据库产生任何影响。
对于备份数据和从任何故障情况中恢复数据,既有自动方法,也有非自动方法。用于恢复由于系统崩溃、事务错误、病毒、灾难性故障、错误命令执行等导致的丢失数据的技术称为数据库恢复技术。
恢复方法严重依赖于一个称为系统日志的特殊文件的可用性。它包含有关每个事务的开始和结束以及事务中发生的任何更新的信息。日志监控所有影响数据库项值的事务活动。此数据需要从事务失败中恢复。
事务失败
事务失败的原因如下:
逻辑错误 − 事务由于代码错误或任何内部错误条件而无法完成。
系统错误 − 数据库系统本身终止正在运行的事务,因为DBMS无法执行它,或者由于某些系统条件而需要停止。例如,在发生挂起或资源不可用时,系统会提前终止正在运行的事务。
DBMS是一个高度复杂的系统,每秒执行许多事务。DBMS的健壮性和弹性取决于其复杂的体系结构及其底层的硬件和系统软件。如果它在事务处理期间发生故障或崩溃,则系统通常会遵循某种算法或过程来恢复丢失的数据。
恢复技术
数据库的恢复技术如下所示:
基于日志的恢复
日志是用于管理事务期间活动记录的连续记录。日志在实际更改之前写入,并存储在稳定的存储介质上。
基于日志的恢复过程以三种不同的方式工作,如下所示:
- 延迟更新
- 立即更新
- 检查点
延迟更新方法
在此方法中,数据库在事务到达其提交点之前不会实际更新到磁盘。之后,更新会持久地存储在日志中,然后写入数据库。
在提交点之前,事务更新在本地事务工作区(如摇篮)中管理。如果事务在到达提交点之前失败,它不会更改数据库。
因此,无需撤销 (UNDO)。因此,需要从日志中重做 (REDO) 已提交事务的操作的影响,因为该影响可能尚未记录。
立即更新方法
在此方法中,数据库可能会在事务到达其提交点之前被事务的某些操作更新。这些操作会可靠地记录在磁盘上的日志中,有效地先写后改。
如果事务在记录对数据库的某些更改后但仍在提交点之前提前终止,则必须修复其对数据库操作的影响。
缓存/缓冲
在此方法中,包含要更新的数据项的一个或多个磁盘页面被存储到主内存缓冲区中,然后在内存中更新,然后再写回磁盘。
DBMS 维护一组称为 DBMS 缓存的内存缓冲区来保存这些缓冲区。目录用于跟踪缓冲区中哪些数据库项。