对 Amazon Backint Agent 进行故障排除 SAP HANA - SAP HANA 开启 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对 Amazon Backint Agent 进行故障排除 SAP HANA

以下文档可以帮助您解决 Backint Agen Amazon SAP HANA t 在安装或备份时可能遇到的问题。

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

安装

问题:安装 Amazon Backint 代理时返回错误。

返回错误:

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.

  • 根本原因:输入了不支持的 Amazon Backint 代理版本。

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

备份和恢复

问题:AccessDenied 出现在代理日志中。
  • 根本原因

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

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

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

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

  • 解决方案:验证安装 Amazon Backint 代理的先决条件

问题:由于 S3 连接问题导致备份或恢复失败
  • 根本原因:挂载到实例的IAM角色没有访问 S3 存储桶的正确权限。

  • 解决方案:验证安装 Amazon Backint 代理的先决条件

问题:代理日志显示 Backint cannot execute hdbbackintNo such file or directory
  • 根本原因

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

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

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

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

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>

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

  • 解决方案:将SAPHANA系统添加到 SAP HANA Studio 并选择多容器模式,然后尝试再次启动备份。有关更多详细信息,请参阅使用 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 存储桶的 Amazon 区域,然后重新启动备份。您可以从 Amazon S3 控制台中找到创建您的 Amazon S3 存储桶的区域。

问题:任何 Amazon Backint 代理操作都失败,并出现以下错误之一,这些错误显示在aws-backint-agent.log

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

"NoCredentialProviders: no valid providers in chain.

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

  • 解决方案: Amazon Backint 代理需要您的EC2实例挂载IAM角色才能访问用于备份和还原操作的 Amazon 资源。将IAM角色附加到您的EC2实例,然后再次尝试该操作。有关更多信息,请参阅安装 Amazon Backint 代理的先决条件

  • 潜在的根本原因:HANA例如在哪个代理上运行代理时使用代理会导致代理失败。

  • 解决方案:为运行代理的HANA实例使用代理时,请勿使用代理进行实例元数据调用,否则调用将挂起。无法通过代理获取实例元数据信息,因此必须将其排除在外。更新位于的启动器脚本{INSTALLATION DIRECTORY}/aws-backint-agent-launcher.sh以指定169.254.169.254no_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 "$@"

    有关在您的SAPHANA环境中使用代理地址的更多信息,请参阅在 B Amazon ackint 代理中使用代理地址

问题:启动备份或恢复时,SAPHANAStudio 或 SAP HANA Cockpit 中出现以下错误:

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

  • 根本原因: Amazon Backint 代理二进制文件或启动器脚本没有操作系统级别的执行权限。

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

问题:我的备份运行太慢,需要更长的时间才能完成。
  • 根本原因:备份和恢复的性能取决于许多因素,例如使用的EC2实例类型、EBS卷和SAPHANA通道数量。如果您的数据库大小小于 128 GB,SAPHANA则默认为单个通道,或者您的SAPHANA参数设置parallel_data_backup_backint_channels为 1。

  • 解决方案:数据库备份的速度取决于您的SAPHANA数据卷(/hana/data)可用的存储吞吐量。SAPHANA数据卷可用的总存储吞吐量取决于您的 Amazon EBS 存储类型和用于条带化的卷数量。要获得最佳性能,请遵循存储配置最佳实践。您可以将与SAPHANA数据文件系统关联的 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

  • 根本原因:由于吞吐量高, Amazon Backint 代理和 S3 之间的连接失败。

  • 解决方案:使用以下步骤解决此问题。

    1. 将 Amazon Backint 代理版本更新到 2.0.4.768 或更高版本。这些版本提高了 S3 连接超时的弹性。

    2. 如果问题仍然存在,请使用以下步骤——降低以下备份和还原参数。

      • 备份

        • UploadConcurrency

        • UploadChannelSize

      • 还原

        • MaximumConcurrentFilesForRestore

        • DownloadConcurrency

      这些值减少了 Amazon Backint 代理在备份和恢复期间用于实现高性能的并发性和并行性。有关上述参数的默认值,请参阅修改 Amazon Backint 代理配置参数。

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

    4. 执行跟踪路由,查看 Amazon S3 流量是否通过防火墙包裹扫描器或任何其他可能显著增加网络延迟的软件。

问题:在中设置 S3 ShortenBackupDestinationEnabled = 'true' 参数时aws-backint-agent-config.yaml,处理数据库恢复时会显示 “未找到数据备份” 错误。
该图显示了在 S3S 中处理数据库恢复时显示的 “未找到数据备份” 错误。
  • 根本原因: Amazon Backint 代理仅在配置文件中提供的 Amazon S3 路径中搜索日志和数据备份。由于该S3ShortenBackupDestinationEnabled参数会更改 Amazon S3 文件夹,因此它找不到备份。

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

问题:在处理数据库恢复时,会显示 “未找到数据备份” 错误,并且代理日志显示 “操作对对象无效” 访问层'。
该图显示了 “未找到数据备份” 错误和代理日志消息 “操作对对象无效” 访问层”。
  • 根本原因:在中设置了 S3 StorageClass = TIERING 'INTELLIGENT_' 参数后aws-backint-agent-config.yaml,对象已移至存档存储层。 Amazon Backint 代理不支持从存档层恢复。

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

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

返回错误:

Error Fetching Bucket: Access Denied
  • 根本原因:内部任务的凭据是在默认选择的./aws文件夹中配置的,而不是用于启动备份请求的配置IAM角色。

  • 解决方案:当您在不提供任何凭据参数的情况下初始化新的服务客户端时,会SDK使用默认的凭据提供程序链来查找 Amazon 凭据。SDK使用链中第一个无错误返回凭证的提供者。默认提供程序链将按照以下顺序查找凭证:

    1. 环境变量

    2. 共享凭据文件

    3. 如果您的应用程序使用 Amazon ECS 任务定义或 RunTask API操作,则IAM角色执行任务

    4. 如果您的应用程序在亚马逊EC2实例上运行,请为亚马逊IAM扮演角色 EC2

    有关更多信息,请参阅Amazon SDK为 Go 配置

问题:使用 Backint 代理执行备份和恢复时,“/bin/sh:导入'哪个'的函数定义时出错”。 Amazon

使用 Backint 代理执行备份和恢复时,可能会出现 “/bin/sh:导入'哪个'的函数定义时出错” 错误。 Amazon 当 BASH_FUNC_which%%环境变量的多行值不受某些旧SAP脚本的支持时,就会发生此错误。

受影响的环境

  • 红帽企业 Linux 8.5 及更高版本

  • 包含 “哪个” 包的系统 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添加到用户.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.

      系统级修复是一个持久的解决方案,它可以在包更新到 “哪个” 软件包后继续存在。我们推荐了这个决议。

备份删除

问题:您已从SAPHANASAPHANA备份控制台(SAPHANAStudio 或 SAP HANA Cockpit)中删除了备份,但已删除的备份文件仍显示在 Amazon S3 文件夹中。
  • 根本原因:由于权限问题, Amazon Backint 代理无法从 Amazon S3 存储桶中删除关联的备份文件。

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