本文为您介绍云备份使用中SAP HANA备份常见的问题以及对应的解决办法。
SAP HANA备份是什么
您可以使用云备份在阿里云上管理您SAP系统的备份服务。
云备份通过了SAP HANA Backint集成认证,兼容SAP HANA 1.0和2.0版本。您可以使用云备份客户端来备份ECS实例中部署的SAP HANA实例,并在需要时恢复数据库。更多信息请参见SAP HANA功能概览。
此外,您还可以将数据中心的本地文件、VMWare虚拟机等备份到阿里云上的备份库中,针对阿里云上各个类型的数据,包括ECS文件、Oracle及MS SQL Server数据库、NAS服务、以及OSS服务上的数据,云备份提供了简单易用的原生数据保护功能。更多信息请参见什么是云备份。
SAP HANA备份适用范围
部署在阿里云ECS上的SAP HANA实例
Backint支持SAP HANA 1.0 SPS 09(Revision 94)及更高版本和SAP HANA 2.0 SPS 01及更高版本的MDC(Multitenant Database Containers),不支持SAP HANA 1.0 Single-container(单租户)的版本。
注册SAP HANA实例后,如何查看云备份客户端的运行状态和日志?
在云备份控制台注册完成后,SAP HANA实例的状态为已注册。
默认日志路径为:/opt/alibabacloud/hbrclient/logs
您可以执行ps axu|grep hybrid
,查看备份客户端运行状态。如果存在进程信息,说明已经启动,一切运行正常。
root 11472 0.0 0.0 9288 1552 pts/2 S+ 16:11 0:00 grep --color=auto hybrid
root 30480 0.0 0.2 56296 17028 ? Ssl 13:26 0:04 /opt/alibabacloud/hbr/client/hybridbackup -p 0
备份日志路径
HANA数据库备份客户端日志:/opt/alibabacloud/hbr/logs
HANA数据库backint日志:/usr/sap/{SID}/SYS/global/hdb/logs/
HANA数据库的备份日志:/usr/sap/{SID}/HDB{InstanceNumber}/{hostname}/trace/DB_{DBNAME}/backup.log
HANA数据库会自动管理和存储日志记录。您可以使用HANA Studio或者其它相关的工具,执行以下 SQL来查询和获取这些日志备份的内容。
select CAT.* from SYS_DATABASES.M_BACKUP_CATALOG CAT JOIN SYS_DATABASES.M_BACKUP_CATALOG_FILES FILS on CAT.BACKUP_ID = FILS.BACKUP_ID where CAT.entry_type_name = 'log backup' and CAT.state_name = 'successful' and FILS.DESTINATION_TYPE_NAME = 'backint' and CAT.database_name = 'SYSTEMDB' order by sys_end_time
同实例恢复时,数据库无法连接,如何解决?
当您新建恢复任务并恢复到源实例时,选择数据库发现数据库状态为无法连接,请进行如下操作:
检查HANA数据库是否启动。
检查SSL证书是否过期,如果证书过期,可选择:
更换证书。
在控制台配置不验证SSL证书。
同实例恢复时,获取不到数据,如何解决?
当您新建恢复任务并恢复到源实例时,选择数据库发现没有数据,需要检查客户端状态是否正常。
恢复时无法找到备份记录如何解决
问题现象
当云服务器ECS重装操作系统、快照回滚,或者SAP HANA数据库卸载重新安装后,创建恢复任务时,可能会出现无法找到备份记录的情况。
根因分析
在执行同实例恢复操作时,云备份服务首先会在预配置的SAP HANA备份路径中检索备份记录。需要注意的是,若ECS实例经历了操作系统重装、快照回滚或SAP HANA数据库被卸载及重新安装等操作,这些情况均可能导致存储在HANA数据库备份记录被清除。
解决方案
如果您在备份时已经开启Catalog备份使用Backint,则可以恢复。恢复步骤如下:
进入SAP HANA源实例删除ECS实例节点。
重新注册新HANA实例,使用参数和之前保持一致。安装备份客户端,添加已删除的ECS实例节点。
创建恢复任务,选择新注册的HANA实例进行恢复,即从源实例发起跨实例恢复任务。
待确认恢复完成后,且源实例备份数据不再使用,可以删除源实例。如果您在备份时没有开启Catalog备份使用Backint,则无法找到备份记录,但是备份数据还在。如果您需要恢复这些备份数据,具体操作,请参见使用Prefix方式恢复SAP HANA。
HANA中sql执行失败,如何解决?
HANA 日志空间已满,可能导致 SQL 执行失败。请先清理磁盘空间,再重新尝试。
如何手动删除备份记录?
云备份侧无法手动删除 SAP HANA 数据,只能等待数据自动过期。您可以选中下述选项通过 SAP Studio 来进行删除操作。
实例已激活,数据库页面提示内部错误
如果云备份控制台的SAP HANA备份页面出现了错误提示,需要检查 HANA 许可证。您可以连接到 SYSTEMDB 并执行以下 SQL 查询所有数据库是否都包含了许可证。如果查询结果为空,则表示某个数据库缺少许可证。
SELECT * FROM M_LICENSE
备份失败常见问题
如果/opt/alibabacloud/hbr/logs/hybridbackup.log中,出现如下错误信息,表明本地时间与服务端存在显著差异,建议首先调整本地时间,更佳的做法是启用NTP自动同步以确保时间的一致性。
time="2021-11-04T16:24:17+08:00" level=info msg="InvalidTimeStamp.Expired retry, retryDelay: 5000 ms, retry times: 14" file=client.go line=377
当出现备份任务失败,或备份任务全部显示取消状态(非人为手动取消),同时在backup.log日志中有No space left on device的提示,说明本地磁盘空间已满,需要清理之后再进行备份。
如果/opt/alibabacloud/hbr/logs/hybridbackup.log中,出现如下错误信息,并且控制台上没有显示任何错误信息,这可能是因为您配置了其他定时备份任务,与 SAP HANA 备份任务在执行时发生了冲突。
time="2021-08-29T01:10:00+08:00" level=error msg="Execute hana backup failed : hbr: client returned error: ErrorCode=HanaSqlError, ErrorMessage=SQL Error 447 - backup could not be completed: [110122] A data backup cannot be created because another data backup is running or a storage snapshot has been prepared., Data=, values=map[]" file=hanabackupjob.go line=98
如果出现了非预期的备份失败或未执行告警,并且在备份历史中没有看到备份完成的记录,那么可能是MQTT请求超时导致的,可以在/opt/alibabacloud/hbr/logs/hybridbackup.log中查看对应时刻的日志。
如果/opt/alibabacloud/hbr/logs/hybridbackup.log中,出现如下错误信息,密码可能已经过期,需要及时更新。
time="2023-11-26T00:00:08+08:00" level=error msg="SAP Error: SQL Error 447 - backup could not be completed: [110203] Not all data could be written: Expected 4096 but transferred 0, [110507] Backint exited with exit code 1 instead of 0. console output: Internal Error: The user account is in unknown status. " file=errorwrapper.go line=28
如果/opt/alibabacloud/hbr/logs/hybridbackup.log中,出现如下错误信息,可能是您的时间戳不准确导致服务端拒绝了请求。
time="2024-06-23T01:36:46+08:00" level=error msg="HBR DescribeUserBusinessStatus returns hbr: service returned error: StatusCode=400, Code=InvalidSecurityToken.Expired, Message=Specified SecurityToken is expired., RequestId=A6CDF56F-CA56-53E8-9342-24E19F768D40" file=client.go line=428
您可选择以下方式检查时间戳:
执行以下命令,观察返回结果中的System Time,该参数反映了当前系统时间与NTP时间的差异。若此偏差在几毫秒以内,即可判断时间戳处于正常状态。
sudo chronyc tracking
执行以下命令,观察返回结果中的offset,该参数反映了当前系统时间与NTP时间的差异。若此偏差在几毫秒以内,即可判断时间戳处于正常状态。
ntpd -q
如果控制台没有失败的记录,同时在/opt/alibabacloud/hbr/logs/hybridbackup.log日志中,看到如下错误信息:
SQL Error 447 - backup could not be completed: [110122] A data backup cannot be created because another data backup is running or a storage snapshot has been prepared.
您可选择以下方式检查:
是否有其他备份软件在相同时间做HANA备份。
确保有数据备份的情况下重启HANA实例。更多信息,请参考 SAP HANA官方知识库。
查看备份任务时出现报错如何解决?
失败现象
当查看备份任务时,出现如下报错。
且/opt/alibabacloud/hbr/logs/hybridbackup.log中,出现如下错误信息:
time="2023-12-01T14:38:23+08:00" level=error msg="prepare stmt SELECT count(*) FROM sys_databases.M_BACKUP_PROGRESS error : SQL Error 437 - only commands for license handling are allowed in current state" file=db.go line=220
解决方法
由于 HANA 2.0 需要注册许可证,因此需要使用多用户模式。
恢复任务失败如何解决?
失败现象:通过指定时间或指定备份使用较早时间点的备份点进行恢复,然后通过指定时间使用最新时间备份点再次进行恢复,恢复失败。
解决方法:连续多次恢复时,建议通过指定备份方式,选择备份点进行恢复。
云备份可以备份线下数据中心IDC里部署的SAP HANA吗?
不支持。但您可以先把SAP HANA备份到本机存储上,然后以文件的方式再备份到云备份。更多信息,请参见备份本地文件。
备份SAP HANA,还需要额外再购买其他的云存储产品吗?
不需要。云备份是通过backint直接调用SAP HANA的备份接口,备份数据通过Pipe的方式备份到云备份后端的云存储上,不会占用SAP HANA ECS实例的存储空间,因此不需要再额外购买其他的云存储产品。
Single-container(单租户)的SAP HANA,可以用云备份的"SAP HANA备份"吗?
不可以,云备份控制台的SAP HANA备份使用的是backint接口。有两种解决方案:
方案一:将SAP HANA备份到ECS实例的云盘上,使用云备份的本地文件备份功能。更多信息,请参见备份本地文件。
方案二:将SAP HANA从Single-container转换成multi-container,具体操作方法请参考SAP官方文档或咨询您的SAP伙伴。
SAP HANA的不同环境的备份可以放在不同备份仓库吗?
可以,在云备份控制台注册SAP HANA实例时,您可以新建或选择已有的备份仓库。当前支持的恢复方式包括如下:
SAP HANA备份支持跨地域(异地)备份功能吗?
支持。具体请参见使用镜像备份库实现跨地域备份。
配置SAP HANA备份有哪些注意事项?
如果您的SAP HANA是高可用部署架构,注册SAP HANA实例的主机地址请填写 HAVIP(高可用虚拟IP地址),这样可以保证集群发生切换后,备份作业也可以正常执行。
备份参数默认不会开启backint备份SAP HANA的日志和catalog的功能,需要您手工为System DB和每个Tenant DB勾选上此配置,以确保在需要的时候可以正常完成数据库恢复操作。
Tenant DB的参数配置会继承System DB的参数配置,请您仔细检查每个数据库的参数配置符合您的预期。
如何设置SAP HANA的备份数据保留周期?
登录云备份控制台,选择对应的实例。
在数据库页签,选择System DB或Tenant DB,单击更多>设置保留时间。
默认的备份保留时间是永久保留,您可以按需修改。
参数
说明
保留时间设置
自定义
选择此项后,您可以自定义每天执行保留任务的时间,以及备份数据的保留时间。
永久保留
选择此项后,云备份将为您永久保留备份数据。
保留任务执行时间
仅当保留时间设置配置为自定义时,需要配置该参数。选择每天执行保留任务的时间。时间精确到秒。
说明建议避开备份任务繁忙或者其他业务繁忙的时间段。
备份保留时间
仅当保留时间设置配置为自定义时,需要配置该参数。选择保留备份数据的时间。
单位:天、周、月、年。最短保留时间为1天,最长保留时间为10年。
说明SAP HANA备份保留时间到期后,备份服务会自动清理过期的BACKINT备份与文件备份相关的catalog记录以及数据,清理后不可恢复。请根据实际情况谨慎配置备份保留时间。
收到短信或邮件告警提示备份失败,但是登录云备份控制台查看备份任务显示成功,是为什么?
问题现象
收到短信或邮件告警:“您的SAP HANA实例XXX(实例ID:cl-xxxxxxxx)中的数据库PRD备份失败,备份ID为0。请及时登录控制台查看和修复。 ”但实际上,当您登录云备份控制台时,该次备份记录却显示已完成且无异常提示。
问题原因
这可能是由于在备份期间有其他备份软件同时运行,或是SAP HANA自身存在问题所导致。您可以通过检查位于
/opt/alibabacloud/hbrclient/logs/hybridbackup.log
的日志文件,在告警的时间附近看到类似告警片段:time="2024-08-29T01:35:01+08:00" level=error msg="Execute sql `BACKUP DATA FOR PRD USING BACKINT ('/usr/sap/XXX/SYS/global/hdb/backint/DB_HHH/COMPLETE_DATA_BACKUP_2024_08_29_01_30') ASYNCHRONOUS` failed : SQL Error 447 - backup could not be completed: [110122] A data backup cannot be created because another data backup is running or a storage snapshot has been prepared." file=db.go line=163 time="2024-08-29T01:35:01+08:00" level=error msg="SAP Error: SQL Error 447 - backup could not be completed: [110122] A data backup cannot be created because another data backup is running or a storage snapshot has been prepared." file=errorwrapper.go line=28
该错误表明,云备份客户端通过连接SAP HANA执行了一条用于备份的SQL 语句,SAP HANA返回了447的错误码,告知云备份客户端此命令执行失败。创建数据备份失败,是因为另一个数据备份正在运行或已准备好了存储快照。更多信息,请参见SAP HANA官方描述。
解决方法
如果仅是偶发情况,并且在备份任务页面确认备份已成功执行,可以忽略此告警。但若此类问题频繁出现,建议在确保业务不受影响的前提下,选择业务低峰期重启HANA实例以解决问题。
为什么收到告警的时间和实际错误发生时间不一致?
短信告警设置了夜间抑制功能,将晚上8点至次日早上8点期间触发的告警延迟至早上8点之后发送;而邮件告警则不受此限制,会即时发送。
为什么在备份SAP HANA后,存储库管理中显示的源端数据量会异常增大?
问题原因
对于存储库中备份的SAP HANA数据,我们将定期查询HANA数据库中所有通过backint进行的历史备份记录,这包括由其他备份软件执行且未被删除的HANA备份。需要注意的是,这些历史备份数据量的统计不会影响费用计算,实际计费依据的是存储库内实际占用的数据总量。
解决方法
您可以在HANA数据库中执行SQL语句来删除所有由非云备份方式创建且不再需要的备份记录。请在执行删除操作前,确保这些记录已经无需保留。
安装SAP HANA客户端失败,错误提示“有多个/usr/sap/<SID>/SYS/global/hdb/opt路径”
远程登录目标ECS实例。
将不需要做备份的SAP HANA实例对应的
/usr/sap/<SID>/SYS/global/hdb/opt
重命名成/usr/sap/<SID>/SYS/global/hdb/opt_backup
。返回云备份控制台,为该SAP HANA重新安装客户端。