5.5. 为 srConnectionChanged ()hook 方法配置 HanaSR HA/DR 供应商


当使用 SAP HANA 2.0 SPS0 或更高版本在 HA 集群中配置 HANA 实例时,您必须启用并测试 SAP HANA srConnectionChanged () hook 方法,然后才能继续集群设置。

先决条件

  • 已安装 sap-hana-ha 软件包。
  • 您的 HANA 实例尚未由集群管理。否则,使用 更新 SAP HANA 实例的 维护流程来确保集群在配置 hook 脚本过程中不会干扰。

流程

  1. 以 < sid>adm 用户身份停止所有节点上的 HANA 实例:

    rh1adm $ HDB stop
    Copy to Clipboard Toggle word wrap
  2. 在 HANA 实例完全停止 的所有节点上验证为 <sid>adm

    rh1adm $ sapcontrol -nr ${TINSTANCE} -function GetProcessList | column -s ',' -t
    ...
    name                  description   dispstatus   textstatus   starttime   elapsedtime   pid
    hdbdaemon             HDB Daemon    GRAY         Stopped                                5381
    Copy to Clipboard Toggle word wrap
    • <instance > 替换为您的 HANA 实例号。
  3. 使用别名 cdcoc (内置在 & lt;sid>adm 用户 shell 中),以 < sid>adm 用户身份更改到 HANA 配置目录。这会自动更改 /hana/shared/<SID>/global/hdb/custom/config/ 路径:

    rh1adm $ cdcoc
    Copy to Clipboard Toggle word wrap
  4. 更新 SAP HANA 实例的 global.ini 文件,以配置 HanaSR hook。编辑所有 HANA 实例节点上的配置文件并添加以下配置:

    [ha_dr_provider_hanasr]
    provider = HanaSR
    path = /usr/share/sap-hana-ha/
    execution_order = 1
    
    [trace]
    ha_dr_hanasr = info
    Copy to Clipboard Toggle word wrap

    execution_order 设置为 1,以确保始终以最高优先级执行 HanaSR hook。

  5. 可选:当您还想为对 hdbindexserver 失败时采取行动配置可选的 ChkSrv hook 时,您可以同时添加对 global.ini 的更改,请参阅 为 srServiceStateChanged ()hook 方法配置 ChkSrv HA/DR 供应商中的 第 1 步:

    [ha_dr_provider_hanasr]
    provider = HanaSR
    path = /usr/share/sap-hana-ha/
    execution_order = 1
    
    [ha_dr_provider_chksrv]
    provider = ChkSrv
    path = /usr/share/sap-hana-ha/
    execution_order = 2
    action_on_lost = stop
    
    [trace]
    ha_dr_hanasr = info
    ha_dr_chksrv = info
    Copy to Clipboard Toggle word wrap
  6. root 用户身份在每个集群节点上创建文件 /etc/sudoers.d/20-saphana,其内容如下:这些命令特权允许 &lt ;sid>adm 用户更新某些集群节点属性,作为 HanaSR hook 执行的一部分:

    [root]# visudo -f /etc/sudoers.d/20-saphana
    <sid>adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_*
    Defaults:<sid>adm !requiretty
    Copy to Clipboard Toggle word wrap
  7. 在两个集群节点上手动启动 HANA 实例,而不启动 HA 集群。以 &lt ;sid>adm 身份运行

    rh1adm $ HDB start
    Copy to Clipboard Toggle word wrap

验证

  1. 以 < sid>adm 用户身份更改到 SAP HANA 目录,其中存储了 trace 日志文件。使用命令别名 cdtrace,它内置在 < sid>adm 用户 shell 中:

    rh1adm $ cdtrace
    Copy to Clipboard Toggle word wrap
  2. 检查 HANA nameserver 服务日志中是否有 HA/DR 供应商加载消息:

    1. 如果只配置 HanaSR 供应商:

      rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_*
      loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
      Copy to Clipboard Toggle word wrap
    2. 如果也实施了可选的 ChkSrv 供应商:

      rh1adm $ grep -he "loading HA/DR Provider.*" nameserver_*
      loading HA/DR Provider 'ChkSrv' from /usr/share/sap-hana-ha/
      loading HA/DR Provider 'HanaSR' from /usr/share/sap-hana-ha/
      Copy to Clipboard Toggle word wrap
  3. 在系统中以 root 用户身份验证 sudo 命令是否成功执行的安全日志。如果 sudoers 文件不正确,则执行 sudo 命令时会记录一个错误:

    [root]# grep -e 'sudo.*crm_attribute.*' /var/log/secure
     sudo[4267]:  rh1adm : PWD=/hana/shared/RH1/HDB02/node1 ; USER=root ; COMMAND=/usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SFAIL -t crm_config -s SAPHanaSR
     sudo[4319]:  rh1adm : PWD=/hana/shared/RH1/HDB02/node1 ; USER=root ; COMMAND=/usr/sbin/crm_attribute -n hana_rh1_site_srHook_DC2 -v SOK -t crm_config -s SAPHanaSR
    Copy to Clipboard Toggle word wrap

    在 HANA 实例在两个节点上启动后,您通常会看到几个 srHook 属性更新。首先是设置 SFAIL,因为主启动后会立即设置 SFAIL,因为它尚未与次要同步,目前仍在同步。

    在系统复制状态最终更改为完全同步后,HANA 事件会触发对 SOK 的最后一个更新。

  4. 如果还没有同时完成,在第二个实例上重复验证步骤 1-2。步骤 3 的 sudo 日志消息仅在发送系统复制事件的主实例节点上可见。
  5. 检查任何节点上的集群属性,并验证 hana_<sid>_site_srHook_<DC2&gt; 属性的值是否已如预期更新:

    [root]# cibadmin --query | grep -e 'SAPHanaSR.*srHook'
            <nvpair id="SAPHanaSR-hana_rh1_site_srHook_DC2" name="hana_rh1_site_srHook_DC2" value="SOK"/>
    Copy to Clipboard Toggle word wrap
    • 当 HANA 系统复制处于 ACTIVE 状态时,会设置 SOK,这意味着已建立并完全同步。
    • 当系统复制处于任何其他状态时,会设置 SFAIL

故障排除

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat