|
Post by account_disabled on Nov 29, 2023 10:02:34 GMT
数据库中的恢复很大程度上依赖于事务日志。事务日志记录所有事务以及每个事务对数据库所做的修改。因此,事务日志是每个SQL Server数据库中的重要组成部分,因为如果出现故障,数据将根据现有的事务日志进行恢复/恢复。示例(使用变量 x ): 6. 检查点 = 从系统中删除以前的日志并将其永久存储在磁盘上。 交易 如果事务x已提交,则数据将永久记录在数据库中。已提交的事务始终涉及将提交写入日志文件和磁盘。当发生崩溃时,将从日志文件中从条目(Start_Transaction(x))开始搜索数据,但尚未写入提交(x)。这些事务有时需要回滚以消除恢复过程中对数据库的影响。 一些备份技术的示例: 1.全数据库备份=完整的数据恢复包括数据和数据库、元数据、包括文本目录 2.差异备份=仅保存自上次全数据库 行业电邮清单 备份以来发生的数据更改。当自上次备份以来同一数据已更改多次时,差异备份会保留更改数据的最新版本。 3. 事务日志备份 = 在此备份中,备份数据库中发生的所有事件,例如每个执行语句的记录。这是事务日志条目备份,包含数据库上发生的所有事务。 使用事务日志的数据存储也称为基于日志的恢复。基于日志的恢复有两种技术,即: · 延迟数据库修改,其中所有数据更改都输入到存储库中,当提交事务时,数据库将真正更新 · 立即数据库修改,所有数据更改都将直接对数据库进行。 除了使用基于日志的恢复之外,DBMS还可以使用并发事务恢复技术,该技术可以在每个事务的事务日志同时发生时使用,这样数据可以交错,并且要恢复的数据是不确定的。因此,DBMS 创建一个检查点,当所有事务提交时,DBMS 会在其中存储一个数据库的状态。当所有内容都已提交时,DBMS 将存储此数据库信息,并使其成为数据库可以在所有内容损坏时返回的“基地”。当系统崩溃时系统有事务正在运行,那么: 1.恢复系统会从崩溃点读取剩余数据并返回到检查点 2.系统创建两个列表,undo和redo 3.如果系统读取了Start和Commit命令,则该事务将被包含在重做列表中 4. 如果系统读取Start命令但没有Abort或Commit,则该事务将被添加到undo列表中。 这将一直进行到所有事务都已计算完毕并且重做列表中的所有事务将被重新输入并且撤消列表中的所有事务将不会被重新输入。 有多种方法可以促进数据库中的备份或恢复事务,例如: · 备份机制,定期创建数据库备份,以在系统发生故障时保护数据。 · 日志记录功能,即创建事务日志来记录对数据库所做的更改 · 检查点工具可更新数据库备份,以便使最近的更改永久化,并且更容易恢复当前数据。 · 恢复管理器帮助数据库恢复到系统故障之前数据库仍然稳定的状态。
|
|