数据库常见故障类型

数据库常见故障类型

数据库系统运行过程中可能发生的故障主要分为以下三类,其破坏性由小到大:

故障类型

别名

根本原因

影响范围

典型例子

1. 事务故障

逻辑故障

事务内部的程序逻辑错误或输入异常。

单个或少量事务

- 输入数据不合法(如除零错误)。
- 应用程序错误(如转账时余额为负)。
- 死锁(被系统强制终止)。

2. 系统故障

软故障(Soft Crash)

硬件(如突然断电)、操作系统或DBMS软件错误,导致系统停止运行

所有正在运行的事务,​内存数据丢失,但磁盘数据完好

- 操作系统崩溃。
- 数据库服务器进程意外被杀。
- 突然断电(需有备用电源支持内存写入磁盘的时间)。

3. 介质故障

硬故障(Hard Crash)

存储数据库的物理设备发生损坏。

破坏磁盘上的数据,影响范围最大。

- 磁盘控制器(Disk Controller)故障。
- 磁头损坏(Head Crash)。
- 磁盘块因老化而永久性损坏。


各类故障的恢复策略

各类故障的恢复策略

针对不同的故障类型,数据库系统采用了相应的恢复机制:

1. 事务故障的恢复
  •  

    恢复方式​: ​撤销(UNDO)​

  •  

    实现机制​: 系统反向扫描日志文件,找到该事务的所有更新操作,并对这些操作执行逆操作,将数据库恢复到该事务执行之前的状态,就像这个事务从未发生过一样。

  •  

    目标​: 消除失败事务对数据库的所有影响。

2. 系统故障的恢复

系统重启后,恢复子系统需要处理两种不确定状态的事务:

  •  

    未完成的事务​: 事务未提交,但其部分修改可能已写入磁盘。

  •  

    已提交但未落盘的事务​: 事务已提交,但其数据修改可能还在内存缓冲区,未来得及写入磁盘。

  •  

    恢复方式​: ​撤销(UNDO) + 重做(REDO)​

  •  

    实现机制​:

    1. 1.

      撤销(UNDO)​​: 撤销所有未完成事务的操作,确保原子性。

    2. 2.

      重做(REDO)​​: 重做所有已提交但未落盘事务的操作,确保持久性。

  •  

    关键技术​: 通过检查点(Checkpoint)​​ 技术来确定哪些事务需要UNDO,哪些需要REDO,这正是我们上一个对话讨论的核心内容。

3. 介质故障的恢复
  •  

    恢复方式​: ​重装备份 + 重做日志

  •  

    实现机制​:

    1. 1.

      装入最新的数据库备份​(冷备或热备),将数据库恢复到备份时的状态。

    2. 2.

      装入备份点之后的所有日志文件副本

    3. 3.

      重做(REDO)备份之后所有已提交事务的操作,将数据库恢复到故障发生前的状态。

  •  

    特点​: 恢复速度最慢,对可用性影响最大。因此,​制定定期备份策略和日志归档策略至关重要。

总结:

事务故障:程序错误导致故障异常终止
系统故障:硬件/软件故障导致内存信息丢失
介质故障:外存设备故障导致数据损坏
日志中如果出现CRASH 则属于介质故障,CRASH 标记表示磁盘出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值