当前位置: 首页 > news >正文

恢复的实现技术-日志和数据转储

一、引言

在系统正常运行的情况下,事务处理的恢复机制采取某些技术措施为恢复做好相应的准备,保证在系统发生故障后,能将数据库从一个不一致的错误状态恢复到一个一致性状态

恢复技术主要包括

  • 生成一个数据库日志,来记录系统中事务的运行情况及事务对数据库的更新
  • 还有就是对磁盘上的数据进行转储 

二、日志

1、DBMS为系统创建的每一个数据库维护着一个日志,来记录事务对数据库的所有更新操作,可反映每一个时刻数据库的状态变化

2、日志数据库上所有运行事务按时间顺序产生的日志记录序列,日志内容不能由用户进行修改和删除

3、不同DBMS采用的日志记录格式并不完全一样,基本包含如下几种类型的日志记录

日志记录内容

  • 【start_transactionn,T】:事务T开始执行
  • 【commit,T】:事务T成功完成
  • 【abort,T】:事务T异常中止
  • 【write,T,X,旧值,新值】:事务T将数据项X的值从旧值改为新值 

每当事务执行时,事务的开始,事务的结束,以及事务对数据库的更新操作信息就被记录到日志里,对于更新操作的日志记录,记录里要包括事务的标识操作的数据对象以及更新前数据的值更新后数据的值来标明是哪个事务对哪个数据对象进行的更新,数据的值可为空值 

为保证日志可用于恢复,把日志记录登记在日志里时必须遵循两条原则

  • 一是由于DBMS可能同时处理多个事务,在日志中登记日志记录的顺序必须严格按各事务中操作执行的时间先后次序

事务T产生的日志记录,可能与其他事务的日志记录相互交错,这里给出一段6个事务中的操作交错执行的日志示意图,其中的Bi代表事务Ti的开始执行日志记录Ci代表事务Ti的成功完成提交日志记录Wi代表事务Ti写数据到缓冲区,即更新数据的日志记录Ai代表事务Ti的异常终止日志记录。每个事务的第一条日志记录都是该事务的开始记录,最后一条日志记录为commit记录或abort记录

  • 另一个登记日志记录的原则是在把数据的更新的结果写入到磁盘数据库之前,记录这个更新的对应日志记录必须先写入日志中。

数据的更新结果和新产生的日志记录首先都存储在内存的缓冲区内,把数据的更新结果写入磁盘数据库和把记录这个更新的对应日志记录写入日志中是两个输出操作,有可能在这两个操作之间发生故障。如果先进行了数据更新,假如将数据项X由3更新为5然后发生系统故障,内存缓冲区内容被刷新,则在日志中并没有登记表示这个更新的日志记录那么后面无法撤销这个更新操作,再将数据项由5改为3了 

DBMS的事务处理的恢复机制必须能实现将日志缓冲区中的日志记录先写到磁盘的日志中,并且要保证磁盘上的日志的可靠存储

三、数据转储

1、日志可以提供事务故障和系统故障后的数据恢复保障,为了在发生介质故障造成磁盘上的数据丢失时数据库也能进行恢复,通常还要采用数据转储技术

2、数据转储数据库管理员DBA定期地在某种存储介质如磁盘或光盘等创建一个与数据库分离的数据库备份并把备份存放在安全可靠的地方,这些数据库备份简称为备份,也称后备副本等

3、备份保存数据库在转储时的数据库状态。

4、转储是一个冗长的过程,十分耗费时间和资源,不能频繁进行,DBA应该根据数据库使用情况确定一个适当的转储方式和转储周期,比如根据转储时系统状态的不同,转储可分为静态转储和动态转储

如果有可能暂时关闭数据库系统,可以进行静态转储,静态转储是在在系统中无运行事务时进行的,也就是要等待正在运行的用户事务结束,新的事务必须等待转储结束才能开始执行,因此转储期间没有对数据库的存取或更新操作,也不会产生日志记录

  • 静态转储最大的优点是能够得到一个与转储时的数据库相一致的备份
  • 但会降低数据库系统的运行效率 

因有的转储可能要几个小时,而大多数数据库系统不能在转储所需要的一段时间内关闭,因此需要进行动态转储,动态转储与用户事务可以并行,转储期间允许事务对数据库进行存取或更新

  • 动态转储可以克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的执行
  • 但是在动态转储的过程中,系统中的运行事务可能会更新磁盘上的数据库中的数据,转储到备份上的数据库可能会包含未提交事务的中间执行结果,是数据库处于某个不一致状态时的值,得到的备份可能不是数据库某个一致性状态的备份 

5、根据转储的备份,转储可分为完全转储和增量转储

  • 完全转储在每次转储时都复制整个数据库,每次备份的数据量大,时间长
  • 增量转储只需要复制上次转储后更新过的数据,每次备份的数据量小,时间短

数据库以数据文件和日志文件的形式存储在磁盘介质上,数据转储就是要得到这些磁盘文件的备份

 

例如SQL Server支持的T-SQL语言提供可完成对数据库进行完全存储增量转储BACKUP操作语句来得到全备份或增量备份。该语句可对单个数据文件进行转储

也可对包括多个数据文件的文件组进行转储

可对事务日志进行转储得到上一次完全转储后生成的新日志备份,需指定备份所在的存储路径和物理存储文件,

可指定进行数据文件的完全转储还是增量转储,

每次增量转储得到的是上一次完全转储后的增量备份、系统生成的活动日志以及转储得到的数据库全备份,增量备份和日志备份构成的数据库备份均是为数据库产生的冗余数据,利用这些冗余数据才能在发生故障后将数据库从一个不一致的错误状态恢复到一个一致性状态

四、小结

 

 

相关文章:

恢复的实现技术-日志和数据转储

一、引言 在系统正常运行的情况下,事务处理的恢复机制应采取某些技术措施为恢复做好相应的准备,保证在系统发生故障后,能将数据库从一个不一致的错误状态恢复到一个一致性状态 恢复技术主要包括 生成一个数据库日志,来记录系统中…...

全网最全最细的jmeter接口测试教程,建议收藏

在日常工作中,尤其是做接口测试时,我们最经常用到的两个工具,就是Jmeter和postman。今天,我们主要是讲一讲Jmeter在接口测试这一块的一些方式方法。内容比较多,大家可以收藏一下,以后慢慢学。 1&#xff0…...

Raspbian命令行连接WiFi网络

Raspbian命令行连接WiFi网络 1. 源由2. 环境3. 信号4. 连接5. 检查6. 断开 1. 源由 “懒人”多福,是什么原因,大家知道不,哈哈。 如果大家关注过之前《Ardupilot开源代码之Rover上路计划》,为了笔记本电脑在不断网的情况下进行配…...

王佩丰 Excel 基础二十四讲——目录

前言 跟着B站学习王佩丰 Excel 基础教程,本文章为索引目录 课程传送门:视频地址——点击前往 王佩丰Excel基础教程24讲完整版 第一讲:认识 Excel 第二讲:Excel 单元格格式设置 第三讲:查找替换定位(未编辑…...

Qt扫盲-QRect矩形描述类

QRect矩形描述总结 一、概述二、常用函数1. 移动类2. 属性函数3. 判断4. 比较计算 三、渲染三、坐标 一、概述 QRect类使用整数精度在平面中定义一个矩形。在绘图的时候经常使用,作为一个二维的参数描述类。 一个矩形主要有两个重要属性,一个是坐标&am…...

Android系统adb shell怎么执行checksum 来判断文件是否变更?

在Android系统中,通过ADB(Android Debug Bridge)shell执行checksum(校验和)来检查文件是否变更是一个常见的需求,尤其是在自动化测试或确保应用文件未被篡改的场景中。在Linux和Android shell中&#xff0c…...

JS中的上下文

一.执行上下文的概念: 执行上下文简称上下文。变量或者函数的上下文决定了它们可以访问哪些数据,以及它们的行为。每一个上下文都具有一个关联的变量对象,而这个上下文中定义的所有变量和函数都存在于这个对象上。 二.JS中上下文的执行机制&a…...

【深度学习】注意力机制

https://blog.csdn.net/weixin_43334693/article/details/130189238 https://blog.csdn.net/weixin_47936614/article/details/130466448 https://blog.csdn.net/qq_51320133/article/details/138305880 注意力机制:在处理信息的时候,会将注意力放在需要…...

安卓开发自定义时间日期显示组件

安卓开发自定义时间日期显示组件 问题背景 实现时间和日期显示,左对齐和对齐两种效果,如下图所示: 问题分析 自定义view实现一般思路: (1)自定义一个View (2)编写values/attrs.…...

IT行业入门,如何假期逆袭,实现抢跑

目录 前言 1.IT行业领域分类 2.基础课程预习指南 3.技术学习路线 4.学习资源推荐 结束语 前言 IT(信息技术)行业是一个非常广泛和多样化的领域,它包括了许多不同的专业领域和职业路径。如果要进军IT行业,我们应该要明确自己…...

Pyramid 中混合认证策略

1. 问题背景 在一个使用 Pyramid 框架开发的应用程序中,需要同时处理 HTML 内容的显示和 JSON API 的请求。对于 HTML 内容,使用了 AuthTktAuthenticationPolicy 进行身份验证和 ACLAuthorizationPolicy 进行授权。当用户成功登录后,会在浏览…...

深度学习经典检测方法概述

一、深度学习经典检测方法 two-stage(两阶段):Faster-rcnn Mask-Rcnn系列 one-stage(单阶段):YOLO系列 1. one-stage 最核心的优势:速度非常快,适合做实时检测任务! 但是…...

<sa8650>sa8650 qcxserver-之-摄像头传感器VB56G4A驱动开发<1>

<sa8650>sa8650 qcxserver-之-摄像头传感器VB56G4A驱动开发 <1> 一、前言二、QCX架构三、QCX 传感器驱动程序定制开发3.1 sensor硬件接口3.2 sensor配置文件3.2.1 cameraconfig.c3.2.2 cameraconfigsa8650_water.c3.2.3 新增编译MK3.2.4 参数解析3.2.4.1 struct Camera…...

推荐8款超实用的ComfyUI绘画插件,帮助我们的AI绘画质量和效率提升几个档次!

前言 大家在使用SD绘画过程中&#xff0c;想必见识到了插件的强大功能&#xff0c;本身纯净版的SD界面是相对简洁的&#xff0c;但是搭配了各种插件后&#xff0c;界面标签栏会增加很多&#xff0c;相应的功能也增加了。 从简单的中文界面翻译插件&#xff0c;到强大的contro…...

MATLAB-振动问题:两自由度耦合系统自由振动

一、基本理论 二、MATLAB实现 以下是两自由度耦合系统自由振动质量块振动过程动画显示的MATLAB程序。 clear; clc; close allx0 1; D1 40; D12 8; D2 D1; m1 1; omega0 sqrt(D1/m1); k1 D12 / D1; k2 D12 / D2; k sqrt(k1 * k2); omegazh omega0 * sqrt(1 k); omeg…...

人工智能-NLP简单知识汇总01

人工智能-NLP简单知识汇总01 1.1自然语言处理的基本概念 自然语言处理难点&#xff1a; 语音歧义句子切分歧义词义歧义结构歧义代指歧义省略歧义语用歧义 总而言之&#xff1a;&#xff01;&#xff01;语言无处不歧义 1.2自然语言处理的基本范式 1.2.1基于规则的方法 通…...

Spring Boot中的异步编程技巧

Spring Boot中的异步编程技巧 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Spring Boot应用程序中如何使用异步编程技巧&#xff0c;以提升性…...

深度解密Spark性能优化之道

课程介绍 课程通过实战案例解析和性能调优技巧的讲解&#xff0c;帮助学员提升大数据处理系统的性能和效率。课程内容涵盖了Spark性能调优的各个方面&#xff0c;包括内存管理、并行度设置、数据倾斜处理、Shuffle调优、资源配置等关键技术和策略。学员将通过实际案例的演示和…...

在U盘/移动硬盘上安装热插拔式Ubuntu系统,并将Docker目录挂载到NTFS硬盘

Windows10的WSL2的确给开发人员带来了很多方便&#xff0c;但是仍然有很多缺点。比如&#xff1a;太占系统内存&#xff1b;有些软件无法在WSL2中编译成功&#xff1b;相当于虚拟机&#xff0c;性能不如原装系统。 装双系统&#xff0c;相信大家都不陌生&#xff0c;但它会占用…...

商城小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…...

FPGA设计流程全解析:从HDL代码到比特流生成的ISE实战指南

1. 项目概述&#xff1a;从零到一理解FPGA设计核心流程如果你刚接触FPGA&#xff0c;面对一堆开发板、软件和概念&#xff0c;可能会觉得无从下手。我刚开始学的时候也一样&#xff0c;总觉得这东西门槛高&#xff0c;逻辑复杂。但后来我发现&#xff0c;只要把设计流程这条主线…...

开源AI中间人代理工具深度解析:从MITM原理到AI API调试实践

1. 项目概述&#xff1a;一个开源中间人代理工具的深度解析最近在开源社区里&#xff0c;一个名为nsampre/openclaw-anthropic-mitm的项目引起了我的注意。光看这个标题&#xff0c;可能很多朋友会有点懵&#xff0c;这串字符组合到底意味着什么&#xff1f;简单来说&#xff0…...

光通信风口已至:芯片巨头加码,产业链满产满销,光进铜退成必然趋势?

英伟达聚焦光通信&#xff0c;产业链投入持续加码今年3月份的英伟达GPU技术大会上&#xff0c;英伟达创始人黄仁勋用了相当长的篇幅谈及光通信。这是因为&#xff0c;英伟达最新一代GPU架构中&#xff0c;芯片之间通过NVLink协议互联&#xff0c;双向带宽达到1.8TB/s。数据中心…...

PHP 的多态机制的庖丁解牛

它的本质是&#xff1a;多态 (Polymorphism) 允许不同的类对象&#xff0c;在响应 相同的方法调用 (Method Call) 时&#xff0c;表现出 不同的行为 (Behavior)。它基于 继承 (Inheritance) 或 接口实现 (Interface Implementation)&#xff0c;通过 父类/接口引用 指向 子类/实…...

FSL处理DTI数据保姆级避坑指南:从DICOM到FA图,我踩过的雷你别踩

FSL处理DTI数据实战避坑手册&#xff1a;从DICOM到FA图的完整解决方案 当你第一次打开FSL准备处理DTI数据时&#xff0c;是否曾被各种命令参数和报错信息搞得晕头转向&#xff1f;作为过来人&#xff0c;我完全理解那种面对黑框终端时的无助感。本文将用最直白的语言&#xff0…...

在PyCharm中上传代码到Gitee仓库

最近学习python&#xff0c;使用pycharm过程中配置远程仓库方式&#xff0c;以gitee为例新建一个项目作为演示点击菜单中的VCS&#xff0c;选择启用版本控制集成弹出的窗口直接点确认在左侧的菜单中找到仓库全选输入提交消息&#xff0c;并点击提交或者提交或推送在弹出的窗口中…...

维吾尔语AI语音最后一公里难题:ElevenLabs+Kaldi联合方案实现方言变体(伊犁/喀什/和田)动态适配(含开源声学适配器)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;维吾尔语AI语音最后一公里难题的本质剖析 维吾尔语AI语音系统在实验室环境中已能实现较高识别准确率&#xff0c;但落地至真实场景时仍面临显著性能衰减——这一“最后一公里”并非技术迭代的自然延迟&…...

亲身体验AI智能体在实际项目中展现的核心能力

AI 智能体能力实战学习笔记 通过与 AI 智能体的协作&#xff0c;我亲身体验了 AI 在软件开发全流程中的强大能力。本文记录了智能体在实际项目中展现的核心功能&#xff0c;以及如何使用这些能力提高工作效率。 &#x1f3af; 核心能力概览 能力地图 AI 智能体能力 ├── &a…...

通过Taotoken快速为OpenClaw智能体配置统一模型接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken快速为OpenClaw智能体配置统一模型接入点 对于使用OpenClaw框架构建AI智能体的开发者而言&#xff0c;管理多个智能体…...

别再手动改防火墙了!用这条组策略,一键修复AD域强制更新时的RPC报错

自动化运维实战&#xff1a;用组策略统一管理AD域防火墙规则 在混合Windows环境的IT运维中&#xff0c;手动配置每台终端设备的防火墙规则无异于一场噩梦。想象一下&#xff0c;当您面对数百台运行不同Windows版本的计算机时&#xff0c;每次组策略更新都因为防火墙拦截RPC通信…...