1、数据转储
数据转储是数据库恢复中常用的基本技术。数据转储就是数据库管理员定期将整个数据库复制存储介质上保存起来的过程。这些备用数据称为后备副本或后援副本。
当数据库遭到破坏后可以将后备副本重新装入,但重装后备副本只能将数据恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。
备注:转储十分耗费时间和资源,不能频繁进行。转储可分为静态转储和动态转储。
1、静态转储:在系统中无进行事务时进行的转储操作。即转储操作开始的时刻数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。它必须等待正在进行的用户事务结束才能进行。同样新的事务必须等待转储结束才能进行。显然会降低数据库的可用性。
2、动态转储:转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。它可以克服静态转储的缺点,不用等到正在运行的用户事务结束,也不会影响新事务的运行,但是转储结束时后援副本上的数据并不能保证正确有效。
转储还可以分为海量转储和增量转储。
1、海量转储:每次转储全部数据库。
2、增量转储:每次只转储上一次转储后更新过的数据。
从恢复的角度看,使用海量转储得到的后备副本进行恢复一般说来会更方便,但如果数据库很大,事务处理又十分频繁,则使用增量转储更实用有效。
2、登记日志文件
为了克服动态转储的缺点,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件。这样后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。
日志文件是用来记录事务对数据库的更新操作的文件。它分为以记录为单位和以数据库为单位的日志文件。
1、以记录为单位的日志文件需要登记:
1. 各个事务的开始(BEGIN TRANSACTION)标记。
2. 各个事务的结束(COMMIT或ROLLBACK)标记。
3. 各个事务的所有更新操作。
以上均作为日志文件中的一个日志记录。每个日志记录的内容主要包括:
1)事务标识(标明是哪个事务)
2)操作的类型(增删改)
3)操作对象(记录内部标识)
4)更新前数据的旧值(对插入操作而言,此项为空值)
5)更新后数据的新值(度删除操作而言,此项为空值)
2、以数据库块为单位的日志文件,日志记录的内容包括事务标识和被更新的数据块。由于将更新前的整个块和更新后的整个块都放入日志文件中,操作类型和操作对象等信息就不必放入日志记录中了。
3、日志文件的作用
日志文件可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。
1)事务故障恢复和系统故障恢复必须用日志文件。
2)在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。
3) 在静态转储方式中也可以建立日志文件,当数据库毁坏后可重新装入后援副本把数据库恢复到转储和结束时刻的正确状态,然后利用日志文件把已完成的事务重做处理,对故障发生时尚未完成的事务进行撤销处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。
由于数据库镜像是通过复制数据实现的,频繁地复制数据自然会降低运行效率,因此实际应用中用户往往只选择对关键数据和日志文件进行镜像,而不是对整个数据库进行镜像。