DBA 必须为故障影响数据库的可用性、完整性或可用性的情况做好准备。对故障和服务中断做出反应是 DBA 工作的关键组成部分。这意味着确保为所有关键数据库对象进行适当的备份。
假设存在备份,当需要进行不可避免的数据库恢复时,下一个决定是如何尽快恢复所需的数据。但是有几种不同的类型和方法可以执行恢复。
在可用的不同类型的数据库恢复中,通常会想到的第一个是恢复到当前,以处理某种灾难。这场灾难可能是从媒体故障到破坏数据中心的自然灾害。这通常意味着在恢复完成之前,您的应用程序将完全不可用。
要成功恢复到当前,恢复过程必须能够将数据库的内容重置为它在故障点之前(或之前)所看到的方式。要恢复到当前,恢复过程必须找到有效的完整映像副本备份并恢复该映像副本。然后恢复将通过数据库日志前滚,应用所有数据库更改。
如果最后一个完整的映像副本丢失或损坏,如果存在先前的映像副本,仍然可以恢复。恢复过程可以从较旧的备份副本开始,应用任何增量副本,然后通过归档和活动日志前滚。当然,这种情况下需要更多的数据库日志,因此恢复过程会花费更长的时间。
如果没有可用的映像副本作为起点,则可以仅使用数据库日志来恢复数据库对象。如果加载了数据并记录了加载过程,则只需应用日志记录即可进行恢复。
第二种传统的恢复类型是时间点 (PIT) 恢复,通常用于处理应用程序级问题。PIT 恢复有时称为部分恢复,因为在恢复后只有部分现有数据会保留。恢复到某个时间点会消除自该指定时间点以来发生的所有事务的影响。
要执行 PIT 恢复,将还原映像副本备份,然后通过前滚数据库日志(或日志备份)来应用更改。但是,只处理到指定时间的日志记录。有时将恢复点指定为实际日期和时间;有时它是使用数据库日志上的相对字节地址指定的。
要成功恢复到某个时间点,恢复过程必须能够将数据库的内容重置为它查看先前一致点的方式。关键是保留对数据的所有好的更改,同时删除所有“坏的”。PIT 恢复可以通过恢复映像副本并通过日志前滚以应用任何更改来完成;或者您只是回滚日志,删除您要恢复到的 PIT 之后发生的数据库更改。
无论使用何种方法执行 PIT 恢复,DBA 都必须恢复到数据一致的点。一致的恢复点将确保数据完整性、引用完整性和事务完整性。一些 DBMS 提供了一个 QUIESCE 实用程序来实现一致性点,而另一些则要求在映像复制期间停止(或处于只读模式)数据库对象。
另一个问题是确定自您要从中恢复的错误事务或故障以来究竟运行了什么。DBA 可以检查作业计划,根据数据库日志格式化报告,并查看计算机控制台中的消息,以帮助确定发生故障后运行的进程。
事务恢复是第三种类型的恢复。传统类型的恢复在数据库对象级别恢复,而事务恢复允许用户根据用户定义的标准恢复数据库的特定部分。这可以在事务或应用程序级别。交易是由用户对流程的看法定义的,可能是一组组成新员工操作的面板,或者是发布到总帐的一组工作。重要的一点是,您尝试修复的事务与 DBMS 中的事务(或恢复单元)之间可能存在关联,也可能不存在关联。
事务恢复的问题类型非常适合包括“删除自上周三上午 11:50 以来特定用户执行的所有数据库更新”或“撤销自昨天晚上 8:00 以来特定应用程序执行的所有数据库删除”等场景。” 实际上,在应用程序或事务级别可能会发生许多类似类型的问题。
确定要恢复的事务后,您可以请求 UNDO 或 REDO 恢复。UNDO 恢复只删除坏事务的影响,而 REDO 恢复在给定时间点之后删除所有事务,然后只重新应用好事务。通常,事务恢复是使用反向 SQL 完成的;也就是说,检查日志并将 INSERT 更改为 DELETE,将 DELETE 更改为 INSERT,并扭转任何 UPDATE 的影响。
还有其他选择,例如,如果您的备份和恢复方法是使用存储管理软件,则数据库对象的单个映像副本备份将不存在。在这种情况下,您将需要部署存储管理软件来执行恢复。实际的恢复过程将取决于使用的存储管理软件的类型,以及它如何(或是否)与 DBMS 恢复机制交互。
此外,我们不能忽视异地灾难恢复,即使它应该是最罕见的数据库恢复类型。当自然灾害(火灾、洪水等)或其他严重事故导致您无法使用主数据处理中心时,需要进行异地灾难恢复。在这种情况下,您需要重新建立整个系统环境,以及恢复您的 DBMS、数据库对象和数据。
原文标题:Types of Database Recovery, Part 1
原文作者:Craig S. Mullins
原文链接:https://www.dbta.com/Columns/DBA-Corner/Types-of-Database-Recovery-Part-1-155281.aspx




