排查 Azure 上的 SAP HANA 数据库备份问题

本文针对在 Azure 虚拟机上备份 SAP HANA 数据库时出现的问题提供故障排除信息。 有关目前支持的 SAP HANA 备份方案的详细信息,请参阅方案支持

先决条件和权限

在继续备份之前,请参阅先决条件注册前脚本的功能部分。

常见用户错误

UserErrorHANAInternalRoleNotPresent
错误消息 Azure 备份没有所需的角色特权,无法执行备份和还原操作
可能的原因 如果未为备份用户 (AZUREWLBACKUPHANAUSER) 分配 SAP_INTERNAL_HANA_SUPPORT 角色或者覆盖了该角色,则所有操作都将失败并出现此错误。
建议的操作 在 SAP HANA 实例上下载并运行预注册脚本,或者手动将 SAP_INTERNAL_HANA_SUPPORT 角色分配给备份用户 (AZUREWLBACKUPHANAUSER)。

注意

如果使用的是 HANA 2.0 SPS04 Rev 46 和更高版本,则不会出现此错误,因为这些 HANA 版本中已弃用 SAP_INTERNAL_HANA_SUPPORT 角色。
UserErrorInOpeningHanaOdbcConnection
错误消息 未能连接到 HANA 系统
可能的原因
  • 连接到 HANA 实例失败
  • 系统数据库已脱机
  • 租户数据库脱机
  • 备份用户 (AZUREWLBACKUPHANAUSER) 没有足够的权限/特权。
建议的操作 检查系统是否已启动并正在运行。 如果数据库已启动并正在运行,请确保通过在 SAP HANA 实例上下载并运行预注册脚本来设置所需的权限。
UserErrorHanaInstanceNameInvalid
错误消息 指定的 SAP HANA 实例无效或无法找到
可能的原因
  • 指定的 SAP HANA 实例无效或无法找到。
  • 无法备份单个 Azure VM 上的多个 SAP HANA 实例。
建议的操作
  • 确保 Azure VM 上只有一个 HANA 实例在运行。
  • 在正确的 SAP HANA 实例上运行“发现数据库”窗格中的脚本(也可以在此处找到此脚本)以解决问题。
UserErrorHANALSNValidationFailure
错误消息 备份日志链中断
可能的原因 触发 HANA LSN 日志链中断的原因有很多,包括:
  • Azure 存储调用失败,无法提交备份。
  • 租户数据库已脱机。
  • 扩展升级已终止某个正在进行的备份作业。
  • 在备份期间无法连接到 Azure 存储。
  • SAP HANA 已回滚备份进程中的某个事务。
  • 备份已完成,但尚未在 HANA 系统中使用“成功”状态更新目录。
  • 备份从 Azure 备份的角度看已失败,但从 HANA 的角度看已成功 - 日志备份/目录目标可能已从 backint 更新为文件系统,或者可能已更改 backint 可执行文件。
建议的操作 为了解决此问题,Azure 备份将触发自动修复式完整备份。 尽管这种自动修复式备份正在进行,但 HANA 触发的所有日志备份都将失败并出现 OperationCancelledBecauseConflictingAutohealOperationRunningUserError。 自动修复式完整备份完成后,日志和所有其他备份将开始按预期方式工作。
如果在 24 小时内未看到自动修复式完整备份触发或任何成功的备份(完整/差异/增量),请联系 Microsoft 支持部门。
UserErrorSDCtoMDCUpgradeDetected
错误消息 已检测到 SDC 到 MDC 的升级
可能的原因 将 SDC 系统升级到 MDC 时,备份将会失败并出现此错误。
建议的操作 若要排查并解决该问题,请参阅 SDC 到 MDC 的升级
UserErrorInvalidBackintConfiguration
错误消息 如果未正确更新 Backint 配置,备份将会失败并出现此错误
可能的原因 在运行“配置保护”流期间由 Azure 备份更新的 backint 配置已由客户更改/更新。
建议的操作 检查是否设置了以下 (backint) 参数:
  • [catalog_backup_using_backint:true]
  • [enable_accumulated_catalog_backup:false]
  • [parallel_data_backup_backint_channels:1]
  • [log_backup_timeout_s:900)]
  • [backint_response_timeout:7200]
如果在 HOST 级别存在基于 backint 的参数,请将其删除。 但是,如果在 HOST 级别不存在参数,但在数据库级别手动修改了参数,请确保按上面所示设置数据库级别的值。 或者,在 Azure 门户中运行停止保护并保留备份数据,然后选择“继续备份”。
UserErrorIncompatibleSrcTargetSystemsForRestore
错误消息 还原操作的源系统和目标系统不兼容
可能的原因 如果源和目标 HANA 数据库及系统不兼容,则还原流将会失败并出现此错误。
建议的操作 确保还原方案不属于以下可能的不兼容还原:
案例 1: 在还原过程中无法重命名 SYSTEMDB。
案例 2: 源 - SDC 和目标 - MDC:源数据库无法还原为目标 SYSTEMDB 或租户 DB。
案例 3: 源 - MDC 和目标 - SDC:源数据库(SYSTEMDB 或租户 DB)无法还原到目标。
有关详细信息,请参阅 SAP Support Launchpad 中的说明 1642148。
UserErrorHANAPODoesNotExist
错误消息 为备份配置的数据库不存在
可能的原因 如果删除了已为备份配置的数据库,则针对数据库的所有计划备份和临时备份都将失败。
建议的操作 验证是否已删除该数据库。 重新创建数据库,或停止保护该数据库(保留或不保留数据)。
UserErrorInsufficientPrivilegeOfDatabaseUser
错误消息 Azure 备份没有足够的特权,无法执行备份和还原操作
可能的原因 由预注册脚本创建的备份用户 (AZUREWLBACKUPHANAUSER) 未分配有以下一个或多个角色:
  • 对于 MDC:数据库管理员和备份管理员(适用于 HANA 2.0 SPS05 和更高版本),用于在还原期间创建新数据库。
  • 对于 SDC:备份管理员,用于在还原期间创建新数据库。
  • 目录读取者,用于读取备份目录。
  • SAP_INTERNAL_HANA_SUPPORT,用于访问一些专用表。 仅对 HANA 2.0 SPS04 Rev 46 之前的 SDC 和 MDC 版本是必需的。 对 HANA 2.0 SPS04 Rev 46 和更高版本而言并非必需,因为我们现在会通过 HANA 团队提供的修补程序从公共表中获取所需的信息。
建议的操作 若要解决该问题,请将所需的角色和权限手动添加到备份用户 (AZUREWLBACKUPHANAUSER),或者在 SAP HANA 实例上下载并运行预注册脚本。
UserErrorDatabaseUserPasswordExpired
错误消息 数据库/备份用户的密码已过期
可能的原因 预注册脚本创建的数据库/备份用户不会设置密码的过期时间。 但如果更改了该设置,则可能会出现此错误。
建议的操作 在 SAP HANA 实例上下载并运行预注册脚本以解决该问题。
UserErrorInconsistentSSFS
错误消息 SAP HANA 错误
可能的原因 从 SAP HANA 引擎收到“不一致的安全存储文件系统(SSFS)”错误。
建议的操作 在 SAP HANA 团队的配合下解决此问题。 有关详细信息,请参阅 SAP 说明 0002097613。
UserErrorCannotConnectToAzureActiveDirectoryService
错误消息 无法从 HANA 系统连接到 AAD 服务
可能的原因 备份扩展插件服务帐户的防火墙或代理设置不允许与 AAD 建立出站连接。
建议的操作 修复防火墙或代理设置,以便能够成功与 AAD 建立出站连接。
UserErrorMisConfiguredSslCaStore
错误消息 CA 存储配置不当
可能的原因 备份扩展的插件主机进程无法访问根 CA 存储(在 SLES 中,其位置为 /var/lib/ca-certificates/ca-bundle.pem)。
建议的操作 使用 chmod o+r 还原原始权限,以修复 CA 存储问题。 然后重启插件主机服务,使备份和还原操作成功。
UserErrorBackupFailedAsRemedialBackupInProgress
错误消息 补救性备份正在进行
可能的原因 Azure 备份会触发补救性完整备份来处理 LSN 日志链中断。 尽管这种补救性完整备份正在进行,但通过门户/CLI 触发的备份(完全/差异/增量)失败并出现此错误。
建议的操作 等待补救性完整备份成功完成,然后再触发另一次备份。
OperationCancelledBecauseConflictingOperationRunningUserError
错误消息 有冲突的操作正在进行
可能的原因 通过门户/CLI/本机 HANA 客户端触发了完整/差异/增量备份,但同时另一项完整/差异/增量备份已在进行中。
建议的操作 在触发新的完整/增量备份之前,先等待活动备份作业完成。
OperationCancelledBecauseConflictingAutohealOperationRunning UserError
错误消息 自动修复式完整备份正在进行
可能的原因 Azure 备份会触发自动修复式完整备份来解决 UserErrorHANALSNValidationFailure。 尽管这种自动修复式备份正在进行,但 HANA 触发的所有日志备份都将失败并出现 OperationCancelledBecauseConflictingAutohealOperationRunningUserError。
自动修复式完整备份完成后,日志和所有其他备份将开始按预期方式工作。
建议的操作 在触发新的完整/增量备份之前,先等待自动修复式完整备份完成。
UserErrorHanaPreScriptNotRun
错误消息 预注册脚本未运行
可能的原因 用于设置环境的 SAP HANA 预注册脚本尚未运行。
建议的操作 在 SAP HANA 实例上下载并运行预注册脚本
UserErrorTargetPOExistsOverwriteNotSpecified
错误消息 无法覆盖还原操作的目标数据库
可能的原因 目标数据库存在,但无法覆盖。 未通过门户/CLI 在“还原”流中设置强制覆盖。
建议的操作 在选中“强制覆盖”选项的情况下还原数据库,或还原到其他目标数据库。
UserErrorRecoverySysScriptFailedToTriggerRestore
错误消息 无法成功运行 RecoverySys.py 来还原系统数据库
可能的原因 系统数据库还原失败的可能原因包括:
  • Azure 备份在 HANA 计算机上找不到 Recoverysys.py。 如果未正确设置 HANA 环境,则会发生这种情况。
  • Recoverysys.py 存在,但触发此脚本后无法调用 HANA 来执行还原。
  • Recoverysys.py 已成功调用 HANA 来执行还原,但 HANA 无法还原。
建议的操作
  • 对于问题 1,请在 SAP HANA 团队的配合下解决该问题。
  • 对于问题 2 和 3,请在 sid-adm 提示符下运行 HDSetting.sh 命令来查看日志跟踪。 例如 /usr/sap/SID/HDB00/HDBSetting.sh。
与 SAP HANA 团队共享这些调查结果来解决问题。
UserErrorDBNameNotInCorrectFormat
错误消息 已还原数据库名称的格式不正确
可能的原因 提供的已还原数据库名称未采用可接受/预期的格式。
建议的操作 确保已还原数据库的名称以字母开头,并且不包含除数字或下划线以外的任何符号。
该名称最多只能包含 127 个字符,且不能以“SYS_”开头_"。
UserErrorDefaultSidAdmDirectoryChanged
错误消息 默认的 sid-adm 目录已更改
可能的原因 默认的 sid-adm 目录已更改,并且此默认目录中未提供 HDBSetting.sh 。
建议的操作 如果 HXE 是 SID,请确保以 sid-adm 用户身份将环境变量 HOME 设置为 /usr/sap/HXE/home。
UserErrorHDBsettingsScriptNotFound
错误消息 找不到 HDBSetting.sh 文件
可能的原因 由于 <sid>adm 用户环境找不到用于触发还原操作的 HDBsettings.sh 文件,系统数据库还原失败 。
建议的操作 在 SAP HANA 团队的配合下解决此问题。

如果 HXE 是 SID,请确保以 sid-adm 用户身份将环境变量 HOME 设置为 /usr/sap/HXE/home。

还原检查

单容器数据库 (SDC) 还原

在将 HANA 的单容器数据库 (SDC) 还原到另一台 SDC 计算机时请小心提供输入。 数据库名称应以小写字母提供,并在括号中追加“sdc”。 HANA 实例将以大写字母显示。

假设备份了 SDC HANA 实例“H21”。 备份项页会将备份项名称显示为“h21(sdc)”。 如果尝试将此数据库还原到另一个目标 SDC(如 H11),则需要提供以下输入。

还原的 SDC 数据库名称

请注意以下几点:

  • 默认情况下会使用备份项名称填充还原的数据库名称。 在本例中为 h21(sdc)。
  • 选择 H11 作为目标不会自动更改已还原的数据库名称。 应将其编辑为 h11(sdc) 。 对于 SDC,还原的数据库名称将是小写字母形式的目标实例 ID,并且在括号中追加了“sdc”。
  • 由于 SDC 只能包含一个数据库,因此还需要选择相应的复选框,以允许使用恢复点数据替代现有的数据库数据。
  • 在 Linux 中,此项输入区分大小写。 因此请小心保留大小写。

多容器数据库 (MDC) 还原

在 HANA 的多容器数据库中,标准配置是 SYSTEMDB 加上一个或多个租户数据库。 还原整个 SAP HANA 实例意味着还原 SYSTEMDB 和租户数据库。 需要先还原 SYSTEMDB,然后继续还原租户数据库。 还原系统数据库实质上旨在替代所选目标上的系统信息。 这种还原还会替代目标实例中与 BackInt 相关的信息。 因此,在将系统数据库还原到目标实例后,请再次运行注册前脚本。 只有这样,随后的租户 DB 还原才会成功。

备份复制的 VM

方案 1

使用 Azure Site Recovery 或 Azure VM 备份复制原始 VM。 新 VM 是为模拟旧的 VM 而构建的。 也就是说,设置完全相同。 (这是因为原始 VM 已被删除,并且已通过 VM 备份或 Azure Site Recovery 完成了还原)。

此方案可包含两种可能的情况。 了解如何在这两种情况下备份复制的 VM:

  1. 创建的新 VM 与已删除的 VM 同名,并且位于已删除的 VM 所属的资源组和订阅中。

    • 此扩展已在 VM 中,但对所有服务都不可见
    • 运行预注册脚本
    • 在 Azure 门户中为同一计算机重新注册扩展(“备份” -> “查看详细信息”->“选择相关 Azure VM”->“重新注册”)
    • 然后,现有的已备份数据库(源自已删除的 VM)应该会成功开始备份
  2. 创建的新 VM 会出现以下两种情况之一:

    • 名称与已删除的 VM 不同
    • 名称与已删除的 VM 相同,但资源组或订阅不同于已删除的 VM

    如果出现上述情况,请执行以下步骤:

    • 此扩展已在 VM 中,但对所有服务都不可见
    • 运行预注册脚本
    • 如果发现并保护新数据库,你将在门户中看到重复的活动数据库。 为避免出现这种情况,请对旧数据库停止保护并保留数据。 然后继续执行其余步骤。
    • 发现数据库以启用备份
    • 对这些数据库启用备份
    • 现有的已备份数据库(源自已删除的 VM)将继续存储在保管库中(根据相应策略保留其备份)

方案 2

使用 Azure Site Recovery 或 Azure VM 备份复制原始 VM。 新 VM 是用模板内容构建的。 这是一个新的 VM,具有新的 SID。

请按照以下步骤对新 VM 启用备份:

  • 此扩展已在 VM 上,但对所有服务都不可见
  • 运行预注册脚本。 根据新 VM 的 SID,可能会出现两种情况:
    • 原始 VM 和新 VM 具有相同的 SID。 预注册脚本将成功运行。
    • 原始 VM 和新 VM 具有不同的 SID。 预注册脚本将失败。 请联系支持人员以获取此方案的帮助。
  • 发现要备份的数据库
  • 对这些数据库启用备份

在同一 VM 上升级 SDC 版本或 MDC 版本

要升级 OS、更改 SDC 版本或更改 MDC 版本,但不会导致 SID 更改,可以按以下方式处理:

从 SDC 升级到 MDC(不更改 SID)

要从 SDC 升级到 MDC 而不导致 SID 更改,可以按如下方式进行处理:

  • 确保新的 MDC 版本当前受 Azure 备份支持
  • 对旧的 SDC 数据库停止保护并保留数据
  • 执行升级。 完成后,HANA 系统现在便是包含一个系统 DB 和多个租户 DB 的 MDC
  • 重新运行预注册脚本
  • 在 Azure 门户中为同一计算机重新注册扩展(“备份” -> “查看详细信息”->“选择相关 Azure VM”->“重新注册”)
  • 针对同一 VM 选择“重新发现 DB”。 此操作应将步骤 3 中的新 DB 显示为 SYSTEMDB 和租户 DB,而不是 SDC
  • 旧的 SDC 数据库将继续存在于保管库中,并根据策略保留旧的已备份数据
  • 为这些数据库配置备份

从 SDC 升级到 MDC(更改 SID)

要从 SDC 升级到 MDC 并更改 SID,可以按如下方式进行处理:

  • 确保新的 MDC 版本当前受 Azure 备份支持
  • 对旧的 SDC 数据库 停止保护并保留数据
  • 执行升级。 完成后,HANA 系统现在便是包含一个系统 DB 和多个租户 DB 的 MDC
  • 重新运行具有正确详细信息(新 SID 和 MDC)的预注册脚本。 由于 SID 发生了更改,你可能会遇到阻碍脚本成功运行的问题。 如果遇到问题,请联系 Azure 备份支持部门。
  • 在 Azure 门户中为同一计算机重新注册扩展(“备份” -> “查看详细信息”->“选择相关 Azure VM”->“重新注册”)
  • 针对同一 VM 选择“重新发现 DB”。 此操作应将步骤 3 中的新 DB 显示为 SYSTEMDB 和租户 DB,而不是 SDC
  • 旧的 SDC 数据库将继续位于保管库中,并根据相应策略保留旧的备份数据
  • 为这些数据库配置备份

重新注册失败

在触发重新注册操作之前,请检查是否存在以下一种或多种症状:

  • VM 上所有操作(例如备份、还原和配置备份)都失败,并出现以下某一错误代码:WorkloadExtensionNotReachable、UserErrorWorkloadExtensionNotInstalled、WorkloadExtensionNotPresent、WorkloadExtensionDidntDequeueMsg。

  • 如果备份项的“备份状态”区域显示“无法访问”,请排除可能导致相同状态的所有其他原因 :

    • 缺少对 VM 执行与备份相关的操作的权限
    • VM 已关闭,因此无法进行备份
    • 网络问题

由于下面的一个或多个原因,可能会出现这些症状:

  • 扩展从门户中删除或卸载。
  • VM 通过就地磁盘还原及时还原。
  • 该 VM 已关闭较长时间,因此其上的扩展配置已过期。
  • VM 被删除,并且在已删除 VM 所在的资源组中创建了另一个具有相同名称的 VM。

在上述方案中,我们建议你对 VM 触发重新注册操作。

后续步骤