对 AWS Backint Agent for SAP HANA 进行故障排除 - SAP HANA on AWS

对 AWS Backint Agent for SAP HANA 进行故障排除

以下文档可帮助您排查 AWS Backint Agent for SAP HANA 安装或备份可能存在的问题。

Agent 日志

要找到日志来帮助您排查错误和故障,请检查以下位置。

Agent 日志

{INSTALLATION DIRECTORY}/aws-backint-agent/aws-backint-agent.log

系统数据库备份/恢复日志

/usr/sap/<SID>/HDB<Instance No>/<hostname>/trace/backup.log
/usr/sap/<SID>/HDB<Instance No>/<hostname>/trace/backint.log

租户数据库备份/恢复日志

/usr/sap/<SID>/HDB<Instance No>/<hostname>/trace/DB_<TENANT>/backup.log
/usr/sap/<SID>/HDB<Instance No>/<hostname>/trace/DB_<TENANT>/backint.log

安装

问题:安装 AWS Backint Agent 时返回了错误。

返回的错误:

SyntaxError: Non-UTF-8 code starting with '\xf3' in file install-aws-backint-agent on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  • 根本原因:用户环境中只安装了 Python 版本 3。

  • 解决方案:运行以下命令,以安装 Python 版本 2 并创建指向 usr/bin/python 的符号链接。

    yum install -y python2
ln -s /usr/bin/python2.7 /usr/bin/python

问题:无法使用 SSM 文档查看为安装列出的实例。

  • 根本原因

    1. 实例上未安装 SSM 代理。

    2. 如果安装了 SSM 代理,则实例未运行或实例上的 SSM 代理未运行。

    3. 实例上安装的 SSM 代理的版本早于 2.3.274.0。

  • 解决方法:按照练习在实例上安装或更新 SSM 代理中列出的步骤操作。您可以使用以下命令验证 SSM 代理是否正在运行。

    sudo systemctl status amazon-ssm-agent

问题:使用 SSM 安装文档时返回了以下错误。

failed to download manifest - failed to retrieve package document description: InvalidDocument: Document with name AWSBackintAgent with version x does not exist.

  • 根本原因:输入了不受支持的 AWS Backint Agent 版本。

  • 解决方案:查看 AWS Backint Agent 的版本历史记录。有关更多信息,请参阅 AWS Backint Agent 的版本历史记录

备份和恢复

问题:AccessDenied 出现在代理日志中。

  • 根本原因

    1. EC2 实例的 IAM 角色没有访问 S3 存储桶的适当权限。

    2. 代理配置文件没有将 S3BucketOwnerAccountID 包括在双引号内。S3BucketOwnerAccountID 是 12 位 AWS 账户 ID。

    3. S3 存储桶不归 S3BucketOwnerAccountID 提供的账户所有。

    4. S3BucketOwnerAccountID 提供的 S3 存储桶在 2019 年 5 月之前创建。

  • 解决方案:验证安装 AWS Backint Agent 的先决条件步骤

问题:由于 S3 连接问题导致备份或恢复失败

  • 根本原因:附加到实例的 IAM 角色没有访问 S3 存储桶的适当权限。

  • 解决方案:验证安装 AWS Backint Agent 的先决条件步骤

问题:代理日志显示 Backint cannot execute hdbbackintNo such file or directory

  • 根本原因

    1. 如果您是手动安装代理,则为代理可执行文件创建符号链接未成功。

    2. 如果您是使用 SSM 代理,则在创建符号链接时代理的第 2 步失败。您可以通过查看 RunCommand 实施详细信息来验证这一点。

  • 解决方法:验证您是否正确遵循了本文档中的安装步骤

问题:从 SAP HANA 控制台启动备份时显示以下错误:

Could not start backup for system <SID> DBC: [447]: backup could not be completed: [110091] Invalid path selection for data backup using backint: /usr/sap/<SID>/SYS/global/hdb/backint/COMPLETE_DATA_BACKUP must start with /usr/sap/<SID>/SYS/global/hdb/backint/DB_<TENANT>

  • 根本原因:将 SAP HANA 系统添加到 SAP HANA Studio 时,您选择了单容器模式,而不是多容器模式。

  • 解决方法:将 SAP HANA 系统添加到 SAP HANA Studio,选择多容器模式,然后尝试再次启动备份。有关更多详细信息,请参阅 {https---launchpad-support-sap-com---notes-2803753} [使用 Backint 进行数据备份的路径选择无效](需要门户访问权限)。

问题:备份失败,aws-backint-agent.log 中显示了以下错误:

Error creating uploadId: AuthorizationHeaderMalformed: The authorization header is malformed; the region '<region id>' is wrong; expecting '<region id>'

  • 根本原因:您在 aws-backint-agent-config.yaml 配置文件中为 AwsRegion 参数指定了不正确的区域 ID。

  • 解决方案:指定 Amazon S3 存储桶的 AWS 区域,然后再次启动备份。您可以从 Amazon S3 控制台找到创建 Amazon S3 存储桶的区域。

问题:任何 AWS Backint Agent 操作都会失败,并且 aws-backint-agent.log 中显示了以下错误之一:

`"`Error creating upload id for bucket:<mys3bucket>" `

"NoCredentialProviders: no valid providers in chain.

  • 潜在根本原因:未向您的 Amazon EC2 实例附加任何 IAM 角色。

  • 解决方案:AWS Backint Agent 要求向您的 EC2 实例附加 IAM 角色,以在备份和还原操作期间访问 AWS 资源。将 IAM 角色附加到您的 EC2 实例,然后再次尝试执行操作。有关更多信息,请参阅安装 AWS Backint Agent 的先决条件

  • 潜在的根本原因:对运行 Agent 的 HANA 实例使用代理导致了 Agent 失败。

  • 解决方案:对运行 Agent 的 HANA 实例使用代理时,请勿对实例元数据调用使用代理,否则该调用将挂起。无法通过代理获取实例元数据信息,因此必须将其排除在外。更新位于 {INSTALLATION DIRECTORY}/aws-backint-agent-launcher.sh 的启动程序脚本以指定 169.254.169.254 作为 no_proxy 主机。

    # cat aws-backint-agent-launcher.sh
    #!/bin/bash
    export https_proxy=<PROXY_ADDRESS>:<PROXY_PORT>
    export HTTP_PROXY=<PROXY_ADDRESS>:<PROXY_PORT>
    export no_proxy=169.254.169.254
    export NO_PROXY=169.254.169.254
    /hana/shared/aws-backint-agent/aws-backint-agent "$@"

    有关在 SAP HANA 环境中使用代理地址的更多信息,请参阅将代理地址与 AWS Backint Agent 配合使用

问题:当您启动备份或还原时,您会在 SAP HANA Studio 或 SAP HANA Cockpit 中看到以下错误:

backup could not be completed, Backint cannot execute /usr/sap/<SID>/SYS/global/hdb/opt/hdbbackint, Permission denied (13)

  • 根本原因:AWS Backint Agent 二进制文件或启动程序脚本没有操作系统级别的执行权限。

  • 解决方案:为安装目录(例如,/hana/shared/aws-backint-agent/)中的 AWS Backint Agent 二进制文件 aws-backint-agent 和启动程序脚本 aws-backint-agent-launcher.sh 设置执行权限。

问题:我的备份运行太慢,需要更长的时间才能完成。

  • 根本原因:备份和还原的性能取决于许多因素,例如所用 EC2 实例的类型、EBS 卷以及 SAP HANA 通道数。如果数据库大小小于 128 GB,则 SAP HANA 默认为单个通道,或者您的 SAP HANA 参数 parallel_data_backup_backint_channels 设置为 1。

  • 解决方法:数据库备份的速度取决于 SAP HANA 数据卷 (/hana/data) 有多少存储吞吐量可用。SAP HANA 数据卷可用的总存储吞吐量取决于您的 Amazon EBS 存储类型和用于条带化的卷数量。要获得最佳性能,请遵循存储配置最佳实践。您可以将与 SAP HANA 数据文件系统关联的 Amazon EBS 卷切换为 io1io2gp3 卷类型。此外,如果数据库大小大于 128 GB,则可以通过调整并行备份通道数来提高备份性能。增大 parallel_data_backup_backint_channels 的值,然后尝试再次启动备份。我们建议您在尝试调整备份性能时考虑到资源争用与正常系统运行性能。

问题:我的备份和还原失败了,而且系统显示了以下错误之一:

  1. Backint exited with exit code 1 instead of 0. console output: Crashed during fetch and conversion read/write tcp 10.0.2.83:56192→52.216.88.123:443: use of closed network connection

  2. Backint exited with exit code 1 instead of 0. console output: Crashed during fetch and conversion caused by: read tcp 10.0.2.83:54890→52.216.130.243:443: read: connection reset by peer

    • 根本原因:由于吞吐量过高,AWS Backint Agent 和 S3 之间的连接失败了。

    • 解决方案:按照以下步骤排查此问题。

  3. 将 AWS Backint Agent 版本更新到 2.0.4.768 或更高版本。这些版本提高了对 S3 连接超时的恢复能力。

    • 代理更新后,请确保 SAP HANA 获取了最新版本的代理。运行以下命令以验证代理的版本。

      /usr/sap/<SID>/SYS/global/hdb/opt/hdbbackint -v

      有关更多信息,请参阅 {https---docs-aws-amazon-com-sap-latest-sap-hana-aws-backint-agent-s3-installing-configuring-html-aws-backint-agent-latest-version} [获取当前安装的 AWS Backint Agent 版本]。

  4. 如果问题仍然存在,请执行以下步骤 – 减小以下备份和还原参数。

    • Backup

      • UploadConcurrency

      • UploadChannelSize

    • 还原

      • MaximumConcurrentFilesForRestore

      • DownloadConcurrency

    这些值会降低 AWS Backint Agent 在备份和还原期间用于实现高性能的并发性和并行性。有关上述参数的默认值,请参阅 {https---docs-aws-amazon-com-sap-latest-sap-hana-aws-backint-agent-s3-installing-configuring-html-aws-backint-agent-modifying-config}[修改 AWS Backint Agent 配置参数]。

  5. 查看网络设置和配置。

  6. 执行跟踪路由,了解 Amazon S3 流量是否经过了防火墙数据包扫描器或任何其他可能显著增加网络延迟的软件。

问题:在 aws-backint-agent-config.yaml 中设置 S3ShortenBackupDestinationEnabled = ‘true’ 参数时,在处理数据库恢复期间会显示“No data backups found”错误。

示意图,显示了在 S3S 中处理数据库恢复时显示的“No data backups found”错误。
  • 根本原因:AWS Backint Agent 仅在配置文件中提供的 Amazon S3 路径中搜索日志和数据备份。由于 S3ShortenBackupDestinationEnabled 参数更改了 Amazon S3 文件夹,因此找不到备份。

  • 解决方案:您可以将 S3ShortenBackupDestinationEnabled 参数更改为 false 并运行还原,也可以将之前的备份和 SAP HANA 备份目录移动到新的 S3 位置。有关更多详细信息,请参阅将 AWS Backint Agent 配置为使用较短的 Amazon S3 路径

问题:在处理数据库恢复时,系统显示了“No data backups found”错误,并且代理日志显示“The operation is not valid for the objects' access tier”。

示意图,显示了“No data backups found”错误和代理日志消息“The operation is not valid for the objects' access tier”。
  • 根本原因:在 aws-backint-agent-config.yaml 中设置 *S3StorageClass = "INTELLIGENT_TIERING" * 参数后,对象已移动到存档存储层。AWSBackint Agent 不支持从存档层恢复。

  • 解决方案:必须先还原已存档的 S3 对象,然后才能将其移动到访问层。此过程可能需要数分钟到 12 小时,具体取决于所选的存档层和还原选项。S3 还原完成后,您可以启动 HANA 数据库的恢复。

问题:IAM 发起的备份请求无法访问您的 Amazon S3 存储桶。

返回的错误:

Error Fetching Bucket: Access Denied
  • 根本原因:内部任务的凭证在 –0—/aws 文件夹中配置,默认情况下会选择该凭证而非已配置的 IAM 角色来发起备份请求。

  • 解决方案:在初始化新服务客户端而不提供任何凭证参数的情况下,SDK 将使用默认凭证提供程序链来查找 AWS 凭证。开发工具包将使用凭证提供程序链中的第一个返回。默认提供程序链将按照以下顺序查找凭证:

    1. 环境变量

    2. 共享的凭证文件

    3. 适用于任务的 IAM 角色(如果您的应用程序使用 Amazon ECS 任务定义或 RunTask API 操作)

    4. 适用于 Amazon EC2 的 IAM 角色(如果您的应用程序在 Amazon EC2 实例上运行)

    有关更多信息,请参阅配置 AWS SDK for Go

问题:使用 AWS Backint Agent 执行备份和还原时,出现“/bin/sh: error importing function definition for `which'”错误。

如果 which'" error may occur when performing backup and restore with AWS Backint agent. This error occurs when ` BASH_FUNC_which%% 环境变量具有某些旧版 SAP 脚本不支持的多行值,导入函数定义时就会出现此错误。

受影响的环境

  • Red Hat Enterprise Linux 8.5 或更高版本

  • 包含“which”程序包 2.21-18 或更高版本的系统

    • 根本原因which-2.21-18.el8.x86_64 RPM 程序包在 /etc/profile.d/which2.{csh,sh} 文件中设置了具有多行函数定义的 BASH_FUNC_which%% 变量。一些旧版 SAP 脚本无法正确解析这个变量。

    • 解决方案:使用以下命令检查 BASH_FUNC_which%% 是否正在运行。

      env | grep -A 2 BASH_FUNC_which

      根据您的业务需求,使用以下解决方案之一。

      1. 临时:运行 unset -f which 以取消设置该函数。必须对每个新会话重复此步骤。

      2. 用户级:将 unset -f which 添加到用户的 –0—bashrc 文件。验证这是不是适合您的可扩展解决方案。

      3. 系统级:将 /etc/profile.d/which2.{sh,csh} 文件移动到备份位置或使用以下步骤创建 /etc/profile.d/zzz_which2.{sh,csh}

        sh: echo "unset -f which" > /etc/profile.d/zzz_which2.sh csh: echo "unalias which" > /etc/profile.d/zzz_which2.csh.

        系统级修复是一个持久性解决方案,它可以在程序包更新到“Which”程序包后继续存在。我们建议采用此解决方案。

备份删除

问题:您已从 SAP HANA 备份控制台(SAP HANA Studio 或 SAP HANA Cockpit)删除了 SAP HANA 备份,但已删除的备份文件仍然显示在 Amazon S3 文件夹中。

  • 根本原因:由于权限问题,AWS Backint Agent 无法从 Amazon S3 存储桶删除关联的备份文件。

  • 解决方法:从 SAP HANA 备份控制台删除备份时,AWS Backint Agent 需要具备 s3:DeleteObject 权限才能从目标 Amazon S3 存储桶删除备份文件。确保附加到 EC2 实例的 IAM 配置文件具有 s3:DeleteObject 权限。对于已从 SAP HANA 删除的备份,您可以手动从 Amazon S3 存储桶删除关联文件。我们建议您在手动删除任何备份文件之前采取额外的预防措施。手动删除错误的备份文件可能会影响您将来还原 SAP HANA 系统的能力。