数据库恢复技术

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据库恢复技术

1.事务:

是用户定义的一个数据库操作序列,是一个不可分割的工作单位(原子性) 一般的,一个程序中被包含多个事务。

2.事务的特性:(ACID)

  • 原子性:事务中的操作要么都做,要么都不做
  • 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
  • 隔离性:一个事物的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰
  • 持续性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

3.破环ACID的可能:

  • 多个事务并发运行时,不同事务的操作交叉执行
  • 事务在运行过程中被强行停止

4.数据库恢复:

把数据库从错误状态恢复到某一已知的正确状态。

5.故障的分类:

  • 事物内部的故障:只影响这个事物本身,一般是非预期的,如运算溢出、因为死锁被撤销等,解决方法是强行回滚。
  • 称为事务撤销系统故障(软故障):造成系统停止运转的任何事件,使得系统重新启动。影响正在运行的所有事务,但不破坏数据库。
  • 介质故障(硬故障):指外存故障,如磁盘损坏
  • 计算机病毒

6.数据库恢复技术的实现:

建立冗余文件(后援副本)、登记日志文件。

7.数据转储:

  • 静态转储:系统中无运行事务时进行的转储,转储期间不允许任何事务执行。 优点:得到的一定是一个数据一致性的副本 缺点:降低了数据库的可用性
  • 动态转储:转储和用户事务可以并发执行 优点:系统可用性较好 缺点:转储得到的副本不一定一致,因此必须建立日志文件等级转储期间各事务对数据库的修改活动
  • 海量转储:每次转储整个数据库,恢复更方便
  • 增量转储:每次只转储上一次转储后更新过的数据,恢复较复杂

7.登记日志文件:

用来记录事务对数据库操作的文件。

8.登记日志文件主要记录啥?

  • 事务的开始。
  • 事务的结束。
  • 事务的操作。
  • 事务的标识。
  • 事务的操作对象。
  • 事务的操作类型。
  • 操作对象之前的值。
  • 操作对象之后的值。

9.登记日志文件原则:

  • 按事务的执行的时间顺序记录
  • 先记录在执行

10.恢复策略:

事务内部故障:

  • 1.反向扫描日志文件
  • 2.对所有操作进行逆操作。
  • 3.如此反复直到读到事务开始标记。

系统故障:

  • 1.正向扫描日志文件。
  • 2.对所有在故障发生前已经commit的事务加入REDO-LIST(重做队列)
  • 3.对所有没有commit标记的事务加入UNDO-LIST(撤销队列)

介质故障:

  • 1.引入最新的登记日志文件以及最新的数据库后援副本
  • 2.重复系统故障的操作(重做已完成,撤销未完成)

11.检查点技术: 我们知道数据库恢复子系统在恢复数据库时。需要扫描日志文件以及对事务进行重做或者撤销。因此,如果每次都要重新操作,每次都要扫描全部的日志文件。很浪费时间。为了解决这个文件,检查点技术应运而生。

12.检查点技术记录的内容:

  • 1.建立检查点时所有正在执行的事务。
  • 2.记录的事务中最近的日志文件地址。

13.动态维护日志文件的方法:

周期的执行、建立检查点,保存数据库状态的操作。

14.动态维护日志文件的具体步骤:

  • 1.将日志缓冲区的所有日志记录写入磁盘的日志文件。
  • 2.在日志文件中写入检查点。
  • 3.将数据缓冲区的数据写入磁盘。
  • 4.将检查点记录在日志文件的地址写入一个重新开始文件。

15.具有检查点记录的数据库恢复步骤:

  • 1.在重新开始文件中找到最后一个检查点记录的文件地址。由该地址在日志文件中找到最后一个检查点。
  • 2.获取最后一个检查点的全部事务记录。
  • 3.建立UNDO-LIST以及REDO-LIST队列。
  • 4.由检查点开始正向扫描日志文件。(将所有事务放入UNDO-LIST,如果存在事务提交,则从把该事务从UNDO-LIST移入REDO-LIST)
  • 5.REDO-LIST的所有事务操作重做。UNDO-LIST的所有事务操作撤销。

16.数据库镜像:

由数据库自动COPY数据保存在另外的磁盘中。一旦出现介质故障则用数据库镜像继续使用。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
23天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
43 3
|
23天前
|
数据库 索引
深入理解数据库索引技术:回表与索引下推详解
【10月更文挑战第23天】 在数据库查询性能优化中,索引的使用是提升查询效率的关键。然而,并非所有的索引都能直接加速查询。本文将深入探讨两个重要的数据库索引技术:回表和索引下推,解释它们的概念、工作原理以及对性能的影响。
44 3
|
1月前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
56 8
|
29天前
|
存储 NoSQL 关系型数据库
数据库技术深度解析:从基础到进阶
【10月更文挑战第17天】数据库技术深度解析:从基础到进阶
56 0
|
2月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
2月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
22天前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
106 61
|
20天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
33 3
|
22天前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
22天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
27 4