DB2的高可用性和灾难恢复概述

简介高可用性和灾难恢复是关键数据库应用程序的重要需求。IBM DB2 通用数据库(DB2)提供了许多特性来满足这些需求。如果您还不熟悉分布式平台上的 DB2,或者即使您已用了一段时间,您也许仍会觉得处理可用性和恢复的许多特性令人感到迷惑。您何时使用哪一种特性,当您使用它时,您...显示全部
简介
高可用性和灾难恢复是关键数据库应用程序的重要需求。IBM DB2 通用数据库(DB2)提供了许多特性来满足这些需求。如果您还不熟悉分布式平台上的 DB2,或者即使您已用了一段时间,您也许仍会觉得处理可用性和恢复的许多特性令人感到迷惑。您何时使用哪一种特性,当您使用它时,您可以希望完成什么?
本文旨在概述这些特性,并指导您理解如何使用 DB2 技术来构建高度可用和可恢复的数据库系统。此外,每种解决方案都有其成本以及独有的优点,因此我们将讨论它们的优缺点。
在开始之前,让我们先研究术语高可用性(high availability,HA)和灾难恢复(disaster recovery,DR)。在运用 HA 和 DR 的技术中,它们经常有相交的地方,但它们有两个不同的用途。
高可用性是这样一种需求:每当需要时,数据就可用于从属应用程序。其目的是消除或最小化停机时间。
灾难恢复防止由于毁灭性的故障而导致数据丢失。这类故障意味着由于不可恢复的情况而丢失数据。
术语和客户机/服务器数据库体系结构
我们将首先讨论一些术语和概念,当讨论高可用性和灾难恢复时,应该要理解这些术语和概念。
在数据库体系结构讨论中经常会用到术语 群集(cluster)。有两种类型的 DB2 数据库群集: 高可用性和 高可伸缩性(high scalability)。虽然在一个解决方案中可以结合这两种群集,但应该将它们看作是互斥的实体。高可伸缩性群集(也称作数据库分区)结合了多台服务器的聚集能力以产生高性能解决方案。该技术通常用于构建数据仓库或大型事务系统,而在这样的数据仓库或系统中,单个服务器是无法实现性能目标的。高可用性群集产生一个能最大化数据库正常运行时间的系统。在本文中,术语“群集”仅指高可用性群集。
HA 数据库解决方案有三个部分:
用户应用程序
客户机软件
数据库引擎
当设计 HA 解决方案时,应该考虑所有这三个方面。仅使数据库引擎成为高度可用并不一定能创建出 HA 解决方案。本文的重点是数据库引擎正常运行时间,但您应该将这一问题看作只是整体解决方案的一部分。
数据库应用程序是基于客户机/服务器的。应用程序依靠数据库软件的完整性来产生一致的结果。虽然这看起来似乎相当明显,但当选择和设计解决方案时理解如何实现这一点非常重要。
当应用程序提交 SQL 事务时,在可以假设事务完成之前它必须接收返回码。应用程序并不与数据库引擎直接交互。事务经由客户机软件传递到引擎。由客户机软件将响应返回给应用程序。正的返回码表示成功的情况,而负的返回码表示失败。应用程序如何处理这些情况对于整体 HA 解决方案很重要。通过包含返回码逻辑,尤其是关于事务失败的,应用程序可以使 HA 解决方案对于最终用户显得更加天衣无缝。
数据库引擎通过实现事务日志来确保完整性,事务日志存储了所有插入、更新和删除活动。事务日志确保了数据库更改只在应用程序发出提交语句后接收到正的返回码时才算完成。事务日志是 HA 和 DR 解决方案的基础部分。
在可以提交 SQL 事务之前,必须建立到数据库的连接。CONNECT 语句用于建立数据库连接,但有一些基本特性会影响连接被路由到哪里。客户机软件有两个目录告诉它如何路由数据库连接尝试:
节点目录(node directory)列出了服务器的位置(服务器的 IP 地址或主机名)和数据库服务器用于侦听数据库连接尝试的端口。
数据库目录(database directory)列出了数据库名称、数据库别名和节点目录中用于建立连接的对应项。
当应用程序发出 CONNECT 语句时,会搜索数据库目录来查看是否存在这个数据库名或数据库别名。如果这一项的类型是“indirect”,那么数据库是本地的,并通过共享存储段建立该连接。如果这一项的类型是“remote”,那么节点名用于指向节点目录中的正确项。节点目录信息允许客户机软件正确路由连接尝试。通过了解客户机如何通过目录结构建立数据库连接,在您规划 HA 解决方案时就可以规划资源移动。
高可用性
选择高可用性解决方案很大程度上取决于客户的业务需求。有两种类型的高可用性可供选择: 持续可用性(continuous availability)和 故障转移可用性(failover availability)。
持续可用性
持续可用性要求数据库引擎可随时用于处理 SQL 事务。这类可用性通常只在最关键的应用程序中实现。要实现这个目标,要求百分之百的冗余。那意味着您必须有两个完全互相独立(包括在硬件和软件方面)的系统。
基本上,SQL 事务在这两个系统上发生。一个系统发生故障不会造成其伙伴系统上事务的处理发生中断。要使这成为现实,应用程序必须知道这两个系统,并且将每个事务实现为跨两个系统的 分布式工作单元(distributed unit of work,DUOW)。DUOW 是作为在系统之间协调的一个事务而执行的一系列 SQL 语句。应用程序将事务提交给这两个系统,并从这两个系统接收关于成功或失败的返回码。然后应用程序可以继续处理另一个 DUOW 或执行另一种操作。如果发生故障,其中一个数据库系统不能再为应用程序提供服务,则应用程序(被编码为可以捕获该错误)可以利用另一个系统继续处理它的工作负载,而不会发生中断。
要实现 DUOW 需要类型 2 数据库连接和事务监视器。类型 2 数据库连接建立了适合于 DUOW 的环境。事务监视器负责实现 DUOW 并确保完成或回滚 DUOW 中的事务。DB2 可以充当事务监视器或者您可以使用另一家软件供应商(如 Microsoft 或 BEA)的事务监视器。

表 1. 持续可用性解决方案的优缺点
优点:  缺点:  
100% 正常运行时间 需要重复的硬件
  需要额外的应用程序编码

现在,我们将转到下一个高可用性解决方案。
故障转移可用性
故障转移可用性与持续可用性的区别在于:数据库引擎会有一段时间(尽管时间很短暂)无法用于事务处理。这种解决方案的基本元素有:
主系统和辅助系统
故障检测
数据源移动
两个系统都有数据库数据的副本,当检测到故障时,就会发生 故障转移。在故障转移过程中,数据源从主系统移到辅助系统。
有两种故障转移可用性: 同步(synchronous)和 异步(asynchronous)。同步可用性保证了主系统和辅助系统上的数据源是一致的,而且在故障转移之后维持完整的连续性。异步可用性不保证主系统和辅助系统数据库是完全同步的。将数据库更改从主系统移到辅助系统的方法会不同,但这个过程会生成一个时间窗口,在这段时间内数据还没有从一个系统迁移到另一个系统。数据量也许会非常小,时间窗口可能会非常短,但您在决定解决方案时必须要考虑这一点。
让我们研究可以向您提供同步或异步故障转移可用性的选项。收起
参与2

查看其它 1 个回答stionmel的回答

stionmelstionmel系统工程师
貌似是IBM的文章吧……
IT分销/经销 · 2010-07-02
浏览783

回答者

stionmel
系统工程师

stionmel 最近回答过的问题

回答状态

  • 发布时间:2010-07-02
  • 关注会员:0 人
  • 回答浏览:783
  • X社区推广