数据库常见故障类型
数据库系统运行过程中可能发生的故障主要分为以下三类,其破坏性由小到大:
|
故障类型 |
别名 |
根本原因 |
影响范围 |
典型例子 |
|---|---|---|---|---|
|
1. 事务故障 |
逻辑故障 |
事务内部的程序逻辑错误或输入异常。 |
单个或少量事务。 |
- 输入数据不合法(如除零错误)。 |
|
2. 系统故障 |
软故障(Soft Crash) |
硬件(如突然断电)、操作系统或DBMS软件错误,导致系统停止运行。 |
所有正在运行的事务,内存数据丢失,但磁盘数据完好。 |
- 操作系统崩溃。 |
|
3. 介质故障 |
硬故障(Hard Crash) |
存储数据库的物理设备发生损坏。 |
破坏磁盘上的数据,影响范围最大。 |
- 磁盘控制器(Disk Controller)故障。 |
各类故障的恢复策略
各类故障的恢复策略
针对不同的故障类型,数据库系统采用了相应的恢复机制:
1. 事务故障的恢复
-
恢复方式: 撤销(UNDO)
-
实现机制: 系统反向扫描日志文件,找到该事务的所有更新操作,并对这些操作执行逆操作,将数据库恢复到该事务执行之前的状态,就像这个事务从未发生过一样。
-
目标: 消除失败事务对数据库的所有影响。
2. 系统故障的恢复
系统重启后,恢复子系统需要处理两种不确定状态的事务:
-
未完成的事务: 事务未提交,但其部分修改可能已写入磁盘。
-
已提交但未落盘的事务: 事务已提交,但其数据修改可能还在内存缓冲区,未来得及写入磁盘。
-
恢复方式: 撤销(UNDO) + 重做(REDO)
-
实现机制:
- 1.
撤销(UNDO): 撤销所有未完成事务的操作,确保原子性。
- 2.
重做(REDO): 重做所有已提交但未落盘事务的操作,确保持久性。
- 1.
-
关键技术: 通过检查点(Checkpoint) 技术来确定哪些事务需要UNDO,哪些需要REDO,这正是我们上一个对话讨论的核心内容。
3. 介质故障的恢复
-
恢复方式: 重装备份 + 重做日志
-
实现机制:
- 1.
装入最新的数据库备份(冷备或热备),将数据库恢复到备份时的状态。
- 2.
装入备份点之后的所有日志文件副本。
- 3.
重做(REDO)备份之后所有已提交事务的操作,将数据库恢复到故障发生前的状态。
- 1.
-
特点: 恢复速度最慢,对可用性影响最大。因此,制定定期备份策略和日志归档策略至关重要。
总结:
事务故障:程序错误导致故障异常终止
系统故障:硬件/软件故障导致内存信息丢失
介质故障:外存设备故障导致数据损坏
日志中如果出现CRASH 则属于介质故障,CRASH 标记表示磁盘出错

被折叠的 条评论
为什么被折叠?



