数据库故障、恢复、备份和转储

一、数据库故障

1、故障分类
1)介质故障(硬故障):由于物理设备的损坏导致数据库无法运行。
2)系统故障:造成系统停止运转的任何事件,使得系统要重新启动。
3)事务故障:分为预期故障和非预期故障。
① 非预期事务故障:不可预期、不能由应用程序处理的,包括运算溢出、并发事务发生死锁而撤销该事务、违反某些完整性限制等。
2、造成数据库不一致
1)未完成的事务对数据库的更新可能已经写入数据库。
2)已经提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。

二、数据库恢复

1、针对造成数据库不一致
1)未完成:只有BEGIN TRANSACTION ,没有COMMIT 或ROLLBACK,此时做UNDO操作.
2)已提交:既有BEGIN TRANSACTION,又有COMMIT,此时做REDO操作。
2、恢复顺序
在进行数据恢复时,首先恢复完全备份,其次恢复差异备份,最后恢复日志备份。
日志文件
1)日志文件对实现数据库系统故障的恢复具有非常重要的作用,系统故障恢复必须使用日志文件以保证数据库系统重启能正常;事务恢复时同样也需要日志,如REDO和UNDO操作。
2)日志写入顺序必须与并行事务执行的事件次序一致,因为这样才能在数据库恢复时进行REDO和UNDO操作,从而保证数据的一致性而不会产生脏数据
3)必须先写日志再写数据库,这样当数据库发生故障时可以根据日志完全恢复,否则如果先写数据,当数据写完时,数据库故障而没来得及写日志,导致数据恢复发生错误。
4)系统故障恢复必须使用日志文件以保证数据库系统重启能正常;事务恢复时同样也需要日志,如REDO和UNDO操作。
5)日志是快速增长的。

三、数据库备份类型

1、完全数据库备份
2、差异备份(增量备份)
1)备份自上一次完全备份之后有变化的数据。
3、数据库文件和文件组备份
1)主要是对数据库中数据文件的备份,不对日志文件备份,因此在备份完成之后必须对日志进行备份。
4、事务日志备份
1)备份日志时使用Norecovery用来备份尾日志,这样备份日志的时候数据库处于恢复状态,别的进程就不能再访问数据库,日志就不再增加,因此再还原的时候就可以正常恢复。
2)还原备份的时候如果想同时还原之后的日志,必须加上Norecovery才可以还原。
3)如果多个日志备份,除了最后一个日志备份外,还原其他日志也必须加上Norecovery。

四、数据库转储

1、转储:DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程,是数据库恢复中采用的基本技术。
2、动态转储:在转储过程期间允许对数据库进行存取或修改,即转储和用户事务可并发执行。
1)在转储数据后,副本上的数据并不能保证正确有效,为此必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件
3、转储机制
1)完全转储:对整个数据库中的数据全部重新备份,效率低,时间长。
2)差量转储:基于上次完全转储之后变化转储,是对上次转储之后对所有文件中修改或删除的记录的转储,保证数据的完整性,效率高,时间短。
3)增量转储:对数据库中凡是有记录变化的文件的整个文件进行复制,效率介于前两种转出方式之间。

发布了25 篇原创文章 · 获赞 0 · 访问量 344

猜你喜欢

转载自blog.csdn.net/weixin_42959073/article/details/104711018