日志传送选项
所有数据库更改(插入、更新或删除)都记录在 DB2 事务日志中。事务日志主要用于崩溃恢复和在故障之后恢复系统。正如我们已经讨论的,它们在复制中发挥作用。此外,它们还可用于另一个高可用性解决方案 日志传送(log shipping)。该 HA 方案类似于数据复制选项。它要求辅助系统准备好在主系统发生故障时进行接管。管理员通过恢复主系统数据库的备份来创建这个辅助系统。通过恢复主系统的数据库备份,备份系统将处于前滚暂挂状态。事务日志从主系统转移到辅助系统,并用于使数据库前滚以完成事务。如果发生故障,管理员应停止前滚过程,并且使数据库联机。
可以用几种方式完成转移日志文件的过程。主要方法是使用 DB2 的 用户出口(user exit)工具。用户出口是当事务日志已满并准备归档时调用的可执行应用程序。数据库引擎将日志文件传递给用户出口,用户出口逻辑将执行所有必需的工作。用户出口可以制作日志的副本、将它发送到磁带设备、调用另一个程序或执行它被编码来处理的任何例程。一个可能的选项是将日志文件复制到辅助系统可以读取日志并应用日志中包含的事务的位置。
与复制选项相同,日志传送是一个异步过程。只要主系统上有活动日志文件并且还有未应用且未完成的日志文件,辅助系统就处于不同步状态。
DB2 确实有执行双日志记录的能力。这允许数据库在不同卷上创建复制日志文件,从而增加冗余。此外,该方法不会在数据库服务器上产生额外的开销。与使用复制不同,该方法不会创建两个活动的系统,因为备份系统在被管理员停止前滚暂挂状态之前一直处于不可用状态。
图 4说明了日志传送过程。
图 4. 日志传送
表 4. 日志传送的优缺点
高级存储选项
现代的存储子系统提供了许多高级特性。DB2 已经能够利用这些高级特性来创建高可用性和灾难恢复系统。虽然这些技术可能会不同,但高级存储选项的基本要素就是能够快速创建磁盘卷的相同副本。然后可以将这些卷安装到辅助系统上。辅助系统可以充当备份系统或执行其它一些类型的工作负载。允许实现这一功能的 DB2 特性叫作 暂挂 I/O(suspended I/O)。
暂挂 I/O 这项技术允许数据库引擎使数据库处于一致状态,同时又保持联机。暂挂 I/O 状态暂挂写 I/O 操作,以防止对数据表空间和日志的写操作。在数据库离开暂挂 I/O 状态之前,该数据库仍可用于所有应用程序,处理只读语句和延迟写语句(插入、更新和删除)。通过 SET WRITE SUSPEND 命令将数据库置为暂挂状态。暂挂数据库之后,就可以制作数据库的物理文件的副本。将需要数据库目录、日志文件和数据库容器的副本。存储硬件和软件通过分割镜像卷或其它高级复制技术,可以非常快地创建大量数据的副本。然后,所复制的卷可以用于创建备份系统。制作了副本之后,可以使用 SET WRITE RESUME 命令来继续处理主系统上的所有事务。
所复制的卷可以与 DB2INIDB 实用程序一起用来创建辅助系统。该实用程序有三个实现:SNAPSHOT、STANDBY 和 MIRROR:
SNAPSHOT 实现只允许数据库执行崩溃恢复。创建了一个复制的数据库,但在恢复期间不回滚任何事务。该方法适用于创建测试环境或报告机器。它不提供用于数据库恢复的方法,因此不应用作 HA 选项。
STANDBY 和 MIRROR 方法允许创建恢复实现。在这两种情况下,DB2INIDB 工具使数据库处于前滚暂挂状态。然后可以将主系统中的日志文件应用到备份系统。如果主系统发生故障,那么辅助系统将离开前滚暂挂状态并联机,准备处理事务。用 STANDBY 还是用 MIRROR 方法取决于如何应用日志以及如何使数据库恢复联机。
STANDBY 方法使数据库在独立于主系统的位置恢复联机,并允许在主系统处于暂挂状态时,在辅助系统上进行数据库备份。
MIRROR 方法用所复制的卷替换原来的卷,而处理将在相同的位置中发生。
如我在日志传送部分所提到的,DB2 能够生成双日志。通过将日志放在不同的卷上,该能力可以与高级存储选项一起使用来确保日志的完整性。DB2 用户出口程序可以用于存储和检索日志文件,并管理已归档日志文件的位置。可以对用户出口进行编码,以将日志放到辅助系统或另一个可用位置上。
图 5显示了高级存储选项。
图 5. 高级存储
表 5. 高级存储的优缺点
灾难恢复
建立灾难恢复计划对于现代企业至关重要。企业数据库中的信息对于进行业务活动是极其重要的。保护该数据以及在灾难之后确保其“生命”是很重要的活动。当构建 DR 计划时,有三个关键问题:
需要防止的故障级别
可接受的数据丢失量
允许用于恢复的时间量。
要防止的故障级别通常是近似性问题。原始数据与其备份之间在物理上有多紧密?备份数据可以在不同的驱动器上、在独立的机器上、在独立的楼层上或在不同的建筑物里。不可能预测所有可能的灾难。火灾、水灾或甚至用户的恶作剧都可能是企业必须面对的问题。解决方案的设计应该包括公司希望防止最坏情况的方案。
所有企业都不希望在故障之后丢失任何数据。虽然不丢失数据是可能的,但由于可能需要的复杂性和费用(尤其是如果所防止的故障级别非常高),这通常是不实际的。可接受的数据丢失量取决于数据对公司有多重要以及有什么资源可用于确保其生命。
恢复所需的时间量类似于高可用性的目标。它与高可用性解决方案之间的差异在于所防止的故障类型以及通常认为合理的时间长度。HA 故障转移通常以秒和分钟来衡量,而灾难恢复则可能以小时和天来进行衡量。不过并非总是这样,但这个差异区分了对这些解决方案的相对期望。
备份和恢复
数据库备份创建了数据库的时间点映象,它是灾难恢复解决方案的基本组件。DB2 提供了几种备份,包括脱机备份、联机备份和增量备份。从备份恢复所需的时间取决于数据库的大小和可用于执行恢复的硬件资源。
由于数据库备份只捕获时间点的数据,因此无法通过一个简单恢复来恢复备份之后发生的任何数据更改。要恢复备份之后完成的事务,就需要应用日志文件。可以从备份和日志文件(通过在日志文件中进行“前滚”来应用)来恢复数据库。这允许恢复到某个时间点或恢复到日志文件结束。
因此,如果 DR 解决方案必须恢复自上次备份以来的事务,那么保留日志文件是非常关键的。有两个提高日志保留的 DB2 特性:双日志记录和用户出口工具,已在关于数据库复制 HA 选项的部分中进行了讨论。
灾难恢复方案
灾难恢复方案可以分成三类:
- 简单备份
- 备份和日志保留
- 高级存储备份
虽然不是每个解决方案都清晰地被划入这三类中的某一类,但它们确实为您理解灾难恢复选项提供了合理的框架。
简单备份
只创建数据库备份确实创建了一个 DR 解决方案。它也许是非常有限的,这取决于您的环境。通过从“活动”的系统上移走所创建的备份,可以提高保护的级别。增加数据库备份的频率也降低了数据丢失的风险。
备份软件对于创建和维护 DB2 备份可能非常有帮助。例如,IBM 的 Tivoli Storage Manager 和 Veritas 的 Net Backup® 都提供了允许在其软件控制的设备上直接备份和维护 DB2 数据库的解决方案。这些设备可以是磁带库或另一种存储设备。
简单备份适合于只读数据库或由能轻松重新创建的批处理作业填充的数据库,或者在备份之间不必维护数据库更改的情况下。
表 6. 简单备份的优缺点
备份和日志保留
保留数据库日志文件与数据库备份一起创建了更完善的 DR 解决方案。日志文件允许恢复备份之间发生的数据更改。
该解决方案的真正复杂性在于保护日志文件以确保它们在恢复期间的可用性。如果选择实现双日志记录,DB2 可以将日志文件放在不同的位置,如果确保这些位置在不同的存储器阵列上,那么保护级别就会得到提高。
但是,日志文件仍面临存储子系统故障。如在高可用性的日志传送选项中所提到的,用户出口程序可以提供重定位日志文件的替代方法。用户出口可以将已关闭的日志文件移到当前系统可用存储阵列之外的位置,从而提高保护级别。这里的告诫是它只移动已关闭的日志文件。即使已实现了双日志记录,包含活动事务的日志文件仍面临因阵列丢失或存储设备故障而产生的丢失。
该解决方案适合于大多数面向商业事务的环境。它均衡了最小化数据丢失风险的需要和维护 DR 解决方案所需的成本。
表 7. 备份加日志保留的优缺点
高级存储备份
我们在高可用性下的高级存储选项部分中讨论过这个主题,相同的原则在这里也适用。正如在那部分中所见的,STANDBY 方法允许当数据库副本处于暂挂状态时在辅助系统上执行数据库备份。
创建数据库副本已经创建了 DR 解决方案的一部分。备份副本提高了保护级别。如果用双日志记录和用户出口程序正确实现了这个高级存储备份,那么它就为核心企业数据库生成了最好的 DR 解决方案。
该解决方案最适合处于企业活动核心的数据库系统。示例可能包含了供应链管理和在线代理系统。
表 8. 用于灾难恢复的高级存储备份优缺点
结束语
DB2 为构建高可用性和灾难恢复解决方案提供了出色的技术。您应该根据您的业务需求、可用选项和解决方案需求来做出选择。本文中讨论的这些要点为进一步研究和评估提供了一个很好的框架。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。