首页 > 代码库 > 数据库原理-数据恢复
数据库原理-数据恢复
1.如何建立冗余数据
- 数据转储(backup)
- 登录日志文件(logging)
1.数据转储
特点:
- 数据库遭到破坏后可以将后备副本重新装入
- 重装后备副本只能将数据库恢复到转储时的状态
方法:
- 静态转储与动态转储
- 海量转储与增量转储
静态转储
转储期间不允许对数据库的任何存取、修改活动
优点:
实现简单
缺点:
- 降低了数据库的可用性
- 转储必须等待正运行的用户事务结束
- 新的事务必须等转储结束
动态转储
- 转储操作与用户事务并发进行
- 转储期间允许对数据库进行存取或修改
优点:
- 不用等待正在运行的用户事务结束
- 不会影响新事务的运行
缺点:
不能保证副本中的数据正确有效
[例]在转储期间的某个时刻Tc,系统把数据A=100转储到磁带上,而在下一时刻Td,某一事务将A改为200。转储结束后,后备副本上的A已是过时的数据了
恢复方法:
利用动态转储得到的副本进行故障恢复,需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件,后备副本加上日志文件才能把数据库恢复到某一时 刻的正确状态。
海量转储: 每次转储全部数据库
增量转储: 只转储上次转储后更新过的数据
2.登记日志文件
以记录为单位的日志文件内容
- 各个事务的开始标记(BEGIN TRANSACTION)
- 各个事务的结束标记(COMMIT或ROLLBACK)
- 各个事务的所有更新操作
以记录为单位的日志文件,每条日志记录的内容
- 事务标识(标明是哪个事务)
- 操作类型(插入、删除或修改)
- 操作对象(记录内部标识)
- 更新前数据的旧值(对插入操作而言,此项为空值)
- 更新后数据的新值(对删除操作而言, 此项为空值)
以数据块为单位的日志文件,每条日志记录的内容
- 事务标识(标明是那个事务)
- 被更新的数据块
登记的次序严格按并行事务执行的时间次序,必须先写日志文件,后写数据库
2. 如何利用这些冗余数据实施数据库恢复
事务故障恢复
由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改
事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预
系统故障恢复
Undo 故障发生时未完成的事务
Redo 已完成的事务
系统故障的恢复由系统在重新启动时自动完成,不需要用户干预
介质故障
重装数据库
重做已完成的事务
数据库原理-数据恢复
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。