【笔记】数据库故障与恢复
数据库故障主要分:事务故障、系统故障和介质故障
事务故障
是指事务在运行至正常终点前被终止,此时数据库可能出现不正确的状态。
是由于事务程序内部错误而引起的,有些可以预期,如金额不足等,有些不可以预期,如非法输入、运算溢出等。
类似于手动执行回滚
恢复过程:
1、反向(从后向前)扫描日志文件,查找该事务的更新操作
2、对该事务的更新操作执行逆操作,也就是将日志记录更新前的值写入数据库。
3、重复1,2步骤,直到读到了此事务的开始标记,事务故障恢复就完成了。
事务故障的恢复由系统自动完成,对用户是透明的
系统故障(通常称为软故障)
是指造成系统停止运转的任何事件,使得系统要重新启动。
由特定类型的硬件错误、操作系统故障、DBMS代码错误、突然停电等引起的。
恢复过程:
1、正向(从头到尾)扫描日志文件,找出故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO) 队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤销(UNDO)队列
2、反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,也就是将日志记录中更新前的值写入数据库。
3、正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,也就是将日志记录中更新后的值写入数据库。
系统故障是在系统重启之后自动执行的,对用户是透明的。
介质故障(称为硬件故障)
是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。
这类故障将破环数据库或部分数据库,并影响正在存取这部分数据的所有事务,日志文件也被破坏。
恢复过程:
需要DBA
1、装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
2、转入相应的日志文件副本,重做已完成的事务
介质故障的恢复需要DBA的介入,具体的恢复操作仍由DBMS完成。
网络故障恢复
(1)双主干,当网络发生故障时,辅助网络就会承担数据传输的任务,两条主干线的物理距离应当相距较远,来减少两条线缆同时损坏的概率。
(2)双开关控制技术,可以精确的检测出发生故障的地段,并用辅助路线来分担数据流量。
(3)路由器,为数据指明流动的方向。
(4)通信中件,可以使通信绕过网络中发生故障的电路,通过其他网络连接来传输数据。