亚马逊AWS官方博客
SAP on Amazon云原生备份解决方案
一. 前言
我们把阻止工作负载或系统在其主要部署位置实现其业务目标的事件视为灾难。灾难恢复是指为灾难做好准备以及从灾难中恢复的过程。通常在SAP on Amazon的灾备解决方案中,亚马逊云科技会提供不同的灾备选项减轻风险和满足该工作负载的恢复时间目标(RTO)和恢复点目标(RPO)。
如上图所示,亚马逊云科技通常提供4种不同的灾备解决方案,包括:备份/恢复模式、守夜灯模式、温备模式、双活模式满足客户不同需求的灾备要求。这几种解决方案从技术实现来讲,从简单到复杂;RTO/RPO可以从几个小时到零;而IT投资会逐渐增多。那么对于选择哪种灾备方案,不同的企业会根据企业自身的发展需求,选择不同的解决方案,我们都会帮助企业去构建适合其业务需求的落地方案。在此文,我们会针对部署在亚马逊云平台的SAP系统,讨论亚马逊云科技的原生备份工具,如何来实现SAP应用服务器的备份、SAP用到的网络文件系统的备份、HANA数据库的备份。并且,会针对HANA的备份工具“Amazon Backint Agent”作重点的介绍。
二. SAP on Amazon架构说明
在介绍SAP如何在亚马逊云平台备份之前,我们首先了解SAP on Amazon的具体架构及工作原理。
上面的图例是客户常用的一个SAP三系统架构,包括开发、测试、生产系统。开发、测试采用单可用区部署。生产系统使用两地三中心的部署,生产系统在同一个region的两个可用区通过集群技术实现ASCS和ERS的高可用,HANA 数据库通过同步复制技术Sync结合集群技术实现高可用,同时通过HANA的异步复制技术Async把生产系统的日志同步到灾备系统来实现异地容灾。此两地三中心的架构既保证了同城的高可用和同城灾备也实现了异地灾备的目的,这也是亚马逊云科技特有的解决方案。
除此之外,我们建议客户通过使用备份给运营在亚马逊云平台的SAP系统一份双保险,保证业务的可持续性和可靠性。客户使用亚马逊云科技的原生备份工具来实现SAP系统的应用服务器的snapshot备份、应用服务器用到的网络文件系统EFS的Amazon backup备份;HANA使用Amazon Backint Agent实现数据库的全备份、或者增量备份、或者差异备份,同时实现归档log的备份。
三. SAP on Amazon备份需要哪些原生备份工具
对于SAP系统的备份,前一节我们谈论了SAP系统的备份包括应用服务器的备份,网络文件系统EFS的备份,HANA数据库的备份。那么如何使用亚马逊云科技的云原生备份工具来备份哪些内容,这节我们来具体分析。
应用服务器的备份,包括操作系统的备份、SAP应用服务器本地Kernel文件的备份,使用亚马逊云科技的snapshot来进行备份,使用EBS块存储进行数据存储。如下图所示:
对于SAP应用服务器和ASCS及ERS服务器用到的网络文件系统EFS包括如下目录, 使用亚马逊云科技的“Amazon Backup”来进行备份,使用EFS存储进行数据存储。如下图所示:
对于HANA数据库的备份,我们建议使用“Amazon Backint Agent”来进行数据库的全备份、增量备份、差异备份,以及归档日志的备份,通过对象存储S3来实现数据的存储。如下图所示:
四. 备份策略
前面一节我们介绍了SAP系统需要备份哪些内容,需要使用哪些Amazon的原生备份工具来备份。那么本节我们继续讨论如何制定相关的备份策略来实现备份,比如每个备份方法的备份频率以及保留周期。
- 对于使用块存储的实例的操作系统及其需要备份的某些文件目录,建议使用快照方式进行备份,由于操作系统和相关的目录不会经常发生变化,可以根据需要,比如每周进行1次备份,保留4周;
- 对于共享文件系统建议每周备份一次,保留4周;
- 对于SAP 数据库,根据备份策略的不同,选择不同的备份频率和保留周期。
如下图所示SAP备份相关的备份策略
五. 备份容量估算
前面我们讨论了备份工具及备份策略,那么对于SAP的备份需要亚马逊云平台的哪些存储服务,需要多大的容量,我们在制定备份策略时,也需要仔细规划。下面的几个例子为某客户SAP系统使用亚马逊云时用到的备份服务,供大家参考。
示例:使用快照方式进行每周一次,保留一周的备份,需要的块存储的容量。
示例:使用EFS进行备份,每周一次,保留2次的EFS容量。
示例:使用Amazon Backint Agent 对SAP开发、测试系统数据库进行每周一次,保留7天的备份,需要S3的对象存储的容量
示例:使用Amazon backint gent对SAP生产数据库进行每周一次全备和一次增量备份,保留28天的备份,需要S3的对象存储的容量。
六. Amazon Backint Agent 配置过程
前面几节,我们介绍了亚马逊云备份相关的解决方案,那么如何利用好亚马逊云科技云原生的备份工具来实现SAP系统的备份呢?我们在前面提到了主要有“Amazon Backup”和“Amazon Backint Agent”工具。对于“Amazon Backup”在此博文不作介绍,具体请参考亚马逊Amazon Backup官方手册。此博文重点介绍“Amazon Backint Agent”,关于Amazon Backint Agent的安装配置过程,也可参阅官网。
Amazon Backint Agent主要包括3种安装配置模式,主要有system manager安装,交互模式安装,静默模式安装。在此博文对交互式安装作相关的介绍。
安装Amazon Backint Agent使用AWSSystems Manager 文档
安装AWS使用 Backint 代理AWSBackint 安装程序 — 交互模式
安装AWS使用 Backint 代理AWSBackint 安装程序 — 静默模式
步骤一 下图为交互安装配置示例
根据下面的图例在执行安装时,输入相关的系统参数,满足安装规划要求。
图例:某客户部署在宁夏region的Amazon Backint Agent交互安装时输入参数
图例:某客户部署在宁夏region的Amazon Backint Agent交互安装参数概览
图例:某客户部署在宁夏region的Amazon Backint Agent交互安装步骤
步骤二 验证安装
如果您要验证安装是否成功,请您登录到实例并查看目录 /<install directory>/aws-backint-agent。 您需要在此目录中查看以下文:
- AWS Backint Agent 确认是否有此二进制文件
- txt 检查此文件,其中包含代理程序使用的库的许可证,启动脚本YAML配置文件
- 确认是否有sql 文件
- aws- backint-agent.tar.gz 确认是否有此文件(源文件)
- 验证该符号链接为 hdbbackint 是否存在 /usr/sap/<SID>/SYS/global/hdb/opt 目录中,并且该符号链接为 aws-backint-agent- config.yaml 并存在于/usr/sap/<SID>/SYS/global/hdb/opt/hdbconfig 目录中,如下图所示。
步骤三 设置Amazon Backint Agent相关的SAP HANA参数
要使用 Amazon Backint Agent 备份SAP HANA 数据库,您必须设置相关的参数在 SAP HANA 数据库中。设置参数有下面不同的设置方法。
- 如果您为 HANA ini 文件更新选择了“修改”选项,则 SSM Docment 或 Amazon Backint Agent 安装程序会在系统数据库添加或更新备份相关的 SAP HANA 参数在HANA global.ini文件中。
- 如果选择 “ SQL”命令行进行修改,则可以运行以下SQL语句进行修改。有关这些参数的更多详细信息,请参阅备份配置参数。
检查参数 Backint 参数的设置在SAP HANA Studio 是否生效
步骤四 修改Amazon Backint Agent配置参数
Amazon Backint Agent配置参数保留在 /<installation directory>/aws-backint-agent/的 YAML 文件中。其文件的名称是 aws-backint-agent-config.yaml。以下各表总结了作为一部分添加的配置参数。
在程序初始化设置期间添加到 aws-backint-agent-config.yaml 的参数
在 aws-backint-agent-config.yaml文件中可修改的默认值的参数
修改SAP HANA 配置为使用不同的 Amazon S3 存储桶和文件夹进行数据和日志备份
默认情况下,Amazon Backint Agent对数据和日志备份使用相同的参数。它将数据和日志备份存储在同一 Amazon S3 存储桶和文件夹中。如果需要更改缺省配置,请参考官方手册的详细步骤进行更改。具体配置过程请参考以下链接。
https://docs.aws.amazon.com/zh_cn/sap/latest/sap-hana/aws-backint-agent-installing-configuring.html
七. 备份与还原
当我们使用了Amazon Backint Agent 进行备份作业后,我们可以使用 SQL 语句、SAP HANA Cockpit 或 SAP HANA Studio 启动恢复作业。具体操作过程请参考下面的链接。
- 使用 SQL 语句进行备份和恢复
- 使用 SAP HANA Cockpit 或 SAP HANA Studio 进行备份和恢复
- 获取备份和恢复状态
- 在 Amazon S3 存储桶中查找备份
- 计划和管理备份
- 备份保留
八. 备份生命周期管理
在安装配置了备份后如何通过生命周期管理备份文件和备份时效,主要包括以下内容。
- 建立备份桶和文件夹
- 生命周期管理
- 备份与还原(见第七节)
- 备份删除
建立备份桶和文件夹
备份之前要建立备份桶和文件夹,对应需要备份的目标系统。 SAP HANA 备份 S3 设置如下:
版本控制: 已启用(Enabled)
服务器访问日志记录:已启用(Enabled)
对象级别日志记录:已启用(Enabled)
对象锁定(Object lock) :开启(Permanently Enabled)
生命周期管理
生命周期规则 LifeCycle Rule:
删除备份
从 SAP HANA 备份控制台(SAP HANA Studio 或 SAP HANA Cockpit)删除不需要的 SAP HANA 备份文件
九. 与备份相关的问题及解决方法
问题1:Amazon Backint Agent安装时返回下面的错误提示
根本原因:用户环境中只安装了 Python 版本 3
解决方法:运行以下命令安装 Python 版本 2 并创建一个符号链接
问题2: 无法使用 SSM Document查看为安装列出的实例
根本原因:实例上未安装 SSM 代理。
如果安装了SSM代理,则实例可能没有开启或实例上的 SSM 代理未运行。
或者实例上安装的 SSM 代理的版本早于 2.3.274.0。
解决方法:按列出的步骤操作。在实例上安装或更新 SSM 代理. 您可以使用以下命令验证 SSM 代理是否正在运行。
问题3: AccessDenied 出现在代理日志中
根本原因:
- EC2 实例的 IAM 角色没有访问 S3 存储桶的适当权限。
- 代理配置文件没有将 S3BucketOwnerAccountID 包括在双引号内。这些区域有:S3BucketOwnerAccountID是 12 位AWS账户 ID。
- S3 存储桶不归 S3BucketOwnerAccountID 提供的账户所有。
- 为 S3BucketOwnerAccountID 提供的 S3 存储桶在 2019 年 5 月之前创建。
解决方法:验证先决条件步用于安装Amazon Backint Agent。
问题4: 由于 S3 连接,Backup 或还原失败
根本原因:附加到实例的 IAM 角色没有访问 S3 存储桶的适当权限。
解决方法:验证先决条件步用于安装Amazon Backint Agent。
问题5:显示代理日志Backint cannot execute hdbbackint要么No such。file or directory.
根本原因:
- 如果您是手动安装代理,则为代理可执行文件创建符号链接未成功。
- 如果您是使用 SSM 代理,则在创建符号链接时代理的第 2 步失败。您可以通过查看 RunCommand 实施详细信息验证这一点。
解决方法:验证您是否正确遵循安装步骤在本文档中。
问题6: 从 SAP HANA 控制台启动备份时显示以下错误:
根本原因:将 SAP HANA 系统添加到 SAP HANA Studio 时,您选择了单容器模式,而不是多容器模式。
解决方法:将 SAP HANA 系统添加到 SAP HANA Studio,选择多容器模式,然后尝试再次启动备份。有关更多详细信息,请参阅使用 Backint 进行数据备份的路径选择无效。
问题7: aws-backint-agent.log显示以下错误::
根本原因:您在 aws-backint-agent-config.yaml 配置文件中为 AwsRegion 参数指定了不正确的区域 ID。
解决方法:指定您的 Amazon S3 存储桶的区域,然后再次启动备份。您可以从 Amazon S3 控制台找到创建 Amazon S3 存储桶时所在的区域。
问题8: 任何Amazon Backint代理操作失败,aws-backint-agent.log有如下错误:
“Error creating upload id for bucket:<mys3bucket>
” 或
“NoCredentialProviders: no valid providers in chain.
”
潜在根源:您的 Amazon EC2 实例未附加 IAM 角色。
解决方法:Amazon Backint Agent需要将 IAM 角色附加到您的 EC2 实例才能访问。Amazon用于备份和还原操作的资源。将 IAM 角色附加到您的 EC2 实例,然后再次尝试执行操作。有关更多信息,请参阅 。先决条件用于安装Amazon Backint Agent。
潜在根源:对运行代理的 HANA 实例使用代理会导致代理失败。
解决方法:对运行代理的 HANA 实例使用代理时,请勿使用代理进行实例元数据调用,否则调用将挂起。无法通过代理获取实例元数据信息,因此必须将其排除在外。在以下位置更新启动器脚本
问题9: 当您启动备份或还原时,您会在 SAP HANA Studio 或 SAP HANA。Cockpit 中看到以下错误
根本原因:这些区域有:Amazon Backint Agent二进制或启动程序脚本没有操作系统级别的执行权限。
解决方法:设置执行权限Amazon Backint Agent文件aws-backint-agent对于启动器脚本aws-backint-agent-launcher.sh在安装目录中(例如,/hana/shared/aws-backint-agent/)。
问题10: 我的备份运行太慢,需要更长的时间才能完成。
根本原因:备份和还原的性能取决于许多因素,例如所用 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 的值,然后尝试再次启动备份。我们建议您在尝试调整备份性能时考虑到资源争用与正常系统运行性能。
问题11: 备份失败,并在aws-backint-agent.log中出现以下错误之一:
根本原因:之间的连接Amazon Backint Agent和 S3 由于吞吐量高而失败。
解决方法:更新Amazon Backint Agent到版本 1.02 或更高版本。
问题12: 当你设置S3 缩短备份目标已启用 = ‘true’在中的参数awsbackint-agent-config.yaml,处理数据库恢复时显示 “未找到数据备份”错误
根本原因:Amazon Backint Agent仅在配置文件中提供的 Amazon S3 路径中搜索日志和数据备份。由于S3ShortenBackupDestinationEnabled参数会更改 Amazon S3 文件夹,它找不到备份。
解决方法:您可以更改S3ShortenBackupDestinationEnabled对的参数false然后运行还原,也可以将之前的备份和 SAP HANA 备份目录移动到新的 S3 位置。有关更多信息,请参阅 配置Amazon Backint Agent使用较短的 Amazon S3 路径。
问题13: 处理数据库恢复时,会显示 “未找到数据备份” 错误,代理日志显示 “该操作对于对象的访问层无效”。
根本原因:使用S3StorageClass = ‘智能 _分层’在中设置的参数 aws-backint-agent-config.yaml,对象已移动到存档存储层。Amazon Backint Agent不支持从存档层恢复。
解决方法:你必须先还原已存档的 S3 对象在访问层中移动它们。 这可能需要几分钟到 12 个小时,具体取决于所选的存档层和还原选项。S3 还原完成后,您可以启动 HANA 数据库的恢复。
问题14: 您已从 SAP HANA 备份控制台(SAP HANA Studio 或 SAP HANA Cockpit)删除了 SAP HANA 备份,但已删除的备份文件仍然显示在 Amazon S3 文件夹中。
根本原因:AWS由于权限问题,Backint 代理无法从 Amazon S3 存储桶删除关联的备份文件。
解决方法:Amazon Backint Agent需要s3:DeleteObject从 SAP HANA 备份控制台删除备份时,有权从目标 Amazon S3 存储桶删除备份文件。确保附加到 EC2 实例的 IAM 配置文件具有 s3:DeleteObject 权限。对于已从 SAP HANA 删除的备份,您可以手动从 Amazon S3 存储桶删除关联文件。我们建议您在手动删除任何备份文件之前采取额外的预防措施。手动删除错误的备份文件可能会影响您将来还原 SAP HANA 系统的能力。
问题15:restore不能顺利完成,恢复到某个百分比后,系统不再执行恢复作业。故障现象如下:
根本原因:数据库还原时消耗内存过高,引起内存溢出,Amaon在不断化此问题。
解决方法:调整aws-backint-agent-config.yaml 设置DownloadConcurrency = 10
问题16:如果备份目录满了,导致HANA宕机
根本原因:SAP系统没有配置好有效的监控,导致HANA redo log文件系统全满,引起HANA系统宕机。
解决方法:请参考SAP Note 1679938进行处理,故障处理后,请配置Amaon监控,对HANA文件系统进行告警设置,如果文件系统使用率超过90%,请立即扩容或者删除无用的文件。
问题17:HANA Active节点能正常备份,Standby节点不能正常备份。
根本原因:HANA在HA配置过程中,在配置同步复制之前,没有对每个节点做Backint Agent的相同的配置。
解决方法:请参考Amazon Backint Agent官网手册对两个节点做相同的配置。
十. 性能优化
Amazon Backint Agent安装完毕后,使用了缺省的安装参数。如果要进一步优化备份和恢复操作的性能,可以调整下面与性能相关的几个参数来优化Amazon Backint Agent的性能。这些参数如下:
- UploadChannelSize 参数用于确定备份期间可以将多少个文件并行上传到 S3 存储桶。此参数的默认值为 10,它在大多数情况下可提供最佳性能。
- UploadConcurrency参数用于确定备份期间可以并行运行多少个 S3 线程。此参数的默认值为 100,它在大多数情况下可提供最佳性能。
- MaximumConcurrentFilesForRestore 参数用于确定在还原操作期间可以从 S3 并行下载多少个文件。此参数的默认值为 5,它为大多数使用案例提供最佳性能。如果要调整这些参数,可以将它们添加到 aws-backint-agent-config.yaml 文件。
注意:我们强烈建议您在更改后测试备份和恢复操作,以确保不会对您的备份和还原操作以及其他标准操作产生意想不到的影响。
此外,要在备份和还原操作期间获得最佳性能,请确保按照以下最佳实践配置 SAP HANA 数据和日志卷。请参阅SAP HANA 的存储配置部分中的部分上的 SAP HANA Amazon有关更多信息的文档。
十一. 总结
本博文详细介绍了运营在亚马逊云平台上的SAP 系统如何运用亚马逊云科技云原生的备份工具实现SAP系统的备份解决方案。内容上涵盖了如何设计一个科学合理的备份架构,制定相关的备份策略,如何规划备份存储容量;在实施的过程中,严格按照Backint Agent的Amzon官网指导手册去配置好每个步骤;如何规划备份策略以及备份数据的生命周期管理策略;如何解决Amazon Backint Agent在安装运维过程中碰到的问题和性能调优。如果在使用Amazon Backint Agent的过程中,碰到任何技术问题,请参阅此博文相关的内容或者及时联系我们。
十二. 参考文献
1679938 – DiskFullEvent on Log Volume如何解决HANA备份引起磁盘空间满的问题
Amazon Backint Agent Guide 官网手册如下链接
https://docs.aws.amazon.com/zh_cn/sap/latest/sap-hana/aws-backint-agent-sap-hana.html