数据库恢复概述

数据库恢复概述

故障是不可避免的,故障主要包括:硬件故障,软件故障,程序员操作失误,恶意破坏等

故障对数据库主要表现为:运行事务非正常中断,影响数据库中数据的正确性,数据库全部或部分数据丢失。

数据库恢复作用:将数据库从错误状态回复到之前一个已知的之前状态

数据库恢复子系统是数据库管理系统一个相当庞大的部分,约占总代码数的10%。恢复系统是衡量一个系统优劣的重要指标,对系统的可靠性有决定性作用。

故障的种类

故障的种类有四种 事务内部故障,系统故障,介质故障,计算机病毒。

  1. 事务内部故障
    事务内部故障是可以通过事务程序本身发现的。有的是非预期的,不能通过事务程序发现。
    例:银行转账事务
BEGIN TRANSACTION
read(BALANCE1);#读取甲存款
BALANCE1 := BALANCE1 - AMOUNT;
IF (BALANCE1 < 0) THEN
打印{余额不足,无法转账};
ROLLBACK
ELSE
read(BALANCE2);#读取乙存款
BALANCE2 := BALANCE2 + AMOUNT;
write(BALANCE2);#写回乙存款
COMMIT;

说明:
(1)例子中的两个更新要么全做,要么全不做
(2)当发现甲余额不足,应用程序可以发现故障,事务回滚,让数据库回到正确状态,避免事务内部故障。
(3)事务内部故障更多是非预期的,是不能由程序发现解决的,如死锁,运算溢出等。我们之后提到事务内部故障,默认指非预期。
(4)事务内部故障指程序没有到达既定的终点,数据库可能处于一种不正确状态。撤销该事务对数据库的修改,使得该事务好像根本没有启动过一样,这类恢复操作叫事务撤销(UNDO)

  1. 系统故障
    系统故障又称软故障,是指造成系统中止的任何事件,使系统要重新启动。
    故障表现:整个系统的正常运行突然中止,内存数据库缓冲区的数据全都丢失所有正在运行的事务都非正常中止,不破坏数据库。
    常见原因:硬件故障,操作系统故障,数据库管理系统代码错误,系统断电等。

系统故障的恢复
表现一:发生系统故障时,一部分未完成事务对数据的修改可能已经写入物理数据库,此时数据库处于一种不正确的状态
解决办法:系统重新启动时,恢复程序将所有非正常中止事务回滚,将所有未完成事务撤销(UNDO)
表现二:发生系统故障时,有些已完成事务部分甚至全部留在缓冲区中,未写入物理数据库,系统重启使得这些事务对数据库的修改全部或部分丢失
解决办法:系统重新启动,需要重做(REDO)这些已提交事务

  1. 介质故障
    又称硬故障,指外存故障,如磁盘损坏,磁头碰撞,强磁场干扰等
    故障表现:破坏部分或全部数据库影响正在存取这部分数据的所有事务。介质故障比两种故障可能性小,但是破坏性大。

  2. 计算机病毒
    计算机病毒是一种可传播,繁殖对计算机造成破坏的计算机程序。
    计算机病毒特点:隐蔽性,潜伏性,传染性,破坏性,寄生性。
    数据库一旦被计算机病毒破坏仍要用恢复技术进行恢复

总结:
各类故障对数据库的影响主要有数据库本身被破坏和数据库没有破坏,但数据不正确。
恢复技术的基本原理是冗余,恢复技术的实现很复杂,一个大型数据库产品中,恢复子系统代码量占10%以上。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红豆怪怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值