【数据库原理 • 六】数据库备份与恢复

news2024/10/5 21:14:02

前言

数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。

当前互联网+与大数据,一切都建立在数据库之上,以数据说话,首先需要聚集数据、分析数据和管理数据,数据库技术已成为各种计算机系统的核心技术。数据库相关知识也已成为每个人必须掌握的知识。

在这里插入图片描述

数据库备份与恢复

  • 一、事务
    • 1.1 什么是事务?
    • 1.2 事务的特性(ACID)
      • 1.2.1 原子性
      • 1.2.2 一致性
      • 1.2.3 隔离性
      • 1.2.4 持续性
    • 1.3 事务控制语句
  • 二、 数据库的恢复技术
    • 2.1 故障的种类
    • 2.2 数据转储与恢复
      • 2.2.1 数据转储
      • 2.2.2 转储方法
      • 2.2.3 静态及动态转储
      • 2.2.4 日志文件

一、事务

事务在数据库管理系统对的运行管理功能中发挥着巨大的作用,是并发控制和故障恢复的重要基础理论。

1.1 什么是事务?

事务是指用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。在关系数据库系统中,一个事务可以是一条SQL语句,也可以是一组SQL语句。

我们要知道事务是恢复和并发控制中功能语句的基本单位

1.2 事务的特性(ACID)

事务具有四个特性:

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持续性(Durability)

这四个特性也简称为ACID特性

1.2.1 原子性

事务是数据库的逻辑工作单位,事务中包括的各操作要么都做,要么都不做

1.2.2 一致性

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
因此当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已完成的操作全部撤消,回退到事务开始时的一致状态。

一致性与原子性实例:

银行转帐:从帐号A中取出一万元,存入帐号B。

定义一个事务,该事务包括两个操作

AB
A=A-1
B=B+1

以上这两个操作要么全做,要么全不做

全做或者全不做,数据库都处于一致性状态
如果只做一个操作,数据库就处于不一致性状态

1.2.3 隔离性

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

AB
1R(A)=16
2R(A)=16
3W(A)=A-1,A=15
4W(A)=A-2,A=14

1.2.4 持续性

持续性指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

1.3 事务控制语句

根据事务的ACID特定,如Oracle提供了如下一组语句对事务进行控制

(1)SET TRANSACTION

设置事务的属性。

(2)SET CONSTRAINS

在当前事务中设置约束模式。约束模式是指在事务中修改数据时,数据库中的约束是立即应用于数据,还是将约束推迟到当前事务结束后应用。

(3)SAVEPOINT

在事务中建立一个存储点。当事务处理发生异常而回滚事务时,可指定事务回滚到某存储点,然后从该存储点重新执行。

(4)RELEASE SAVEPOINT

删除一个存储点。

(5)ROLLBACK

回滚事务,即取消对数据库所做的任何修改。

(6)COMMIT

提交事务,即把事务中对数据库的修改进行永久保存。

二、 数据库的恢复技术

2.1 故障的种类

数据库系统中可能发生各种各样的故障,破坏事务原子性和引起数据库错误的原因很多,大致可以分为以下4类。

  • 事务内部的故障

它是指由于事务没有达到预期的终点,导致数据库可能处于一种不正确的状态。

  • 系统故障

系统故障(通常称为软故障,Soft Crash)是指在造成系统停止运转的任何事件(如硬件故障、操作系统错误、DBMS代码错误、突然停电等)的影响下,使正在运行的事务都以非正常的方式终止,从而引起的内存信息丢失,但未破坏外存中的数据,致使系统需要重新启动。

  • 介质故障

系统故障常称为软故障(Soft Crash),介质故障称为硬故障(Hard Crash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。
这类故障的恢复需要装入数据库发生介质故障前某个时刻的数据副本,重做自此时开始的所有成功事务,将这些事务已提交的结果重新记入数据库中

  • 计算机病毒

计算机病毒是一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。这种程序与其他程序不同,它像微生物学所称的病毒一样可以繁殖和传播,并造成对计算机系统包括数据库的危害。数据库一旦被破坏,仍要求用恢复技术对数据库加以恢复。

总结各类故障,对数据库的影响有两种可能性。一是数据库本身被破坏。二是数据库没有破坏,但数据可能不正确,这是因为事务的运行被非正常终止造成的。

2.2 数据转储与恢复

数据库若要成功地进行恢复,备份的过程中必须涉及的一个关键问题即如何建立冗余数据。建立冗余数据最常用的技术是数据转储和日志文件。通常在一个数据库系统中,这两种方法是一起使用的。

2.2.1 数据转储

所谓转储即DBA(数据库管理员)定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。

2.2.2 转储方法

  • 静态转储与动态转储

  • 海量转储与增量转储

在这里插入图片描述

2.2.3 静态及动态转储

什么是静态转储?

在系统中无运行事务时进行转储,转储开始时数据库处于一致性状态,转储期间不允许对数据库的任何存取、修改活动。

优点: 实现简单。

缺点: 转储必须等用户事务结束;新的事务必须等转储结束;降低了数据库的可用性。

利用静态转储副本进行恢复:

在这里插入图片描述

什么是动态转储?

转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。

优点: 不用等待正在运行的用户事务结束;不会影响新事务的运行。

缺点: 不能保证副本中的数据正确有效。

2.2.4 日志文件

日志文件是用来记录事务对数据库的更新操作的文件。不同数据库系统采用的日志文件格式并不完全一样,但是日志的功能是相同的。日志文件在数据库恢复中都起着非常重要的作用。可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。
当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤消处理。这样不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Baumer工业相机堡盟工业相机中预处理相机的特性优势以及行业应用

Baumer工业相机堡盟工业相机如何通过BGAPISDK里显示彩色相机和黑白相机的图像(C#)Baumer工业相机Baumer工业相机的预处理相机的技术背景Baumer工业相机中预处理相机的特性Baumer工业相机中图像压缩相机的特性Baumer工业相机中3D激光相机的特性Baumer工业…

ESP32设备驱动-MAX30102脉搏血氧饱和度和心率监测传感器驱动

MAX30102脉搏血氧饱和度和心率监测传感器驱动 文章目录 MAX30102脉搏血氧饱和度和心率监测传感器驱动1、MAX30102介绍2、硬件准备3、软件准备4、驱动实现1、MAX30102介绍 MAX30102是一款集成脉搏血氧饱和度和心率监测生物传感器模块。 它包括内部 LED、光电探测器、光学元件和…

网页滚动体验,IScroll滚动插件,你安装了类似的滚动页面插件吗

IScroll是一款基于JavaScript的插件,用于在网页中实现平滑滚动效果。 这个插件可以帮助用户创建回到页面顶部和底部的按钮、生成页面导航快照,以及设置滚动时间等功能,从而提升网页的用户体验。 IScroll的特点在于,它能够平滑地…

【15】数据操作reshape、张量的运算

1. N维数组 ① 机器学习用的最多的是N维数组,N维数组是机器学习和神经网络的主要数据结构。 2. 创建数组 ① 创建数组需要:形状、数据类型、元素值。 3. 访问元素 ① 可以根据切片,或者间隔步长访问元素。 ② [::3,::2]是每隔3行、2列访问…

考研数据结构--线性表

线性表 文章目录线性表概述线性表的特点线性表的基本操作线性表的顺序表示概述优缺点操作顺序表的定义顺序表的初始化顺序表的插入顺序表的删除顺序表的查找顺序表的输出顺序表的判空顺序表的销毁main方法测试线性表的链式表示概述优缺点单链表操作单链表的定义单链表的初始化单…

自动化面试题3

1、PLC输入输出如何接线,源性漏型如何看? 所谓“源型输入”,是指电流从模块的公共端流入,从模块的输入通道流出的接线方式。源型输入的公共端作为电源正极(共阳极)。源型输入可以等效为在输入模块外部连接…

C# | 上位机开发新手指南(九)加密算法——RSA

上位机开发新手指南(九)加密算法——RSA 文章目录上位机开发新手指南(九)加密算法——RSA前言RSA的特性非对称性安全性可逆性签名速度较慢密钥管理RSA算法的参数公钥公钥指数e模数n私钥私钥指数d模数n质数p和qdp和dqqInv质数填充方…

性能测试,python 内存分析工具 -memray

Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。 Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配&#xf…

yolov5-v7.0实例分割快速体验

简介 🚀yolov5-v7.0版本正式发布,本次更新的v7.0则是全面的大版本升级,最主要的功能就是全面集成支持了实例分割,yolov5已经集成检测、分类、分割任务。 前面几篇文章已经介绍过关于Yolov5的一些方面 yolov5目标检测:https://bl…

[计算机图形学]几何:曲线和曲面(前瞻预习/复习回顾)

一、曲线 1.Bzier Curves—贝塞尔曲线 贝塞尔曲线也是一种显式的几何表示方法。贝塞尔曲线定义了一系列的控制点,致使确定满足这些控制点关系的唯一一条曲线:如上图定义的贝塞尔曲线满足 起始点为p0,结束点为p3,起始点的切线方向…

ABB机械臂和RobotStudio编程简介

ABB机械臂和RobotStudio编程简介机械臂ABB机械臂ABB示教器RobotStudio与编程简介RobotStudio简介与安装RobotStudio使用RAPID程序指令机械臂 一种能够进行编程并在自动控制下执行某些操作和 移动作业任务的机械装置。 —— 美国国家标准局(NSB) 一种用于移动各种材料、零部件、…

基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

家政服务小程序实战开发教程017-我的页面未注册功能开发

顾客在家政服务小程序可以在线提交预约信息,预约成功后可以查看订单的进度。我们本篇就来实现一下我的页面的功能。 1 新建页面 进入编辑器,在组件页面区域点击号,创建我的页面 2 未登录页面开发 我的页面的逻辑是如果用户未注册&#…

【MyBatisPlus】一文带你快速上手MyBatisPlus

文章目录MyBatisPlus学习笔记前言1、MyBatisPlus概述2、快速体验3、CRUD接口3.1 Mapper层CRUD接口3.1.1 Insert3.1.2 Delete3.1.3 Update3.1.4 Select3.2 Service层CRUD接口3.2.1 Save3.2.2 Remove3.2.3 Update3.2.4 Get3.3 自定义SQL接口4、常用注解和配置4.1 TableId4.2 Tabl…

【C++】模板进阶(非类型模板参数、类模板的特化和模板的分离编译)

之前我们讲解过模板初阶,没有阅读过的童鞋可以先去阅读之前的博文----->模板初阶 本章我们将针对模板进行进一步的讲解。 目录 (一)非类型模板参数 (二)模板的特化 (1)概念 &#xff0…

我的面试八股(Java集合篇)

Java集合 两个抽象接口派生:一个是Collection接口,存放单一元素;一个是Map接口存放键值对。 Vector为什么是线程安全 简单,因为官方在可能涉及到线程不安全的操作都进行了synchronized操作,就自身源码就给你加了把锁。 Vector…

Stacking:解决机器学习进行多模型组合的实用工具

文章目录1 Stacking原理第一步:生成预测结果第二步:整合预测结果2 使用Python实现Stacking第一步:生成预测结果第二步:整合预测结果借助sklearn实现stacking3 各领域内的一些实际应用在机器学习领域,算法的选择和参数的…

前端--文件上传--文件切片--利用FileReader()中的readAsDataURL()做缩略图--多文件上传--formData--切片上传实现

一、文件上传 <template><div><input type"file" name"file" change"fileChange" /><button click"submit">提交</button></div> </template><script setup>function fileChange(e)…

ROS开发之如何制作launch启动文件?

文章目录0、引言1、Launch文件语法2、Launch示例0、引言 笔者因研究课题涉及ROS开发&#xff0c;学习了古月居出品的ROS入门21讲&#xff0c;为巩固launch的知识&#xff0c;本文将ROS的launch启动文件制作一讲内容进行总结。launch文件通过XML文件实现多节点的配置和启动&…

Compose (11/N) - 手势

一、点击 1.1 可点击 Modifier.clickable( ) 允许应用检测对该元素的点击。 Composable fun ClickableSample() {val count remember { mutableStateOf(0) }Text(text count.value.toString(),modifier Modifier.clickable { count.value 1 }) } 1.2 手势检测 Modifier.p…