DB2 Text Search,第 4 部分: 使用 DB2 Text Search 实现高可用性设置

规划文本索引设置时的考虑事项

DB2 Text Search 支持用户在 IBM® DB2® for Linux®, UNIX®, and Windows® (LUW) 中创建全文搜索应用程序。在需要高可用性全文搜索应用程序的场景中,必须考虑故障转移策略,DB2 Text Search 的设置涉及到两个组件:DB2 数据库服务器和文本搜索服务器。文本搜索索引目录数据和文本搜索索引管理数据均存储在数据库中,并包含在 DB2 High Availability Disaster Recovery (HADR) 策略中。然而,文本搜索索引集合是由文本搜索服务器管理的,并且位于文件系统中。因此,扩展数据库 HADR 策略需要提供文本搜索服务器管理的对象。

Marion Behnen, DB2 Text Search 开发, IBM

Marion Behnen 是 IBM Software Group 的高级软件工程师,担任 DB2 全文本搜索技术主管。她拥有超过 20 年的数据库应用程序开发、企业报告、数据仓库和业务流程集成的经验。在加入 IBM 之前,她参与过与业务流程和数据集成相关的各个方面的工作,尤其是制造业。



Kavya Rao, DB2 Text Search 支持, IBM

Kavya Rao 是 IBM 印度软件实验室的一名软件工程师。她是认证的 DB2 管理员和支持专家,拥有多年的 DB2 全文本搜索经验,包括 DB2 Net Search Extender 和 DB2 Text Search。



2012 年 6 月 21 日

免费下载:IBM® DB2® Express-C 10.1 免费版 或者 DB2® 10.1 for Linux®, UNIX®, and Windows® 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

DB2 Text Search 索引被托管在 DB2 数据库中,并链接到文本索引集数据,该数据由为数据库实例配置的文本搜索服务器管理。

数据库故障会影响文本搜索索引集的一致性,并且数据库服务器和文本搜索服务器会受到硬件、软件、网络故障、其他人为或环境因素(如电源故障)的影响。一个全面的高可用性 (HA) 解决方案必须确保系统中的所有组件在规划的时间范围内是可用的,并能重新将数据库内容与备用系统上的文本搜索索引内容进行同步。

下一小节将讨论在高可用场景中支持文本搜索设置的基本元素。这些元素都基于 DB2 HADR 场景,在该场景中,主服务器通过 TCP/IP 将日志转输到备用服务器。事务日志将被传输到备用服务器并得到应用。主服务器充当 TCP 服务器,而备用服务器充当客户端。如果主服务器发生故障,备用服务器会接管主服务器的工作。

图 1. 高可用性场景中的文本搜索基本设置
图像显示了主服务器如何通过数据同步连接到备用服务器

故障转移场景

为进行文本搜索而启用的 DB2 数据库通过本地主机 TCP/IP 连接到文本搜索服务器。文本搜索服务器是作为一个单独的流程运行的,并负责管理基于文件系统的文本搜索索引集。

一般情况下,可以对下列场景进行区分:

  1. 故障影响了数据库可用性并导致故障转移到备用服务器。
  2. 故障影响了文本搜索服务器的可用性,但是数据库服务器不受影响。
  3. 故障影响了文本搜索索引集的可用性。

下面小节的讨论重点是,在将数据库故障转移到备用服务器后,如何确保能够以一致的方式执行文本搜索功能。这里还简要论述了另一种情况。

文本搜索服务器可用性

假设文本搜索服务器的安装与配置均正确,那么导致文本搜索服务器不可用的可能原因如下:

  • 安全系统更改(比如身份验证或访问权限更改)可能妨碍文本搜索服务器的启动。
  • 端口或套接字配置等网络问题可能导致通信失败。
  • 运行时问题,如 Java™ 流程、挂起、终止或崩溃。

在上述每一种情况下,都必须在主服务器上解决这些问题,并且必须使用正确的权限和配置来重启与实例相关联的文本搜索服务器。

文本搜索索引可用性

如果文本搜索索引不可用,那么与之最密切相关的两个场景是:

  • 硬件错误:如自定义位置发生磁盘损坏。此类错误并非特定于文本搜索索引。例如,通过选择支持磁盘可用性成熟技术的磁盘设备,应该可以解决此类硬件错误。
  • 人为错误:如执行计划外的集合清除。

要解决索引可用性,HA 策略必须包括一个允许恢复文本搜索索引集的备份计划。文件权限的变更可能会导致文本搜索索引无法用于访问,但是此场景是与本上下文无关的场景。


用于数据库故障转移场景的文本搜索服务器设置

如果托管备用数据库服务器的机器拥有与托管主数据库系统机器不同的资源属性,则有必要对文本搜索服务器进行不同的配置。例如,影响资源使用的配置设置,或者用于数据库服务器与文本搜索服务器之间的本地主机 TCP/IP 连接的端口号。

为了顺利完成过渡,请准备一个配置脚本,以调整备用服务搜索服务器的值。当发生故障转移时:将当前文本搜索服务器配置从主系统传送到备用系统,并在备用系统上启动文本搜索服务器之前运行配置脚本来修改配置值。

文本搜索服务器的重新配置和启动可能被集成到作为自动管理方案一部分的某个脚本中。注意,HADR 配置设置不能应用于文本搜索索引,但是它们可能会影响集成的策略。例如,如果将 logindexbuild 参数设置为 ON,则将无法跟踪文本搜索索引版本。

HADR 同步模式的选择可能会增加文本搜索更新失败的风险。当配置一个同步模式时(ASYNC 或 SUPERASYNC),可能会丢失备用系统上最近发生的事务。在这种情况下,文本搜索索引更新可能由文本搜索服务器提交并在主服务器上进行提交,但是不能将在数据库中完成文本搜索索引更新的事务应用于从属服务器 (secondary server)。应该像处理非高可用性设置中的相应更新失败那样处理此场景,下一个增值式更新将重新处理该数据。

对于所有的 HA 场景,要分布磁盘 I/O 工作负载,请不要在日志文件系统、表空间文件和文本搜索索引集之间共享设备。


数据库故障转移场景中的文本搜索索引

对文本搜索索引使用共享磁盘

可以在自定义位置中创建文本搜索索引集。此位置可以位于能从主服务器以及从属服务器访问的共享磁盘上。必须以一致的方式为主要系统和从属系统创建文件系统,从而使用相同的绝对路径信息访问集合。

图 2. 共享磁盘上的文本索引
图像显示了如何将文本索引存储于共享磁盘之上,从而允许从备用文本服务器访问它

基于数据库故障转移的理由,主系统上的文本搜索服务器流程可能仍然处于激活状态。如果该流程仍处于激活状态,在备用系统上启动文本搜索服务器之前,请务必先关闭主系统上的文本搜索服务器。

该设置的优点是,只需要为一组文本搜索索引提供空间,并且拥有快速运行时间,因为备用系统上的文本搜索服务器能够在启动后立即访问该集合。缺点是使用共享磁盘可能会使速度变得更慢。

要在故障转移系统上恢复全文搜索,请执行以下操作:

  • 刷新文本搜索服务器配置。
  • 识别并处理中断的文本搜索管理操作(如果有的话)。
  • 启动文本搜索服务器。

在备用系统上使用文本搜索索引副本

在备用服务器上启用文本搜索索引集的另一个方法是将文本搜索索引文件传送给备用系统。此外,还必须在备用系统上创建文件系统和文件夹结构以映射主系统。

图 3. 备用系统上的文本索引副本
图像显示了如何将文本索引复制到备用系统

与备份注意事项相同,可能要将所有文件传递给备用系统或仅将更改的文件传递给备用系统。在备用与复制场景中,可以使用备份策略,这样做可以确保每次索引更新后传递(更改的)文本搜索索引文件,或者卷影临时表 (shadow staging table) 保留已处理的临时表条目,直到传递结束后。在使用这类策略时,备用系统上的数据库内容和文本搜索索引集的内容会是一致的。(参阅本系列文章的 DB2 Text Search,第 3 部分:规划文本索引备份时的考虑事项,获取有关备份策略和临时表注意事项的信息。)

在此解决方案中,备用系统实质上是用作最近文本搜索索引备份的存储库。要在故障转移系统上恢复全文搜索,请执行以下操作:

  • 刷新文本搜索服务器配置。
  • 识别并处理中断的文本搜索管理操作(如果有的话)。
  • 如果使用临时表副本或卷影临时表,那么请将条目移回到原来的临时表中。
  • 启动文本搜索服务器。
  • 运行增值式文本搜索索引更新,以便应用来自临时表的更改。

对备用系统上的文本搜索索引使用恢复策略

如果时间不是关键因素,并且备用服务器不适合充当备份存储库,那么 “备用 + 副本” 场景的一个变体是使用 DB2 HADR 管理数据库故障转移,并从备份中恢复文本搜索索引集。

图 4. 使用一个索引备份来恢复备用系统
图像显示了为备用系统恢复的文本索引

要在故障转移系统中恢复全文搜索,请执行以下操作:

  • 刷新文本搜索服务器配置。
  • 从当前备份中恢复文本搜索索引集。
  • 识别并处理中断的文本搜索管理操作(如果有的话)。
  • 如果使用临时表副本或卷影临时表,那么请将条目移回到原来的临时表中。
  • 启动文本搜索服务器。
  • 运行增值式文本搜索索引更新,以便应用来自临时表的更改。

处理中断的管理操作

在备用服务器上启用文本搜索的一个关键元素是:确保备用系统上的文本搜索服务器的配置与主系统上的文本搜索服务器的配置相匹配。与数据库管理配置和数据库配置相似,文本搜索服务器配置数据无法自动从主系统传送到备用系统,必须手动处理它。文本搜索服务器配置数据处于数据库实例级别上,并持久保存在位于 .../sqllib/db2tss/config 下的配置文件中。

与使用共享磁盘、“备用 + 副本” 解决方案还是使用 “备用 +恢复” 解决方案在故障转移场景中提供文本搜索索引无关,从主服务器故障转移到备用服务器可能涉及到不完整的文本搜索索引管理操作。这意味着数据库内容与文本搜索索引内容以及数据库内容与文本搜索服务器索引元数据之间应该保持一致。

例如,无法在文本搜索服务器上提交某个操作,并且无法在出故障时在数据库服务器上提交某个操作。另一个示例是,可能已经在文本搜索服务器上提交某个操作,但未在数据库中提交它,并且数据库未向文本搜索服务器发送回滚或取消操作请求。

在启动文本搜索服务器来恢复备用系统上的操作前,请认真查看中断操作的命令锁视图 (command lock view):

  1. 创建索引。如果出现数据库故障 CREATE INDEX FOR TEXT 操作处于激活状态,那么请执行以下操作:
    • 移除命令锁。
    • 使用 CLEANUP FOR TEXT 查找并移除多余的集合条目。启动文本服务器不依赖于此步骤。可以在方便时执行清理操作。
  2. 拖放索引。如果在数据库发生故障时 DROP INDEX FOR TEXT 操作处于激活状态,那么请执行以下操作:
    • 移除命令锁。
    • 重复此操作。
  3. 更新索引。如果在数据库发生故障时 UPDATE INDEX FOR TEXT 操作处于激活状态,那么请执行以下操作:
    • 移除命令锁。
    • 重新启动文本搜索索引更新,以便重新处理此数据。

    此文本搜索索引集的状态将是故障发生前的最后提交状态。文本搜索索引的最后的备份状态连同已保存的临时表内容应该与最后一次成功的增量式更新相匹配。

    如果更新操作是由文本搜索服务器提交的,那么集合将包含已更新的数据,即使索引更新在数据库中被标记为失败。在这种情况下,如果更新操作还没有提交数据库中的所有事务(除了命令锁更新外),那么可以将相同的更新范围应用于发生故障时处理的下一个索引更新。


结束语

要将文本搜索索引包括了到 DB2 的高可用性策略中,则有必要确保为文本搜索正确配置了备用系统,并拥有对文本搜索索引集的访问权。请牢记以下几点:

  • 备用系统上的文本搜索服务器配置必须与主系统上的配置相匹配,处理系统资源设置的那些配置值除外。
  • 从属系统上的文本服务器必须有权访问与主服务器相匹配的文件结构中的文本搜索索引集。
  • 在设置共享磁盘时,不允许主文本服务器和从属文本服务器同时使用文本索引。

下载

描述名字大小
简单 HA 样例Sample_HA.txt2KB

参考资料

学习

获得产品和技术

  • 现在可以免费使用 DB2。下载 IBM 软件下载:IBM DB2 Express-C 10.1,这是为社区提供的 DB2 Express Edition 的免费版本,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。
  • 使用可以直接从 developerWorks 下载的 IBM 产品评估试用版软件 构建您的下一个开发项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=822186
ArticleTitle=DB2 Text Search,第 4 部分: 使用 DB2 Text Search 实现高可用性设置
publish-date=06212012