場景介紹
某企業購買了云主機,并在上面安裝了HANA 2.0單機版數據庫,用于存放業務數據,隨著數據量的增加,之前的崩潰一致性保護已經滿足不了RTO、RPO的要求,決定采用應用一致性備份,減小RTO與RPO。
數據準備
| 準備項 | 說明 | 示例 |
|---|---|---|
| HANA用戶名 | 連接HANA SYSTEMDB數據庫時使用的用戶名 | system |
| HANA密碼 | 連接HANA SYSTEMDB數據庫時使用的密碼 | Example@123 |
| HANA實例編號 | 連接HANA數據庫時使用的實例編號 | 00 |
| HANA SID | 連接HANA數據庫時使用的SID | WXJ |
詳細步驟
步驟1、加密HANA用戶密碼,供自定義腳本使用。
1.登錄HANA服務器,輸入 cd /home/rdadmin/Agent/bin/ ,進入Agent目錄。
2.執行 /home/rdadmin/Agent/bin/agentcli encpwd ,回顯如下:
Enter password:
輸入HANA用戶的密碼,并按“Enter”,屏幕上就會打印出加密后的密碼,將其拷貝到剪貼板中。
步驟2、執行 cd /home/rdadmin/Agent/bin/thirdparty/ebk_user ,進入自定義腳本目錄,執行 vi hana_freeze.sh ,打開HANA示例凍結腳本。
步驟3、將下圖所示的HANA_USER HANA_PASSWORD INSTANCE_NUMBER DB_SID修改為實際值,其中HANA_PASSWORD為步驟1的屏幕輸出。


也可以使用sed命令來直接進行修改:
sed -i 's/^HANA_USER=./HANA_USER=" XXX "/' hana_freeze.sh hana_unfreeze.sh ,其中XXX*為數據庫用戶名。
sed -i 's/^HANA_PASSWORD=./HANA_PASSWORD=" XXX "/' hana_freeze.sh hana_unfreeze.sh ,其中XXX*為步驟1中打印出的密碼。
sed -i 's/^INSTANCE_NUMBER=./INSTANCE_NUMBER=" XXX "/' hana_freeze.sh hana_unfreeze.sh ,其中XXX*為數據庫實例編號。
sed -i 's/^DB_SID=./DB_SID=" XXX "/' hana_freeze.sh hana_unfreeze.sh ,其中XXX*為數據庫SID。
此操作會同時修改凍結解凍腳本,所以無需再執行步驟3。
步驟4、執行 vi hana_unfreeze.sh ,打開HANA示例解凍腳本,修改此腳本中的用戶名、密碼、實例編號與SID
hana_freeze.sh與hana_unfreeze.sh腳本實現了基本的數據庫凍結與解凍操作,如果你在凍結、解凍時有其它額外步驟需要執行,可以自行在其中進行修改。
警告:
凍結SAP HANA數據庫時,按照SAP官方建議,需要凍結Data卷的XFS文件系統,否則可能出現數據不一致的問題。在此示例腳本中,將會查詢出HANA使用的Data卷掛載點,并用xfs_freeze 命令進行凍結。
如果HANA系統未按照SAP官方建議使用一個獨立分區來存放Data卷數據,而是與系統卷共用一個分區,則請修改hana_freeze.sh腳本,注釋掉xfs_freeze相關行,防止整個系統都被凍結,但此時可能出現備份數據不一致的問題。