本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 SAP HANA 的 AWS Backint Agent 进行故障排除
以下文档可以帮助您解决适用于 SAP HANA 的 Backint Agen AWS 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
安装
问题:安装 AWS 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 文档查看为安装列出的实例。
-
根本原因:
-
实例上未安装 SSM 代理。
-
如果安装了 SSM 代理,则实例未运行或实例上的 SSM 代理未运行。
-
实例上安装的 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 代理版本。
-
解决方案:查看 AWS Backint 代理的版本历史记录。有关更多信息,请参阅 版本历史记录。
备份和恢复
问题:AccessDenied
出现在代理日志中。
-
根本原因:
-
EC2 实例的 IAM 角色没有访问 S3 存储桶的适当权限。
-
代理配置文件没有将
S3BucketOwnerAccountID
包括在双引号内。这S3BucketOwnerAccountID
是 12 位数的 AWS 账户 ID。 -
S3 存储桶不归
S3BucketOwnerAccountID
提供的账户所有。 -
为
S3BucketOwnerAccountID
提供的 S3 存储桶在 2019 年 5 月之前创建。
-
-
解决方案:验证安装 AWS Backint 代理的先决条件。
问题:由于 S3 连接问题导致备份或恢复失败
-
根本原因:附加到实例的 IAM 角色没有访问 S3 存储桶的正确权限。
-
解决方案:验证安装 AWS Backint 代理的先决条件。
问题:代理日志显示 Backint cannot execute hdbbackint
或 No such file or directory
。
-
根本原因:
-
如果您是手动安装代理,则为代理可执行文件创建符号链接未成功。
-
如果您是使用 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,选择多容器模式,然后尝试再次启动备份。有关更多详细信息,请参阅使用 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 代理操作都失败,并出现以下错误之一,这些错误显示在aws-backint-agent.log
:
“Error creating upload id for bucket:<mys3bucket>"
或者
"NoCredentialProviders: no valid providers in chain.
-
潜在的根本原因:您的 Amazon EC2 实例没有附加任何 IAM 角色。
-
解决方案: AWS Backint 代理需要将 IAM 角色附加到您的 EC2 实例才能访问用于备份和还原操作的 AWS 资源。将 IAM 角色附加到您的 EC2 实例,然后再次尝试执行操作。有关更多信息,请参阅安装 AWS Backint 代理的先决条件。
-
潜在的根本原因:在运行代理的 HANA 实例上使用代理会导致代理失败。
-
解决方案:为运行代理的 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 环境中使用代理地址的更多信息,请参阅在 B AWS ackint 代理中使用代理地址。
问题:当您启动备份或还原时,您会在 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 代理二进制文件或启动器脚本没有操作系统级别的执行权限。
-
解决方案:为 AWS Backint 代理二进制文件
aws-backint-agent
和安装目录aws-backint-agent-launcher.sh
中的启动器脚本设置执行权限(例如,/hana/shared/aws-backint-agent/
)。
问题:我的备份运行太慢,需要更长的时间才能完成。
-
根本原因:备份和还原的性能取决于许多因素,例如所使用的 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 卷切换为
io1
io2
或gp3
卷类型。此外,如果数据库大小大于 128 GB,则可以通过调整并行备份通道数来提高备份性能。增大parallel_data_backup_backint_channels
的值,然后尝试再次启动备份。我们建议您在尝试调整备份性能时考虑到资源争用与正常系统运行性能。
问题:我的备份和恢复失败,出现以下错误之一:
-
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
-
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 代理和 S3 之间的连接失败。
-
解决方案:使用以下步骤解决此问题。
-
将 AWS Backint 代理版本更新到 2.0.4.768 或更高版本。这些版本提高了 S3 连接超时的弹性。
-
代理更新后,请确保 SAP HANA 获取最新版本的代理。运行以下命令以验证代理的版本。
/usr/sap/<SID>/SYS/global/hdb/opt/hdbbackint -v
有关更多信息,请参阅获取当前安装的 AWS Backint 代理版本。
-
-
如果问题仍然存在,请使用以下步骤——降低以下备份和还原参数。
-
备份
-
UploadConcurrency
-
UploadChannelSize
-
-
还原
-
MaximumConcurrentFilesForRestore
-
DownloadConcurrency
-
这些值减少了 AWS Backint 代理在备份和恢复期间用于实现高性能的并发性和并行性。有关上述参数的默认值,请参阅修改 AWS Backint 代理配置参数。
-
-
查看网络设置和配置。
-
执行跟踪路由,查看 Amazon S3 流量是否通过防火墙包裹扫描器或任何其他可能显著增加网络延迟的软件。
-
问题:在中设置 S3 ShortenBackupDestinationEnabled = 'true' 参数时aws-backint-agent-config.yaml
,处理数据库恢复时会显示 “未找到数据备份” 错误。
![该图显示了在 S3S 中处理数据库恢复时显示的 “未找到数据备份” 错误。](images/s3-shorten-true-troubleshoot-backint.jpg)
-
根本原因: AWS Backint 代理仅在配置文件中提供的 Amazon S3 路径中搜索日志和数据备份。由于该
S3ShortenBackupDestinationEnabled
参数会更改 Amazon S3 文件夹,因此它找不到备份。 -
解决方案:您可以将
S3ShortenBackupDestinationEnabled
参数更改为false
并运行还原,也可以将之前的备份和 SAP HANA 备份目录移动到新的 S3 位置。有关更多详细信息,请参阅将 AWS Backint 代理配置为使用较短的 Amazon S3 路径。
问题:在处理数据库恢复时,会显示 “未找到数据备份” 错误,并且代理日志显示 “操作对对象无效” 访问层'。
![该图显示了 “未找到数据备份” 错误和代理日志消息 “操作对对象无效” 访问层”。](images/s3-intelligent-tiering-troubleshoot-backint.png)
-
根本原因:在中设置了 S3 StorageClass = 'INTELLIGENT_TIERING' 参数后
aws-backint-agent-config.yaml
,对象已移至存档存储层。 AWS Backint 代理不支持从存档层恢复。 -
解决方案:必须先恢复存档的 S3 对象,才能将其移动到访问层中。这可能需要几分钟到 12 个小时,具体取决于所选的存档层和还原选项。S3 还原完成后,您可以启动 HANA 数据库的恢复。
问题:由 IAM 发起的备份请求无法访问您的 Amazon S3 存储桶。
返回错误:
Error Fetching Bucket: Access Denied
-
根本原因:内部任务的证书是在默认选择的
./aws
文件夹中配置的,而不是用于启动备份请求的配置的 IAM 角色。 -
解决方案:当您在不提供任何凭据参数的情况下初始化新的服务客户端时,SDK 会使用默认的凭据提供程序链来查找 AWS 凭据。开发工具包将使用凭证提供程序链中的第一个返回。默认提供程序链将按照以下顺序查找凭证:
-
环境变量
-
共享凭据文件
-
如果您的应用程序使用 Amazon ECS 任务定义或 RunTask API 操作,则使用 IAM 角色执行任务
-
如果您的应用程序在亚马逊 EC2 实例上运行,则亚马逊 EC2 的 IAM 角色
有关更多信息,请参阅配置 AWS SDK for Go。
-
问题:使用 Backint 代理执行备份和恢复时,“/bin/sh:导入'哪个'的函数定义时出错”。 AWS
使用 Backint 代理执行备份和恢复时,可能会出现 “/bin/sh:导入'哪个'的函数定义时出错” 错误。 AWS 当
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
根据您的业务需求,使用以下解决方案之一。
-
临时:运行
unset -f which
以取消设置该函数。必须为每个新会话重复此步骤。 -
用户级:
unset -f which
添加到用户.bashrc
文件中。验证这是否是适合您的可扩展分辨率。 -
系统级:将
/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
.系统级修复是一个持久的解决方案,它可以在包更新到 “哪个” 软件包后继续存在。我们推荐了这个决议。
-
备份删除
问题:你从 SAP HANA 备份控制台(SAP HANA Studio 或 SAP HANA Cockpit)中删除了 SAP HANA 备份,但已删除的备份文件仍显示在 Amazon S3 文件夹中。
-
根本原因:由于权限问题, AWS Backint 代理无法从 Amazon S3 存储桶中删除关联的备份文件。
-
解决方案:当您从 SAP HANA AWS 备份控制台删除备份时,Backint 代理需要
s3:DeleteObject
权限才能从目标 Amazon S3 存储桶中删除备份文件。确保附加到 EC2 实例的 IAM 配置文件具有s3:DeleteObject
权限。对于已经从 SAP HANA 中删除的备份,您可以手动从 Amazon S3 存储桶中删除关联的文件。我们建议您在手动删除任何备份文件之前采取额外的预防措施。手动删除错误的备份文件可能会影响您将来还原 SAP HANA 系统的能力。