3.9. 为 hdbindexserver 进程故障操作(可选)启用 SAP HANA srServiceStateChanged () hook
当 HANA 检测到 indexserver 进程的问题时,它通过内置的 SAP HANA 中的内置功能来停止并重新启动它来恢复它。
然而,在某些情况下,该服务可能需要很长时间才能进行"停止"阶段。在此期间,系统复制可能会不同步,而 HANA 仍然会继续工作并接受新的连接。最后,该服务完成 stop-and-restart 进程并恢复。
如果在此期间,不等待这个长时间运行的重启,这会带来数据一致性的风险,ChkSrv.py hook 脚本可以响应该情况,并停止 HANA 实例以加快恢复速度。在启用了自动故障切换的设置中,如果次要节点处于健康状态,则实例停止会导致启动接管。否则,恢复会在本地进行,但强制的实例重启会加快它。
在 global.ini 配置文件中配置后,SAP HANA 会为实例中的任何事件调用 ChkSrv.py hook 脚本。脚本处理事件并根据它应用到事件详情的过滤器结果执行操作。这样,它可以区分一个 HANA indexserver 进程,该进程在故障后由 HANA 停止,并从作为实例关闭一部分的相同进程中停止和重新启动。
以下是可以采取的不同可能的操作:
- ignore:此操作仅将解析的事件和决策信息写入专用日志文件,这对于验证 hook 脚本将执行的操作很有用。
-
stop :此操作通过
sapcontrol命令为实例执行安全停止系统。 -
kill :此操作执行带有默认
信号 9 的 HDB kill-<signal> 命令,它可以进行配置。
请注意,停止和终止操作都会导致一个已停止的 HANA 实例,终止在结束速度较快。
此时,集群会注意到 HANA 资源的故障,并按配置的方式对资源做出反应;通常,它重新启动实例,如果启用,它也会处理接管。
3.9.1. 验证 resource-agents-sap-hana 软件包的版本 复制链接链接已复制到粘贴板!
3.9.2. 激活所有 SAP HANA 实例上的 srServiceStateChanged () hook 复制链接链接已复制到粘贴板!
需要在所有 HA 集群节点上激活 srServiceStateChanged () hook 的步骤。
更新每个节点上的 SAP HANA
global.ini文件,以启用 SAP HANA 实例(例如,在/hana/shared/RH1/global/hdb/custom/config/global.ini文件中)使用 hook 脚本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置可选参数,如下所示:
-
action_on_lost(default: ignore) -
stop_timeout(默认值:20) -
kill_signal(默认值:9)
以下是
action_on_lost的可用选项的说明:-
忽略:这将启用该功能,但仅启用日志事件。这可用于监控配置环境中 hook 活动。 -
stop:这会执行安全sapcontrol -nr <nr> -function StopSystem。 -
kill:这会对最快停止执行 HDBkill-<signal>。 -
请注意,
stop_timeout被添加到命令执行 stop 和 kill 操作中,在 kill 操作中使用kill_signal作为HDB kill-<signal> 命令的一部分。
-
通过重新载入
HA/DR供应商,在 HANA 运行时激活新的 hook:hdbnsutil -reloadHADRProviders
[rh1adm]$ hdbnsutil -reloadHADRProvidersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查新的 trace 文件来验证 hook 初始化:
cdtrace cat nameserver_chksrv.trc
[rh1adm]$ cdtrace [rh1adm]$ cat nameserver_chksrv.trcCopy to Clipboard Copied! Toggle word wrap Toggle overflow