数据库原理-数据恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理-数据恢复相关的知识,希望对你有一定的参考价值。

1.如何建立冗余数据

  1. 数据转储(backup)
  2. 登录日志文件(logging)

1.数据转储

特点:

    1. 数据库遭到破坏后可以将后备副本重新装入
    2. 重装后备副本只能将数据库恢复到转储时的状态

方法:

    1. 静态转储与动态转储
    2. 海量转储与增量转储

  静态转储

转储期间不允许对数据库的任何存取、修改活动
优点:
实现简单
缺点:
    • 降低了数据库的可用性
    • 转储必须等待正运行的用户事务结束
    • 新的事务必须等转储结束

  动态转储

    • 转储操作与用户事务并发进行
    • 转储期间允许对数据库进行存取或修改
优点:
    • 不用等待正在运行的用户事务结束
    • 不会影响新事务的运行
缺点:

不能保证副本中的数据正确有效

[]

在转储期间的某个时刻Tc,系统把数据A=100转储到磁带上,而在下一时刻Td,某一事务将A改为200。转储结束后,后备副本上的A已是过时的数据了

    恢复方法:

      利用动态转储得到的副本进行故障恢复,需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件,后备副本加上日志文件才能把数据库恢复到某一时    刻的正确状态。

  海量转储: 每次转储全部数据库
  增量转储: 只转储上次转储后更新过的数据

2.登记日志文件     

以记录为单位的日志文件内容

    1. 各个事务的开始标记(BEGIN TRANSACTION)
    2. 各个事务的结束标记(COMMIT或ROLLBACK)
    3. 各个事务的所有更新操作

以记录为单位的日志文件,每条日志记录的内容

    1. 事务标识(标明是哪个事务)
    2. 操作类型(插入、删除或修改)
    3. 操作对象(记录内部标识)
    4. 更新前数据的旧值(对插入操作而言,此项为空值)
    5. 更新后数据的新值(对删除操作而言, 此项为空值)

    以数据块为单位的日志文件,每条日志记录的内容

    1. 事务标识(标明是那个事务)
    2. 被更新的数据块

    登记的次序严格按并行事务执行的时间次序,必须先写日志文件,后写数据库

 

 

2. 如何利用这些冗余数据实施数据库恢复

事务故障恢复

由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改
事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预

系统故障恢复

Undo 故障发生时未完成的事务
Redo 已完成的事务
系统故障的恢复由系统在重新启动时自动完成,不需要用户干预
介质故障

重装数据库

重做已完成的事务

 

 
 

以上是关于数据库原理-数据恢复的主要内容,如果未能解决你的问题,请参考以下文章

HashMap原理:哈希函数的设计

通过片段之间的导航传递数据android studio

Android主流视频播放及缓存实现原理调研

20179209《Linux内核原理与分析》第十二周作

python 用于数据探索的Python代码片段(例如,在数据科学项目中)

超级有用的9个PHP代码片段