【数据库原理】(27)数据库恢复

在数据库系统中,恢复是指在发生某种故障导致数据库数据不再正确时,将数据库恢复到已知正确的某一状态的过程。数据库故障可能由多种原因引起,包括硬件故障、软件错误、操作员失误以及恶意破坏。为了确保数据库的安全性和完整性,数据库管理系统(DBMS)必须具有有效的恢复机制。

一.故障的种类

在数据库系统中,可能发生的故障主要包括事务故障、系统故障、介质故障和计算机病毒。每种故障类型都可能对数据库的正常运行产生影响,因此需要相应的恢复机制来应对这些故障。

1. 事务故障

事务故障指事务未达到预期终点,使得数据库可能处于不正确状态。这包括事务内部的非预期故障,如运算溢出、并发事务死锁等。恢复程序通过事务撤销,即回滚事务已做出的对数据库的修改,将事务恢复到未启动的状态,以保证数据一致性。

2. 系统故障

系统故障是指导致系统停止运转的各种事故,例如硬件错误、操作系统故障、DBMS代码错误、突然停电等。这类故障影响正在运行的所有事务,可能导致数据库非正常终止。在系统重新启动时,恢复子系统需要回滚未完成的事务,并重做已提交的事务,以将数据库恢复到一致状态。

3. 介质故障

介质故障,也称为硬故障,指外存故障,如磁盘损坏、磁头碰撞等。这类故障可能破坏整个数据库或部分数据库,影响存取这部分数据库的所有事务。在发生介质故障后,需要将后援副本装入数据库,并重新执行已成功完成的事务,将已提交的结果重新写入数据库。

4. 计算机病毒

计算机病毒是一种人为的故障或破坏,它可以繁殖和传播,对计算机系统,包括数据库,造成破坏。计算机病毒可能导致数据的损坏和系统的不稳定,需要采取相应的安全防护措施来避免病毒的侵害。

二.故障恢复

数据库系统的恢复机制涉及建立备份数据和如何利用备份数据来修复数据库。备份数据的建立通常采用数据转储和日志文件技术。

1. 数据转储

数据转储是将数据库定期复制到转储设备(如磁带或磁盘)的过程。转储设备中的备用数据库文件称为后备副本。静态转储和动态转储是两种常见的方式。

  • 静态转储和动态转储:

    • 静态转储: 在系统中无运行事务时进行的转储操作,转储时数据库处于一致性状态。静态转储简单但会降低数据库的可用性。
    • 动态转储: 允许在转储期间对数据库进行访问或修改,可以并发执行。需要记录转储期间各事务对数据库的修改活动,建立日志文件。动态转储克服了静态转储的缺点。
  • 海量转储和增量转储:

    • 海量转储: 每次转储全部数据库,便于恢复。
    • 增量转储: 每次只转储上一次转储后更新过的数据,适用于大型且频繁更新的数据库。
      在这里插入图片描述

2. 日志文件

日志文件用于记录每一次对数据库的更新活动,分为数据块为单位和记录为单位的两种格式。登记日志文件的目的是为了数据库的恢复,包括事务故障恢复、系统故障恢复和介质故障恢复。

  • 作用:
    • 用于事务故障和系统故障恢复,协助后备副本进行介质故障恢复。
    • 在动态转储方式中,必须与后备副本一起使用。
    • 在静态转储方式中,可用于重新装入后备副本和对已完成事务的重做处理。

3. 恢复事务

发生故障时,首先根据前次转储的后备副本恢复数据库,然后利用日志文件进行事务的恢复。

  • 恢复步骤:

    1. 从头扫描日志文件,找出已经结束和尚未结束的事务。
    2. 对尚未结束的事务进行撤销(UNDO)处理和已经结束的事务进行重做(REDO)处理。
  • 撤销和重做处理:

    • 撤销处理: 反向扫描日志文件,对每个事务的更新操作执行反操作,恢复修改过的数据。
    • 重做处理: 正向扫描日志文件,重新执行登记的事务的操作,确保数据库恢复到正确状态。

三.恢复策略

恢复策略针对事务故障、系统故障和介质故障分别制定,以确保数据库的一致性和可靠性。

1. 事务故障恢复

事务故障是指事务在运行至正常终止点前被终止,恢复子系统通过利用日志文件撤销已对数据库进行的修改来进行事务故障恢复。

  • 步骤:
    1. 反向扫描日志文件,查找该事务的更新操作。
    2. 对该事务的更新操作执行逆操作,包括插入、删除和修改。
    3. 继续反向扫描日志文件,直到读到该事务的开始标记。

事务故障的恢复由系统自动完成,对用户透明,无需用户干预。

2. 系统故障恢复

系统故障分为两种情况:未完成事务对数据库的更新可能已写入数据库,已提交事务对数据库的更新可能还留在缓冲区没有写入数据库。因此,系统故障的恢复操作包括撤销故障发生时未完成的事务和重做已完成的事务。

  • 步骤:
    1. 正向扫描日志文件,找出已提交和尚未完成的事务,将其分别记录在重做队列和撤销队列中。
    2. 对撤销队列中的事务进行撤销操作,即反向扫描日志文件执行逆操作。
    3. 对重做队列中的事务进行重做操作,即正向扫描日志文件重新执行事务的操作。

系统故障的恢复由系统自动完成,无需用户干预。

3. 介质故障恢复

介质故障包括磁盘上的物理数据和日志文件的破坏,恢复操作涉及重装数据库并重做已完成的事务。

  • 步骤:
    1. 装入最新的数据库副本,将数据恢复到最近一次转储时的一致性状态。
    2. 若为动态转储,同时装入转储开始时刻的日志文件副本,利用系统故障恢复方法(REDO+UNDO)将数据库恢复到一致性状态。
    3. 若为静态转储,数据库即处于一致性状态。
    4. 装入相应的日志文件副本,重做已完成的事务。

介质故障的恢复需要DBA介入,但只需重装最近转储的数据库副本和相关的日志文件副本,然后执行系统提供的恢复命令。

综合这些恢复策略,数据库系统能够有效地处理各类故障,确保数据的完整性和系统的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413999.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 android11 移植 v4l2loopback 虚拟摄像头

一,v4l2loopback 简介 v4l2loopback是一个Linux内核模块,它允许用户创建虚拟视频设备。这种虚拟视频设备可以用于各种用途,例如将实际摄像头的视频流复制到虚拟设备上,或者用于视频流的处理和分析等。v4l2loopback的主要作用是创…

python数字图像处理基础(十)——背景建模

目录 背景建模背景消除-帧差法混合高斯模型 背景建模 背景建模是计算机视觉和图像处理中的一项关键技术,用于提取视频中的前景对象。在视频监控、运动检测和行为分析等领域中,背景建模被广泛应用。其基本思想是通过对视频序列中的像素进行建模&#xff…

【RT-DETR有效改进】轻量化CNN网络MobileNetV2改进特征提取网络

前言 大家好,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持ResNet32、ResNet101和PP…

4. 示例:更改监听端口

默认Spring Boot启动是监听在8080上的。 如果8080被使用,就会报以下错误。 这个时候可以更换一个新的端口。 server: port: 8180 然后再启动,启动成功并且绑定到端口8180。

开源免费的可私有化部署的白板excalidraw 详细部署教程

简介 excalidraw 是一款开源免费的虚拟白板,提供一个在线的实时协作白板工具,使用户能够创建简单的图形和图示。 excalidraw 的设计目标是提供一个易于使用的绘图工具,支持团队协作,同时具有跨平台和实时协作的功能。 简单易用&…

第十五届蓝桥杯单片机组——定时器的基本原理与应用

文章目录 一、定时器介绍二、定时器的应用2.1 定时功能❗注意事项!❗什么是1T和12T 2.2 计数功能❗注意点 三、利用定时器计数功能实现555频率测量 一、定时器介绍 在没有钟表的时候,定时的方式通过有一注香的时间,或者一桶水的时间。前者烧香…

智慧灌区解决方案:针对典型灌区水利管理需求

​随着国家对农业水利的重视,各地积极推进智慧灌区建设,以实现对水资源的精准调度和科学化管理。下面我们针对典型灌区水利管理需求,推荐智慧灌区解决方案。 一、方案构成智慧水利解决方案- 智慧水利信息化系统-智慧水利平台-智慧水利公司 - 星创智慧水利 一、方案构成 (一)水…

WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案

什么是WAF WAF可以通过对Web应用程序的流量进行过滤和监控,识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击,例如SQL注入、跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)等,并采取相…

【迅搜19】扩展(二)TNTSearch和JiebaPHP方案

扩展(二)TNTSearch和JiebaPHP方案 搜索引擎系列的最后一篇了。既然是最后一篇,那么我们也轻松一点,直接来看一套非常有意思的纯 PHP 实现的搜索引擎及分词方案吧。这一套方案由两个组件组成,一个叫 TNTSearch &#xf…

基于springboot+vue的免税商品优选购物商城系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Ubuntu18.04在线镜像仓库配置

在线镜像仓库 1、查操作系统版本 rootubuntu:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic 2、原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 3、查…

浅析Redis①:命令处理核心源码分析(上)

写在前面 Redis作为我们日常工作中最常使用的缓存数据库,其重要性不言而喻,作为普调开发者,我们在日常开发中使用Redis,主要聚焦于Redis的基层数据结构的命令使用,很少会有人对Redis的内部实现机制进行了解&#xff0c…