为什么数据库管理系统(DBMS)需要恢复?2025年1月31日 | 阅读12分钟 基本上,操作系统负责确保或验证在事务提交给 DBMS 执行时,作为事务一部分必须执行的所有操作都已成功完成,并且它们的影响要么已记录在数据库中,要么该事务对数据库或任何其他事务都没有影响。因此,为了防止数据丢失,可以实施基于延迟更新和即时更新或数据备份的恢复方法。拥有一个名为系统日志的独特文件对于恢复方法至关重要。它包含有关每个事务的开始、中间和结束的详细信息,以及事务过程中发生的任何更改。日志中记录了每个修改数据库对象值的事务操作。要从事务失败中恢复,您需要了解这些信息。 尽管数据库系统可能会像任何其他类型的计算机系统一样发生故障,但其中包含的信息必须始终可用。数据库必须具备在发生故障时快速恢复的工具。它还必须是原子的,这意味着事务要么对数据库没有影响,要么已正确完成并提交(效果已永久存储在数据库中)。数据备份和从故障条件恢复都可以通过自动和非自动方法进行。数据库恢复过程是从系统故障、事务错误、病毒、灾难性故障、不当命令执行等导致数据丢失中恢复数据的方法。 DBMS 不能允许某些事务 T 操作应用于数据库,而将其他 T 操作置于未应用状态。如果事务在执行了部分过程后失败,这可能会发生。 故障类型数据库故障是指数据库无法执行所请求的事务或数据库数据丢失。DBMS 易受多种故障的影响,每种故障都需要独特的管理策略。数据库故障可能由多种原因引起,包括网络问题、系统崩溃、自然灾害、疏忽、蓄意破坏(故意破坏数据)、软件故障等。 事务故障事务故障是指事务无法完成或达到无法再完成的点。 DBMS 事务失败的原因
系统故障硬件或软件故障是系统崩溃最常见的原因。其他来自系统外部导致其突然停止工作或最终崩溃的问题包括操作系统故障、电源中断、主内存崩溃和事务故障。 这些故障,有时称为软故障,是导致易失性内存中数据丢失的原因。所做的故障停止假设认为系统崩溃不会影响存储在非易失性存储器上的数据。 数据传输故障数据传输故障是指在数据传输操作期间发生的磁盘故障,导致磁盘存储中的数据丢失。磁盘磁头崩溃、磁盘不可达、坏扇区出现、磁盘读写问题等是磁盘故障的一些其他原因。 在数据传输过程中发生磁盘故障时,可以利用存储在其他磁带或磁盘上的数据备份副本快速恢复。因此,定期备份数据是一个明智的主意。 系统错误此类错误是由事务中执行的操作引起的,例如除以零或整数。这种类型的故障有时被称为事务故障,并且可能是由于不正确的参数值或逻辑编程错误引起的。此外,用户可能会停止正在进行的执行,这可能导致事务失败。 本地错误当我们执行一个事务但出现某些情况可能导致事务被取消时,基本上就会发生这种情况。本质上,这种类型的错误属于本地错误的范畴。一个简单的例子是事务数据可能找不到的可能性。当我们尝试从余额不足的账户中扣款时,我们的请求或事务将被取消。为了不将此异常视为故障,应将其编码到事务本身中。 并发控制的执行由于事务违反了串行化,并发控制机制可能会选择中止它、重新启动它,或者我们可以认为多个进程处于死锁状态。 磁盘故障这种类型的故障基本上发生在磁盘由于读写错误或读写头崩溃而丢失数据时。这可能发生在事务正在读取或写入时。 灾难物理问题是灾难的另一种说法。它通常指一系列看似无穷无尽的问题,包括盗窃、蓄意破坏和火灾,意外覆盖磁盘或磁带,以及操作员装载了错误的磁带。 DBMS 中的数据恢复技术用于在这种系统故障情况下恢复数据。即使数据库系统发生故障,数据库中的数据也必须能够恢复到系统丢失之前的最新状态。数据库的原子性和持久性通过 DBMS 中的恢复方法来维护。如果在事务期间系统崩溃并丢失所有数据,则认为它不具有持久性;如果在事务期间只有部分数据被更新,则认为它不具有原子性。DBMS 中的数据恢复策略确保数据始终可恢复以保护持久性,并保留其状态以保护其原子性。 基于日志的恢复每个 DBMS 都有自己的系统日志,其中记录了所有系统活动,并包含事件发生时的时间戳。数据库会处理多个日志文件,用于数据库活动,如故障、查询和其他更改。日志以以下文件格式保存
这些日志使我们能够跟踪数据状态在事务过程中如何变化,并将其恢复到原始状态或新状态。要检查 [write item, T, X, old value, new value] 操作并获取数据的先前状态,请使用 undo 操作。只有在执行了 [commit, T] 操作后,才能执行 redo 操作以将系统故障导致丢失的数据恢复到其新状态。 已批准的更新方法在批准的更新方法中,对数据的更改要等到事务完成或在提交操作时才进行。根据此过程,数据被修改然后永久保存在主内存中。在此过程中,日志会及时更新,并在发生故障时用于识别故障点。这给了我们一个优势,因为即使系统在提交步骤之前崩溃,状态仍然会被处理,并且数据库的内容不会被更改。与 undo 操作所需的方法不同,如果系统在提交阶段之后失败,我们可以快速将更改重新应用到新阶段。 许多数据库都设置了自动日志记录,但我们也可以手动配置。要在 MySQL 数据库中配置日志记录,请在 MySQL 终端中执行以下步骤 创建一个变量来保存日志文件保存日志的位置。
在即时更新技术中,数据会在事务进入提交步骤之前同时更新。一旦对数据进行了修改,也会跟踪日志。如果事务失败,数据可能仍在处理中,但可以使用撤销操作来恢复数据。此外,我们可以使用 SQL 命令来指示事务的状态并将其数据恢复到该状态。为此,请使用以下命令
即时更新技术在即时更新技术中,数据会在事务进入提交步骤之前同时更新。一旦对数据进行了修改,也会跟踪日志。如果事务失败,数据可能仍在处理中,但可以使用撤销操作来恢复数据。此外,我们可以使用 SQL 命令来指示事务的状态并将其数据恢复到该状态。为此,请使用以下命令 SAVEPOINT 命令用于保存事务中数据的当前状态。该命令的语法是, 使用 ROLLBACK 命令将数据状态返回到命令指定的保存点。该命令的语法是 即时更新与延迟更新的区别是什么?
有哪些备份策略?备份是数据库当前状态的副本,保存在不同的位置。当系统因自然灾害而损坏或销毁时,此备份很有用。可以使用这些备份将数据库恢复到先前的备份状态。以下是使用的几种备份技术:
事务日志如何工作?已更新数据库中数据的事务都记录在事务日志中。要使用事务日志检索数据,请执行以下步骤:
影子分页
结论
这些是备份方法的一些示例完整数据库备份 - 此完整数据库备份,包括数据和数据库,包含全文目录,并备份恢复整个数据库在预设时间序列中的元数据。 差异备份:它仅保存自上次完整数据库备份以来已更改的数据。当自上次完整数据库备份以来某些数据多次更改时,差异备份会存储最适合当前版本的数据。为此,我们需要先还原完整的数据库备份。 事务日志中的所有数据库活动都进行了备份,包括对每个已运行语句的记录。它包含已发生到数据库的所有事务,并且是事务日志条目的备份。这允许数据库恢复到特定时间点。如果数据文件丢失但没有提交的事务丢失,则也可以使用事务日志进行备份。 下一个主题SQL 中的脏读(DBMS) |
我们请求您订阅我们的新闻通讯以获取最新更新。