本文為您介紹云備份使用中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
安裝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重新安裝客戶端。
同實例恢復時,數據庫無法連接,如何解決?
當您新建恢復任務并恢復到源實例時,選擇數據庫發現數據庫狀態為無法連接,請進行如下操作:
檢查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
SAP HANA備份為何會失敗,如何解決?
在執行SAP HANA備份時,客戶端會連接到HANA實例并發送用于啟動備份任務的SQL語句。如果該SQL語句成功執行,客戶端將繼續向HANA發送查詢語句以獲取備份進度和最終狀態。當備份過程中遇到失敗情況時,相關的錯誤信息會被記錄在客戶端的日志中。通過結合具體的任務時間和日志記錄,可以有效地追蹤并分析問題所在。以下是一些常見的錯誤問題:
如果/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中,出現如下錯誤信息:
[447] backup could not be completed, [1000002] Allocation failed ; $size$=16777216; $name$=DataPage; $type$=pool; $inuse_count$=6; $allocated_size$=17104896; $failure_type$=GLOBAL_ALLOCATION_LIMIT; $failure_flag$= (early exit)
且控制臺上有失敗記錄。
這個問題通常是由于SAP HANA無法分配更多內存(OOM)導致的。更多信息,請參見SAP HANA由于內存不足導致備份失敗。
解決方案,請參見SAP HANA解決方案。
導致OOM的原因,請參見SAP HANA服務支持。
如果/opt/alibabacloud/hbr/logs/hybridbackup.log中,出現如下錯誤信息:
"SQL Error 3584 - distributed SQL error: [2617] executor: plan operation execution failed with an exception.exception:exception 30160: Failed to read password from key store. $name=$M_BACKUP_CONFIGURATION. $col=$IS_ROOT_KEY_BACKUP_PASSWORD_SET. $ci=$23\n,Exception in executor plan00468@$spdr-db:31001 while executing pop 1, Data=[], values=[]map[]"
且控制臺上備份任務狀態為“失敗”。
該錯誤信息表明,在執行備份SQL語句時,SAP HANA系統返回了錯誤碼3584的SQL錯誤,具體是在從密鑰存儲中讀取密碼時遇到了異常。這通常是SAP 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記錄以及數據,清理后不可恢復。請根據實際情況謹慎配置備份保留時間。
調整保留時間會對歷史備份生效。數據保留任務每天執行一次,但備份庫的統計信息會有12到24小時的延遲。因此,在調整備份數據的保留周期后,預計需要3個自然日才能觀察到備份庫數據量的變化。如果調整幅度較大(例如從保留2年縮短至2個月),數據保留任務會控制執行速度,導致備份庫數據量的減少過程可能會持續一段時間。
收到短信或郵件告警提示備份失敗,但是登錄云備份控制臺查看備份任務顯示成功,是為什么?
問題現象
收到短信或郵件告警:“您的SAP HANA實例XXX(實例ID:cl-xxxxxxxx)中的數據庫XXX備份失敗,備份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后臺正常執行。更多信息,請參見SAP HANA官方描述。
解決方法
如果僅是偶發情況,并且在備份任務頁面確認備份已成功執行,可以忽略此告警。但若此類問題頻繁出現,建議在確保業務不受影響的前提下,選擇業務低峰期重啟HANA實例以解決問題。
為什么收到告警的時間和實際錯誤發生時間不一致?
短信告警設置了夜間抑制功能,將晚上8點至次日早上8點期間觸發的告警延遲至早上8點之后發送;而郵件告警則不受此限制,會即時發送。
為什么在備份SAP HANA后,存儲庫管理中顯示的源端數據量會異常增大?
問題原因
對于存儲庫中備份的SAP HANA數據,我們將定期查詢HANA數據庫中所有通過backint進行的歷史備份記錄,這包括由其他備份軟件執行且未被刪除的HANA備份。需要注意的是,這些歷史備份數據量的統計不會影響費用計算,實際計費依據的是存儲庫內實際占用的數據總量。
解決方法
您可以在HANA數據庫中執行SQL語句來刪除所有由非云備份方式創建且不再需要的備份記錄。請在執行刪除操作前,確保這些記錄已經無需保留。