金仓数据库KingbaseES 故障恢复相关的理论汇总
关键字:
KingbaseES、 故障恢复、人大金仓、KingbaseES
数据库管理系统对故障的对策
DBMS提供了恢复子系统,用来保证各种故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态。即保证各个事务中的操作要么全部完成,要么全部不做。事务的原子性和持久性跟恢复子系统密切相关。
A事务的原子性:
事务提交,事务中的操作全部完成
事务回滚,事务中的操作全部不做
D事务的持久性:
所有提交事务的操作结果永久保存
故障的种类:
- 事务故障:
定义:某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了
处理:返回用户一个错误信息,应用程序应该捕获错误,并进行相应的错误处理。发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘。
恢复:事务撤消(UNDO);恢复程序要在不影响其它事务运行的情况下,强行回滚(ROLLBACK)该事务,即清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样。
- 系统故障
定义:由于某种原因造成整个系统的正常运行突然停止,致使所有正在运行的事务都以非正常方式终止。
影响:发生系统故障时,内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响
常见原因: 操作系统或DBMS代码错误;操作员操作失误;特定类型的硬件错误(如CPU故障);突然停电
恢复:1. 清除尚未完成的事务对数据库的所有修改
如果DBMS无法确定哪些事务已更新过数据库,则系统重新启动后,恢复程序要强行撤消(UNDO)所有未完成事务,使这些事务象没有运行过一样。
2. 将缓冲区中已完成事务提交的结果写入数据库
如果DBMS无法确定哪些事务的提交结果尚未写入物理数据库,则系统重新启动后,恢复程序需要重做(REDO)所有已提交的事务。
系统故障通常在系统下次启动时自动恢复。
- 介质故障
定义:硬件故障使存储在外存中的数据部分丢失或全部丢失
介质故障比前两类故障的可能性小得多,但破坏性最大
常见原因:硬件故障;磁盘损坏;磁头碰撞;操作系统的某种潜在错误;
恢复:装入数据库发生介质故障前某个时刻的数据副本。重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库。
Wal日志协议
1)数据页的每个修改都应该生成日志记录,并且在数据页面刷到磁盘之前,其对应的日志记录必须先刷到持久化的日志设备上
2)数据库的日志记录必须顺序刷出到设备上
3)事务的提交是以该事务的日志记录刷到磁盘上来界定
模式和拷贝模式。也可以使用非排他模式,和拷贝模式。
系统故障的恢复步骤
1. 正向扫描日志文件(即从头扫描日志文件)
找出在故障发生前已经提交的事务,将事务标识记入重做队列
同时找出故障发生时尚未完成的事务,将事务标识记入撤消队列
2. 对撤消队列中的各个事务进行撤消(UNDO)处理
反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库
3. 对重做队列中的各个事务进行重做(REDO)处理
正向扫描日志文件,对每个REDO事务重新执行登记的操作。即将日志记录中“更新后的值”写入数据库。




