1.4. SAP HANA HA/DR 供应商 hook


当前版本的 SAP HANA 以 hook 的形式提供了一个 API,允许 HANA 实例为特定事件发送通知,如丢失或建立系统复制。对于每个事件,HANA 实例会调用配置的 hook,也称为 HA/DR 供应商。hook 是自定义 Python 脚本,用于处理 HANA 发送的事件,脚本可以根据事件信息触发不同的操作。

您必须将 HA/DR 供应商定义添加到 HANA 全局配置中,以启用为某些事件触发额外操作所需的功能。

HanaSR 用于 srConnectionChanged () hook 方法

处理 srConnectionChanged () hook 方法需要 HanaSR hook。此方法供 primary HANA 实例用于 HANA 系统复制状态的任何更改的通知。当 HANA 系统复制相关事件时,主 HANA 实例会调用 HanaSR HA/DR 供应商。然后,hook 脚本 HanaSR.py 为系统复制状态详情解析 srConnectionChanged () 事件,因此它会更新 srHook 集群属性。资源代理使用此属性来评估环境健康状况并做出决策。系统复制或同步状态的值定义集群是否在同一节点上恢复失败的主实例,或者它触发到次要状态。只有系统复制完全同步时,才会触发接管,这意味着 HANA 数据在 HANA 站点之间保持一致。

重要

您必须配置 HanaSR hook,以启用 srConnectionChanged () hook 方法,以便正常工作并完全支持 HA 集群设置。

srServiceStateChanged () hook 方法的 ChkSrv

当 HANA indexserver 检测到一个问题时,通过 HANA indexserver 处理它通过内部机制自动停止并重启 hdbindexserver 服务。

但是,对于非常大的 HANA 实例,hdbindexserver 服务可能需要很长时间才能用于此恢复过程的停止阶段。虽然 HANA 将这一服务降级报告为 HANA 环境中的错误,但在该时间内,如果实例中其他操作失败,则情况会给数据一致性带来风险。要改进无法预计的服务恢复时间,您可以将 ChkSrv hook 配置为停止或终止整个受影响的 HANA 实例。

在启用了自动故障切换(PREFER_SITE_TAKEOVER=true)的设置中,如果次要节点处于健康状态,则实例停止会导致接管。否则,实例恢复在本地进行,但强制的本地实例重启会加快进程。

当发生事件时,HANA 实例会调用 ChkSrv hook。hook 脚本 ChkSrv.py 处理 srServiceStateChanged () hook 方法,并根据它应用到事件详情的过滤器执行操作。这样,ChkSrv.py hook 脚本可以区分一个 HANA hdbindexserver 进程,该进程在因预期实例关闭的一部分而被 HANA 停止并重新启动。当 hook 脚本确定事件是由失败导致的,它会触发配置的操作。

ChkSrv.py hook 脚本具有多个选项,用于定义检测到 indexserver 失败事件时发生的情况:

  • ignore

    此操作仅将解析的事件和决策信息写入专用日志文件。这对于测试并验证 hook 脚本在激活 停止 或终止操作时将执行的操作非常有用。

  • stop

    此操作通过 sapcontrol 命令为实例执行安全停止系统。

  • kill

    此操作执行 HDB kill-<signal&gt; 命令,它带有默认的信号 9,它可以进行配置。结果与使用 stop 时的结果相同,但可能会更快。

注意

任何 indexserver 故障都由 HANA 单独处理。每个 indexserver 问题始终都会触发相同的进程。

启用 srServiceStateChanged () hook 是可选的。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat