数据库备份与恢复
⭐ 五星考点
数据库系统故障种类
- 事务故障:由于程序执行错误引起事务非预期的、异常终止的故障,通常来源主要有逻辑错误(非法输入、找不到数据、溢出、超出资源限制等)和系统错误(比如死锁),事务故障由DBMS系统来实现故障恢复,通过撤销事务(UNDO)来强行回滚该事务操作。
- 系统故障:是指硬件故障、软件(如DBMS、OS或者应用程序)漏洞的影响下,导致丢失了内存中的信息,影响正在执行的事务,单位破坏存储在外存储上的信息。
- 介质故障:是指数据库的存储介质发生故障,如磁盘损坏、瞬间强磁场干扰等,这种故障破坏了数据库,会影响到所有正在读取这部分数据的事务。
数据库备份
数据转出是将数据库自制到另一个磁盘或磁带上保存起来,也就是数据备份。
- 静态转储和动态转储:静态转储是指转出期间不允许对数据库进行任何存取修改操作;动态转储是在转出期间允许对数据库进行存取、修改操作,因此转出和用户事务可以并发执行。
- 海量转储和增量转储:海量转储就是全量备份,增量转储就是每次只转储自上次转储后更新过的数据。
- 日志文件:在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的增删改的每一次操作写入日志文件。DBMS可以利用日志文件进行事务故障和系统故障的恢复,并可与备份文件实现介质故障恢复。
- 数据库镜像:也就是数据库复制。
数据库恢复
数据库恢复主要通过冗余数据(数据库备份文件和日志文件)来实现。
- 故障恢复操作
故障恢复的两个操作:UNDO和REDO。
(1) UNDO(撤销事务):将数据库恢复到事务执行前的正确状态(反向扫描日志文件直至对应事务开始的标识)。
(2) REDO(重做事务):将已提交的事务重新执行(正向扫描日志文件直至对应事务结束的标识)。
- 故障恢复策略(很重要)
(1) 事务故障恢复:由系统自动完成,对用户是透明的,通过UNDO操作使数据库恢复到该事务执行前的正确状态。
(2) 系统故障恢复:在系统重启之后自动执行,对未完成的事务执行UNDO操作,对已提交未写入数据库的事务执行REDO操作。
(3) 介质故障恢复:数据库需要重装,通过故障前最后一次的备份和日志文件,按照系统故障的恢复过程执行UNDO和REDO操作来实现恢复。
⚡ 相关真题
2014年30/31题
为了保证数据库中数据的安全可靠和正确有效,系统在进行事务处理时,对数据的插入、删除或修改的全部有关内容先写入(30);
A.索引文件 B.数据文件 C.日志文件 D.数据字典
当系统正常运行时,按一定的时间间隔,把数据库缓冲区内容写入(31):当发生故障时,根据现场数据内容及相关文件来恢复系统的状态。 A.索引文件 B.数据文件 C.日志文件 D.数据字典
【答案】C B
为了保证数据库中数据的安全可靠和正确有效,数据库管理系统(DBMS)提供数据库恢复、并发控制、数据完整性保护与数据安全性保护等功能。
数据库在运行过程中由于软硬件故障可能造成数据被破坏,数据库恢复就是在尽可能短的时间内,把数据库恢复到故障发生前的状态。
数据恢复具体的实现方法有多种,
- 定期将数据库作备份;
- 在进行事务处理时,对数据更新(插入、删除、修改)的全部有关内容写入日志文件;
- 当系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;
- 当发生故障时,根据现场数据内容(数据文件)、日志文件的故障前映像和检查点文件来恢复系统的状态。
2014年32题
假设系统中有运行的事务,若要转储全部数据库应采用(32)方式。
(32)A.静态全局转储 B.静态增量转储 C.动态全局转储 D.动态增量转储
【答案】C
数据的转储分为静态转储和动态转储、海量转储和增量转储。
- 静态转储:是指在转储期间不允许对数据库进行任何存取、修改操作;
- 动态转储:是在转储期间允许对数据库进行存取、修改操作,故转储和用户事务可并发执行。
- 海量转储(全局转储):是指每次转储全部数据;
- 增量转储:是指每次只转储上次转储后更新过的数据。