

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 還原 Amazon EC2 執行個體上的 SAP HANA 資料庫
<a name="saphana-restore"></a>

EC2 執行個體上的 SAP HANA 資料庫可以使用 AWS Backup 主控台、API 或使用 來還原 AWS CLI。

**Topics**
+ [使用 AWS Backup 主控台還原 SAP HANA 資料庫](#w2aac17c31c43b9)
+ [適用於 EC2 上 SAP HANA 的 [StartRestoreJob API](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html)](#w2aac17c31c43c11)
+ [適用於 EC2 上 SAP HANA 的 CLI](#w2aac17c31c43c13)
+ [SAP HANA 高可用性 (HA) 還原](#saphanarestoreha)
+ [疑難排解](#saphanarestoretroubleshooting)

## 使用 AWS Backup 主控台還原 SAP HANA 資料庫
<a name="w2aac17c31c43b9"></a>

請注意，您無法對相同的資料庫同時進行備份任務和還原任務。進行 SAP HANA 資料庫還原任務時，嘗試備份相同的資料庫可能會導致錯誤：「資料庫在停止時無法備份」。

1. 使用先決條件中的登入資料存取 AWS Backup 主控台。

1. 在 **目標還原位置** 下拉式選單下，選擇一個資料庫，以使用您要用於還原的復原點覆寫 (請注意，託管還原目標資料庫的執行個體也必須具有先決條件中的許可)。
**重要**  
SAP HANA 資料庫還原是破壞性的。還原資料庫會覆寫位於指定目標還原位置的資料庫。

1. 只有在執行系統複製還原時才完成此步驟；否則，請跳至步驟 4。

   系統複製還原是一種還原任務，其中還原目標資料庫與產生復原點的來源資料庫不同。若要進行系統複製還原，請注意控制台上提供給您的 `aws ssm-sap put-resource-permission` 命令。必須複製此命令，並貼到已完成先決條件的機器上加以執行。執行命令時，請使用您設定註冊應用程式所需的許可先決條件中的角色憑證。

   ```
   // Example command
   aws ssm-sap put-resource-permission \
   --region us-east-1 \
   --action-type RESTORE \
   --source-resource-arn arn:aws:ssm-sap-east-1:112233445566:HANA/Foo/DB/HDB \
   --resource-arn arn:aws:ssm-sap:us-east-1:112233445566:HANA/Bar/DB/HDB
   ```

1. 選擇還原位置之後，即可看到目標資料庫的 **資源 ID**、**應用程式名稱**、**資料庫類型** 和 **EC2 執行個體**。

1. *或者*，您可以展開**進階還原設定**來變更目錄還原選項。可用的選項會根據選取的還原設定而有所不同。

1. 按一下 **還原備份**。

1. 目標位置將在還原期間遭到覆寫 (**「破壞性還原」**)，因此您必須在下一個快顯對話方塊中提供允許這項操作的確認。

   1. 若要繼續，您必須了解現有資料庫將遭到所要還原的資料庫覆寫。

   1. 了解這點之後，您必須確認現有資料將遭到覆寫。若要確認這點並繼續進行，請在文字輸入欄位中輸入 **overwrite**。

1. 按一下 **還原備份**。

如果程序成功，主控台頂端會出現藍色橫幅。這表示還原任務正在進行中。系統會自動將您重新導向至「任務」頁面，其中您的還原任務會顯示在還原任務清單中。這個最近任務的狀態為 `Pending`。您也可以搜尋，然後按一下還原任務 ID，來查看每個還原任務的詳細資訊。您可以按一下「重新整理」按鈕來重新整理還原任務清單，以檢視還原任務狀態的變更。

## 適用於 EC2 上 SAP HANA 的 [StartRestoreJob API](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html)
<a name="w2aac17c31c43c11"></a>

此動作可復原 Amazon Resource Name (ARN) 所識別的已儲存資源。

**請求語法**

```
PUT /restore-jobs HTTP/1.1
Content-type: application/json
{
   "[IdempotencyToken](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html#Backup-StartRestoreJob-request-IdempotencyToken)": "string",
   "[Metadata](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html#Backup-StartRestoreJob-request-Metadata)": { 
      "string" : "string" 
   },
   "[RecoveryPointArn](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html#Backup-StartRestoreJob-request-RecoveryPointArn)": "string",
   "[ResourceType](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html#Backup-StartRestoreJob-request-ResourceType)": "string"
}
```

**URI 請求參數**：該請求不會使用任何 URI 參數。

**請求內文**：該請求接受 JSON 格式的以下資料。

**IdempotencyToken**：客戶所選擇的字串，可用來區分在其他方面相同的 `StartRestoreJob` 呼叫。重試具有相同等冪性字符的成功請求會導致出現成功消息，但未執行任何動作。

類型：字串

必要：否

**中繼資料**

一組中繼資料鍵值對。包含還原復原點所需的資訊，例如資源名稱。您可以在備份資源時，透過呼叫 `GetRecoveryPointRestoreMetadata` 取得有關資源的組態中繼資料。但是，除了 `GetRecoveryPointRestoreMetadata` 提供的值之外，還可能需要還原資源。例如，如果原始資源已存在，您可能需要提供新資源名稱。

您需要包含特定中繼資料，才能還原 Amazon EC2 執行個體上的 SAP HANA。如需 SAP HANA 特定項目，請參閱《[StartRestoreJob 中繼資料](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html#API_StartRestoreJob_RequestBody)》。

若要擷取相關的中繼資料，您可以使用呼叫 [https://docs.aws.amazon.com/aws-backup/latest/devguide/API_GetRecoveryPointRestoreMetadata.html](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_GetRecoveryPointRestoreMetadata.html)。

標準 SAP HANA 資料庫復原點的範例：

```
"RestoreMetadata": {
        "BackupSize": "1660948480", 
        "DatabaseName": "DATABASENAME",
        "DatabaseType": "SYSTEM",
        "HanaBackupEndTime": "1674838362",
        "HanaBackupId": "1234567890123",
        "HanaBackupPrefix": "1234567890123_SYSTEMDB_FULL",
        "HanaBackupStartTime": "1674838349",
        "HanaVersion": "2.00.040.00.1553674765",
        "IsCompressedBySap": "FALSE",
        "IsEncryptedBySap": "FALSE",
        "SourceDatabaseArn": "arn:aws:ssm-sap:region:accountID:HANA/applicationID/DB/DATABASENAME",
        "SystemDatabaseSid": "HDB",
        "aws:backup:request-id": "46bbtt4q-7unr-2897-m486-yn378k2mrw9c"
    }
```

連續 SAP HANA 資料庫復原點的範例：

```
"RestoreMetadata": {
        "AvailableRestoreBases": "[1234567890123,9876543210987,1472583691472,7418529637418,1678942598761]",
        "BackupSize": "1711284224",
        "DatabaseName": "DATABASENAME",
        "DatabaseType": "TENANT",
        "EarliestRestorablePitrTimestamp": "1674764799789",
        "HanaBackupEndTime": "1668032687",
        "HanaBackupId": "1234567890123",
        "HanaBackupPrefix": "1234567890123_HDB_FULL",
        "HanaBackupStartTime": "1668032667",
        "HanaVersion": "2.00.040.00.1553674765",
        "IsCompressedBySap": "FALSE",
        "IsEncryptedBySap": "FALSE",
        "LatestRestorablePitrTimestamp": "1674850299789",
        "SourceDatabaseArn": "arn:aws:ssm-sap:region:accountID:HANA/applicationID/DB/SystemDatabaseSid",
        "SystemDatabaseSid": "HDB",
        "aws:backup:request-id": "46bbtt4q-7unr-2897-m486-yn378k2mrw9d"
    }
```

## 適用於 EC2 上 SAP HANA 的 CLI
<a name="w2aac17c31c43c13"></a>

命令 `start-restore-job` 可復原 Amazon Resource Name (ARN) 所識別的已儲存資源。CLI 將遵循上述 API 指導方針。

**概要：**

```
start-restore-job
--recovery-point-arn value
--metadata value
--aws:backup:request-id value          
[--idempotency-token value]
[--resource-type value]
[--cli-input-json value]
[--generate-cli-skeleton value]
[--debug]
[--endpoint-url value]
[--no-verify-ssl]
[--no-paginate]
[--output value]
[--query value]
[--profile value]
[--region value]
[--version value]
[--color value]
[--no-sign-request]
[--ca-bundle value]
[--cli-read-timeout value]
[--cli-connect-timeout value]
```

**選項**

`--recovery-point-arn` (字串) 是 Amazon Resource Name (ARN) 形式的字串，可唯一識別復原點；例如 `arn:aws:backup:region:123456789012:recovery-point:46bbtt4q-7unr-2897-m486-yn378k2mrw9d`

`--metadata` (映射)：一組中繼資料鍵值對。包含還原復原點所需的資訊，例如資源名稱。您可以在備份資源時，透過呼叫 `GetRecoveryPointRestoreMetadata` 取得有關資源的組態中繼資料。不過，除了 `GetRecoveryPointRestoreMetadata` 提供的值之外，還可能需要還原資源。您需要指定特定中繼資料，才能還原 Amazon EC2 執行個體上的 SAP HANA：
+ `aws:backup:request-id`：這是用於等冪性的任何 UUID 字串。不會以任何方式改變您的還原體驗。
+ `aws:backup:TargetDatabaseArn`：指定您要還原的目標資料庫。這是 Amazon EC2 上的 SAP HANA 資料庫 ARN。
+ `CatalogRestoreOption`：指定您要還原目錄的來源位置。可以是 `NO_CATALOG`、`LATEST_CATALOG_FROM_AWS_BACKUP`、`CATALOG_FROM_LOCAL_PATH` 的其中之一
+ `LocalCatalogPath`：如果 CatalogRestoreOption 中繼資料值為 `CATALOG_FROM_LOCAL_PATH`，請指定 EC2 執行個體上的本機目錄路徑。這應該是 EC2 執行個體中的有效檔案路徑。
+ `RecoveryType`：目前支援 `FULL_DATA_BACKUP_RECOVERY`、`POINT_IN_TIME_RECOVERY` 和 `MOST_RECENT_TIME_RECOVERY` 復原類型。

鍵 = (字串)；值 = (字串)。速記語法：

```
KeyName1=string,KeyName2=string
```

JSON 語法：

```
{"string": "string"
  ...}
```

`--idempotency-token` 是使用者所選擇的字串，可用來區分在其他方面相同的 `StartRestoreJob` 呼叫。重試具有相同等冪性字符的成功請求會導致出現成功消息，但未執行任何動作。

`--resource-type` 是一個字串，可啟動任務以還原下列其中一個資源的復原點：適用於 Amazon EC2 上 SAP HANA 的 `SAP HANA on Amazon EC2`。(選擇性)** SAP HANA 資源可使用命令 `aws ssm-sap tag-resource` 進行標記

**輸出**：`RestoreJobId` 是一個字串，可唯一識別還原復原點的任務。

## SAP HANA 高可用性 (HA) 還原
<a name="saphanarestoreha"></a>

當您還原 SAP HANA 的高可用性 (HA) 系統時，需要包含一些重要的考量事項和其他步驟。展開下方最符合您使用案例的區段。

還原案例：

### SAP HANA HA 目標的系統資料庫
<a name="systemdbtargetha"></a>

還原至目標 （目的地） SAP HANA HA 系統之前，

1. 如果已安裝叢集，請將所有叢集備註置於維護模式中。

1. 停止所有節點上的 SAP HANA 資料庫，包括主要和次要節點。

1. *（建議）* 停用任何備份計劃，以確保它們不會干擾還原操作。

還原任務完成後，請前往還原的 SAP HANA HA 系統，然後：

1. 在主要模式中啟動 SAP HANA 資料庫。

1. 手動啟動任何還原系統資料庫但未還原其租用戶的租用戶資料庫。

1. 在主要節點和次要節點之間重新建立 SAP HANA 系統複寫 (HSR)。

1. 在次要節點上啟動 SAP HANA 資料庫。

1. 如果已安裝叢集，請確保所有叢集節點都在線上。

1. 啟用您在還原操作之前停用的任何備份計畫。

*（選用）* 您可以呼叫 ，在 [AWS Systems Manager for SAP](https://docs.aws.amazon.com/ssm-sap/latest/userguide/what-is-ssm-for-sap.html) 上保持應用程式同步[https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_StartApplicationRefresh.html](https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_StartApplicationRefresh.html)，也可以等待排程的應用程式重新整理，以帶來最新的 SAP 中繼資料。

### SAP HANA 單一節點目標的系統資料庫
<a name="systemdbtargetsingle"></a>

開始還原任務之前，請前往目標單一節點 SAP HANA 系統，然後：

1. 在目標 SAP HANA 系統上停止 SAP HANA 資料庫。

1. *（建議）* 停用任何備份計劃，以確保它們不會干擾還原操作。

還原任務完成後，請前往目標單一節點 SAP HANA 系統，然後：

1. 在目標 SAP HANA 系統上啟動 SAP HANA。

1. 手動啟動目標節點上的每個租用戶資料庫。

1. 啟用您在還原操作之前停用的任何備份計畫。

*（選用）* 您可以呼叫 ，在 [AWS Systems Manager for SAP](https://docs.aws.amazon.com/ssm-sap/latest/userguide/what-is-ssm-for-sap.html) 上保持應用程式同步[https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_StartApplicationRefresh.html](https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_StartApplicationRefresh.html)，也可以等待排程的應用程式重新整理，以帶來最新的 SAP 中繼資料。

### 租戶資料庫 （就地或系統複製）
<a name="tenantdb"></a>

開始還原任務之前，請前往目標 SAP HANA 系統，然後：

1. *（選用，但建議）* 將任何已安裝的叢集置於維護模式，以避免在還原操作期間意外接管。

1. 確保系統資料庫在目標 SAP HANA 系統上執行。

1. *（建議）* 停用任何備份計劃，以確保它們不會干擾還原操作。

還原任務完成後：
+ 啟用您在還原操作之前停用的任何備份計畫。

## 疑難排解
<a name="saphanarestoretroubleshooting"></a>

如果在嘗試進行備份操作時發生下列任何錯誤，請參閱相關的解決方法。
+ **錯誤：**持續備份日誌錯誤

  為了維護連續備份的復原點，SAP HANA 會為所有變更建立日誌。當日誌無法使用時，每個連續復原點的狀態都會是 `STOPPED`。可用來還原的最後一個可行復原點具有 `AVAILABLE` 狀態。如果在狀態為 `STOPPED` 的復原點與狀態為 `AVAILABLE` 的復原點時間間隔內遺失日誌資料，則無法保證這些時間還原成功。如果您輸入此範圍內的日期和時間， AWS Backup 會嘗試備份，但會使用最接近的可用可還原時間。此錯誤會顯示訊息 `“Encountered an issue with log backups. Please check SAP HANA for details."`

  **解決方法：**在主控台中，會根據日誌顯示最近的可還原時間。您可以輸入比所顯示時間更近的時間。不過，如果日誌中無法使用此時間的資料， AWS Backup 將使用最新的可還原時間。
+ **錯誤：**`Internal error`

  **解決方案：**從您的主控台或聯絡人建立支援案例， 支援 其中包含還原的詳細資訊，例如還原任務 ID。
+ **錯誤：**`The provided role arn:aws:iam::ACCOUNT_ID:role/ServiceLinkedRole cannot be assumed by AWS Backup`

  **解決方法：**確定呼叫還原時所扮演的角色具有建立服務連結角色的必要許可。
+ **錯誤：**`User: arn:aws:sts::ACCOUNT_ID:assumed-role/ServiceLinkedRole/AWSBackup-ServiceLinkedRole is not authorized to perform: ssm-sap:GetOperation on resource: arn:aws:ssm-sap:us-east-1:ACCOUNT_ID:...`

  **解決方法：**確定已正確輸入呼叫必要條件中所述的還原許可時所扮演的角色。
+ **錯誤：**`b* 449: recovery strategy could not be determined: [111014] The backup with backup id '1660627536506' cannot be used for recovery SQLSTATE: HY000\n`

  **解決方法：**確定已正確安裝 Backint Agent。檢查所有先決條件，特別是在 SAP 應用程式伺服器上[安裝 AWS BackInt Agent 和 AWS Systems Manager for](https://docs.aws.amazon.com/sap/latest/sap-hana/aws-backint-agent-installing-configuring.html) SAP，然後再次嘗試安裝 BackInt Agent。
+ **錯誤：**`IllegalArgumentException: Restore job provided is not ready to return chunks, current restore job status is: CANCELLED`

  **解決方法：**還原任務已由服務任務流程取消。請重試還原任務。
+ **錯誤：**在 SAP HANA 高可用性系統上還原租用戶資料庫時遇到問題： `b* -10709: Connection failed (RTE:[89006] System call 'connect' failed, rc=111:Connection refused ([::1]:40404 → localhost:30013))\n`

  **解決方案：**檢查 SAP HANA 以確保 SYSTEMDB 已啟動並執行。
+ **錯誤：**`b'* 448: recovery could not be completed: [301102] exception 301153: Sending root key to secondary failed: connection refused. This may be caused by a stopped system replication secondary. Please keep the secondary online to receive the restored root key. Alternatively you could unregister the secondary site in case of an urgent recovery.\n SQLSTATE: HY000\n'`

  **解決方案：**在 SAP HANA 高可用性系統上，執行作用中還原操作時，SAP HANA 可能不會在次要節點上執行。在次要節點上啟動 SAP HANA，然後再次重試還原任務。
+ **錯誤：**`RequestError: send request failed\ncaused by: read tcp 10.0.131.4:40482->35.84.99.47:443: read: connection timed out"`

  **解決方法：**執行個體上發生暫時性網路不穩定。請重試還原。如果此問題持續發生，請嘗試將 `ForceRetry: "true"` 新增至位於 `/hana/shared/aws-backint-agent/aws-backint-agent-config.yaml.` 的代理程式組態檔案 

如需任何其他 AWS 與 Backint 代理程式相關的問題，請參閱[針對 Backint Agent for SAP HANA 進行故障診斷 AWS](https://docs.aws.amazon.com/sap/latest/sap-hana/aws-backint-agent-troubleshooting.html)。