SAP HANA 適用的 Cloud Storage Backint 代理程式總覽

您可以使用 SAP 認證的 SAP HANA 適用 Cloud Storage Backint 代理程式 (Backint 代理程式),將 SAP HANA 備份從執行於 Google Cloud、Bare Metal 解決方案、內部部署或其他雲端平台的 SAP HANA 執行個體,直接傳送至 Cloud Storage。

Backint 代理程式與 SAP HANA 整合,因此您可以使用原生的 SAP 備份與復原功能,直接從 Cloud Storage 儲存及擷取備份。

使用 Backint 代理程式時,您不需要使用永久磁碟儲存空間來備份資料。

如需 Backint 代理程式的安裝說明,請參閱 SAP HANA 適用的 Cloud Storage Backint 代理程式安裝指南

如要進一步瞭解 Backint 代理程式的 SAP 認證,請參閱:

Backint 代理程式設定檔

您可以在純文字檔中指定參數,藉此設定 Backint 代理程式。

預設設定檔名為 parameters.txt,預設位置為 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.txt

您可以為每個檔案指定不同的名稱,藉此指定多個設定檔。

舉例來說,您可以在名為 backint-log-backups.txt 的檔案中指定記錄備份設定,並在名為 backint-data-backups.txt 的檔案中指定資料備份設定。

將備份儲存在 Cloud Storage 值區中

Backint 代理程式會將 SAP HANA 備份儲存在 Cloud Storage 值區中。

建立值區時,您可以選擇值區位置和值區儲存空間級別。

值區位置可以是單一區域雙區域多區域。您選擇的選項取決於您是否需要限制資料的位置、備份和還原作業的延遲時間要求,以及是否需要防範區域性停機情形。詳情請參閱「值區位置」。

在與 SAP HANA 執行個體執行的地區相同或相近的地區中,選取雙地區或多地區值區。

請根據備份資料的保留時間、預期存取頻率和費用,選擇適當的儲存空間級別。詳情請參閱「儲存空間級別」。

使用 Backint 代理程式備份多個串流資料

對於 SAP HANA 2.0 SP05 之前的版本,SAP HANA 支援超過 128 GB 的資料庫多串流功能。自 SAP HANA 2.0 SP05 起,您現在可以透過 SAP HANA 參數 parallel_data_backup_backint_size_threshold 設定這個門檻,該參數會指定啟用多串流功能的資料庫備份大小下限 (以 GB 為單位)。

多串流功能可用於提高總處理量,以及備份超過 5 TB 的資料庫 (這是 Cloud Storage 中單一物件的最大大小)。

用於多重串流的最佳管道數量取決於您使用的 Cloud Storage 值區類型,以及 SAP HANA 執行的環境。請同時考量連接至 HANA 執行個體的資料磁碟吞吐量能力,以及管理員為備份活動分配的頻寬。

您可以調整傳送量,方法是變更串流數量,或是使用 Backint 代理程式設定檔 parameters.txt 中的 #RATE_LIMIT_MB 參數來限制傳送量。

如果是多區域值區,請在 SAP HANA global.ini 設定檔中將 parallel_data_backup_backint_channels 參數設為 8,從 8 個通道開始。

針對區域值區,請將 global.ini 檔案中的 parallel_data_backup_backint_channels 設為 12,並從 12 個頻道開始。

視需要調整管道數量,以符合備份效能目標。

如 SAP HANA 說明文件所述,每個額外管道都需要 512 MB 的 I/O 緩衝區。在 global.ini 檔案的備份區段中,適當使用 data_backup_buffer_size 參數,指定 I/O 緩衝區的大小。如要進一步瞭解 I/O 緩衝區大小對備份時間的影響,請參閱 SAP 注意事項 2657261。自 HANA 2.0 SP05 起,SAP 已將此參數的最大值指定為 4 GB。在 Google Cloud 中進行測試後,我們發現在預設值之外大幅增加緩衝區大小並無益處,但這可能因工作負載而異。

如要進一步瞭解多串流功能,請參閱 SAP HANA 版本專屬的 SAP HANA 管理指南,瞭解如何使用第三方備份工具進行多串流資料備份

平行上傳

您可以啟用 Backint 代理程式的平行上傳功能,改善記錄備份檔案的上傳效能。這對於記錄備份檔案特別有用,因為這些檔案無法從 SAP HANA 進行多串流傳輸。

如要備份資料,您可以只使用 SAP HANA 參數 parallel_data_backup_backint_channels,調整 SAP HANA 備份管道的數量。

啟用平行上傳功能後,Backint 代理程式會將從 SAP HANA 收到的每個備份檔案分割成多個部分,然後並行上傳,藉此提升上傳效能。

當 Cloud Storage 收到各個部分時,會重新組合這些部分,並儲存為 Backint 代理程式從 SAP HANA 收到的原始單一檔案。單一檔案的大小不得超過 Cloud Storage 中物件的大小限制 (5 TB)。

設定平行上傳

parameters.txt 設定檔中啟用平行上傳功能,方法是在 #PARALLEL_FACTOR 參數上指定平行上傳執行緒的數量上限。

參數 #PARALLEL_PART_SIZE_MB 用於設定每個部分的大小,而 #THREADS 則用於決定工作執行緒的數量,這兩者僅供進階調整使用。除非 Cloud Customer Care 建議您變更這些設定,否則請勿擅自更動。您幾乎不需要變更預設值。

如要進一步瞭解並行上傳參數,請參閱「Backint 代理程式的設定選項」。

平行上傳限制

並行上傳功能有以下限制:

  • 如果您使用 #ENCRYPTION_KEY#KMS_KEY_NAME 設定參數啟用加密功能,就無法使用並行上傳功能。加密功能與平行上傳功能不相容。如果您使用這兩個加密參數指定 #PARALLEL_FACTOR 參數,Backint 代理程式會以 1 狀態結束。
  • 如果啟用壓縮功能,就無法使用並行上傳功能。壓縮功能與平行上傳功能不相容。從 1.0.22 版開始,如果您在設定中指定 #PARALLEL_FACTOR 參數並省略 #DISABLE_COMPRESSION 參數,Backint 代理程式會以 1 狀態退出。
  • 如果 Cloud Storage 值區實作了保留政策,則該值區不支援並行上傳。保留政策會防止將部分重新組合為單一檔案,導致上傳失敗。

如要進一步瞭解並行上傳參數,請參閱「Backint 代理程式的設定選項」。

調整平行上傳

針對記錄備份,平行上傳作業可大幅改善備份總處理量,因為 SAP HANA 不會進行多串流記錄備份。在大多數情況下,只要指定 #PARALLEL_FACTOR 為 16 以下即可。如果記錄檔的數量非常龐大,您可以使用較高的 #PARALLEL_FACTOR 值 (例如 16),並提高 SAP HANA 參數 log_segment_size_mbmax_log_backup_size 的值,藉此盡可能提高吞吐量。

在某些情況下,使用較高的 #PARALLEL_FACTOR 值可能會降低整體傳輸量,例如如果您同時使用大量平行備份管道,就可能發生這種情況。

如要限制備份使用的網路頻寬,請使用 #RATE_LIMIT_MB 設定並行上傳作業可使用的頻寬上限。

如要為特定環境、工作負載和備份類型找出合適的設定,請使用不同的設定執行測試,並測量備份傳輸量。

Backint 代理程式的驗證和存取權控管

Google Cloud 會使用服務帳戶來識別 Backint 代理程式等程式,並控管程式可存取的 Google Cloud 資源。

必要的 Cloud Storage 權限

您必須為 Backint 代理程式的服務帳戶,授予 Backint 代理程式存取的 Google Cloud 資源權限。Storage Object Admin 角色可提供 Cloud Storage 值區中物件的列出、取得、建立和刪除權限。

您可以在專案層級或值區層級設定服務帳戶的權限。如果您在專案層級設定,則會授予 Backint 代理程式專案中所有值區的存取權。如果您在值區層級設定,則會將 Backint 代理程式存取權僅限於單一值區。如要進一步瞭解 Cloud Storage 值區權限,請參閱:

Backint 代理程式的服務帳戶選項

如果 SAP HANA 是在 Compute Engine VM 上執行,Backint 代理程式預設會使用 VM 的服務帳戶。

如果您使用 VM 服務帳戶,Backint 代理程式將具備與使用 VM 服務帳戶的所有其他程式和程序相同的專案層級權限。

如要實施最嚴格的存取控制,請為 Backint 代理程式建立獨立的服務帳戶,並授予服務帳戶對值區的存取權限。

如果 SAP HANA 並未在 Compute Engine VM 上執行,您必須為 Backint 代理程式建立服務帳戶。在Google Cloud 專案中建立服務帳戶,該專案包含 Backint 代理程式要使用的 Cloud Storage 值區。

為 Backint 代理程式建立服務帳戶時,您也需要建立服務帳戶金鑰。您會將金鑰儲存在 SAP HANA 主機上,並在 parameters.txt 檔案中指定金鑰的路徑。當 SAP HANA 在 Compute Engine VM 上執行時,指定金鑰路徑可讓 Backint 代理程式使用與金鑰相關聯的服務帳戶,而非 VM 服務帳戶。

如果您使用由 Cloud Key Management Service 產生的客戶代管加密金鑰來加密 Cloud Storage 中的備份,就必須授予服務帳戶存取加密金鑰的權限。詳情請參閱「為服務帳戶指派 Cloud KMS 金鑰」。

存取 Google Cloud API 和中繼資料伺服器

在備份和復原作業期間,Backint 代理程式需要存取下列Google Cloud IP 位址和主機:

  • 如要存取 Cloud Storage:
    • 代理程式 1.0.14 以上版本:storage.googleapis.com
    • 1.0.13 以下版本:www.googleapis.com
  • 如果您在 #SERVICE_ACCOUNT 屬性中指定服務帳戶,oauth2.googleapis.com 會用於驗證。
  • 169.254.169.254:Compute Engine 執行個體中繼資料伺服器,預設會解析內部 DNS 名稱。
  • metadata.google.internal 也適用於 VM 執行個體中繼資料。

如果 Backint 代理程式和 SAP HANA 是在無法存取網際網路的 Compute Engine VM 上執行,您必須設定 Private Google Access,讓 Backint 代理程式能夠與 Cloud Storage 互動,並在使用專用服務帳戶時,透過Google Cloud驗證自身。

如要設定私人 Google 存取權,請參閱「設定私人 Google 存取權」。

Proxy 伺服器和 Backint 代理程式

根據預設,Backint 代理程式會略過任何 HTTP Proxy,且不會讀取作業系統中的 Proxy 環境變數,例如 http_proxyhttps_proxyno_proxy

如果沒有其他替代方案,或貴機構瞭解效能影響,且具備透過 Proxy 伺服器轉送備份的效能支援專業知識,您可以設定 Backint 代理程式使用 Proxy。

net.properties 檔案包含 Backint 代理程式的 Proxy 設定:

/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties

略過 Proxy 伺服器進行備份和復原作業

雖然 Backint 代理程式預設會略過 Proxy 伺服器,但您可以透過在 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties 檔案的 http.nonProxyHosts 參數中指定必要的 Google Cloud網域名稱和 IP 位址,明確指定略過 Proxy 伺服器。例如:

http.nonProxyHosts=localhost|127.|[::1]|.googleapis.com|169.254.169.254|metadata.google.internal

使用 Proxy 伺服器進行備份和復原作業

如要設定 Backint 代理程式,以便透過 Proxy 伺服器傳送備份,請在 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties 檔案中指定 Proxy 主機和連接埠號碼參數。

針對 VM 執行個體中繼資料的查詢,Backint 代理程式無法使用 Proxy,因此您必須在 http.nonProxyHosts 參數中指定執行個體中繼資料的網域名稱和 IP 位址。

以下範例顯示 Backint 代理程式的有效 Proxy 設定:

http.proxyHost=proxy-host
http.proxyPort=proxy-port
http.nonProxyHosts=localhost|127.*|[::1]|169.254.169.254|metadata.google.internal
https.proxyHost=proxy-host
https.proxyPort=proxy-port

Backint 代理程式更新

Google Cloud 會定期發布 Backint 代理程式的新版本,您可以自行下載及安裝,無須額外付費。

在正式環境中將 Backint 代理程式更新為新版本前,請務必先在非正式環境中測試新版本。

更新 Backint 代理程式時,SAP HANA 主機必須支援 https://www.googleapis.com/ 的遠端 HTTP 要求。

如要將現有 Backint 代理程式執行個體更新為新版本,請參閱「將 Backint 代理程式更新為新版本」。

備份加密

Cloud Storage 一律會在將資料寫入磁碟之前進行加密。如要套用自己的額外加密層,您可以為 Backint 代理程式備份的伺服器端加密提供自己的加密金鑰。

您可以透過下列兩種方式,為 Backint 代理程式提供自己的金鑰:

如要使用客戶管理的加密金鑰,請在 parameters.txt 檔案的 #KMS_KEY_NAME 參數中指定金鑰路徑。您也需要將金鑰存取權授予 VM 或 Backint 代理程式服務帳戶。如要進一步瞭解如何授予服務帳戶加密金鑰存取權,請參閱「為服務帳戶指派 Cloud KMS 金鑰」。

如要使用客戶提供的加密金鑰,請在 parameters.txt 檔案的 #ENCRYPTION_KEY 參數中指定金鑰路徑。金鑰必須是 Base64 編碼的 AES-256 金鑰字串,如「客戶提供的加密金鑰」所述。

加密限制

以下限制適用於加密功能:

  • 如果同時指定 #KMS_KEY_NAME#ENCRYPTION_KEY,Backint 代理程式會失敗,並以狀態 1 結束。

  • 如果 #PARALLEL_FACTOR 是使用 #KMS_KEY_NAME#ENCRYPTION_KEY 指定,Backint 代理程式會失敗,並以狀態 1 結束。

設定參數參考資料

您可以在 parameters.txt 設定檔中為 Backint 代理程式指定多個選項。

首次下載 Backint 代理程式時,parameters.txt 檔案只包含兩個參數:

  • #BUCKET
  • #DISABLE_COMPRESSION

請注意,# 是參數的一部分,而非註解指標。

請在新的一行中指定每個參數。請以空格分隔參數和值。

下表顯示 Backint 代理程式設定參數。

參數和值 說明
#BUCKET bucket-name 這是必要參數,用於指定 Backint 代理程式寫入及讀取的 Cloud Storage 值區名稱。Backint 代理程式會使用值區的儲存空間級別建立備份物件,並支援所有儲存空間級別。Backint 代理程式會使用 Compute Engine 的預設加密功能,將靜態資料加密。
#CHUNK_SIZE_MB MB 進階調整參數。

在備份或還原作業期間,控制傳送至 Cloud Storage 的 HTTPS 要求大小。預設區塊大小為 100 MB,也就是說,單一 HTTP 要求流程會在傳輸 100 MB 資料前保持開啟狀態。

除非客戶服務團隊指示您變更,否則請勿修改這項設定。預設設定可平衡吞吐量和可靠性,因此幾乎不需要變更。

由於 Backint 代理程式會在作業失敗前重試失敗的 HTTP 要求多次,因此如果要求失敗,較小的區塊大小會導致需要重新傳送的資料減少。分塊大小越大,總處理量就越高,但在要求失敗的情況下,需要的記憶體用量和重新傳送資料的時間也會增加。

#DISABLE_COMPRESSION

選用參數,可在 Backint 代理程式將備份寫入 Cloud Storage 值區時,停用預設的即時壓縮功能。預設會指定 #DISABLE_COMPRESSION

建議您指定 #DISABLE_COMPRESSION。雖然壓縮功能可降低 Cloud Storage 中備份的儲存空間成本,但在備份作業期間需要更多 CPU 處理,且會降低有效備份傳輸量。

無論設定為何,Backint 代理程式在還原作業期間都會支援壓縮或未壓縮的備份檔案。

#ENCRYPTION_KEY path/to/key/file 指定 Cloud Storage 用來加密備份的客戶提供的加密金鑰路徑。路徑必須指定為 base64 編碼 AES-256 金鑰的完整修訂路徑。

您無法使用 #KMS_KEY_NAME 或 #PARALLEL_FACTOR 指定 #ENCRYPTION_KEY。

如要進一步瞭解如何在 Google Cloud上使用您自己的加密金鑰,請參閱「客戶提供的加密金鑰

#KMS_KEY_NAME path/to/key/file 指定 Cloud Key Management Service 產生的客戶代管加密金鑰路徑。Cloud Storage 會使用這個金鑰加密備份。

如果 SAP HANA 在 Compute Engine VM 上執行,則 VM 必須可存取金鑰。如果 SAP HANA 並未在 Google Cloud上執行,Cloud KMS 金鑰必須連結至 Backint 代理程式服務帳戶。詳情請參閱「服務帳戶」。

請使用下列格式指定路徑: projects/key_project/locations/location/keyRings/key_ring_name/cryptoKeys/key_name

其中:

  • key_project 是與金鑰相關聯的專案 ID。
  • location 是金鑰的區域供應情形。詳情請參閱「Cloud KMS 的位置類型」。
  • key_ring_name 是金鑰所屬金鑰環的名稱。
  • key_name 是金鑰的名稱。

您無法使用 #ENCRYPTION_KEY 或 #PARALLEL_FACTOR 指定 #KMS_KEY_NAME。

如要進一步瞭解如何在 Google Cloud上管理自己的加密金鑰,請參閱「客戶管理的加密金鑰

#MAX_GCS_RETRY integer 定義 Backint 代理程式重試讀取及寫入 Cloud Storage 失敗次數的上限。預設值為 5,也是建議值。
#PARALLEL_FACTOR integer

可選參數,可啟用平行上傳功能,並設定平行上傳的數量上限。值為 `1` 時,系統會停用平行上傳功能。預設值為 `1`。

請勿在下列情況下啟用並行上傳功能:

  • 目標值區會使用資料保留政策。
  • 已指定 #ENCRYPTION_KEY#KMS_KEY_NAME
#PARALLEL_PART_SIZE_MB integer 進階調整參數。

設定並行上傳的每個部分大小 (以 MB 為單位)。預設值為 128 MB。

除非客戶服務團隊指示您變更,否則請勿修改這項設定。您很少需要變更預設設定。

#RATE_LIMIT_MB integer 這個選用參數可在備份或還原作業期間,設定傳出至 Compute Engine 的頻寬上限 (以 MB 為單位)。根據預設, Google Cloud 不會限制 Backint 代理程式的網路頻寬。設定後,處理量可能會有所不同,但不會超過指定上限。
#SERVICE_ACCOUNT path/to/key/file 選用參數,可在未使用 Compute Engine 預設驗證機制時,指定 JSON 編碼 Google Cloud 服務帳戶金鑰的完整合格路徑。指定 #SERVICE_ACCOUNT 會指示 Backint 代理程式在驗證 Cloud Storage 服務時使用金鑰。建議使用 Compute Engine 預設驗證機制。
#THREADS integer 進階調整參數。

設定 worker 執行緒數量。預設值為機器中的處理器數量。

除非客戶服務團隊指示您變更,否則請勿修改這項設定。您很少需要變更預設設定。

#READ_IDLE_TIMEOUT integer 進階調整參數。

設定 Backint 代理程式等待開啟備份檔案的時間上限 (以毫秒為單位)。預設值為 1000。

除非客戶服務團隊指示您變更,否則請勿修改這項設定。您很少需要變更預設設定。

#HTTP_READ_TIMEOUT integer 進階調整參數。

設定讀取 Cloud Storage API 要求回應的逾時時間 (以毫秒為單位)。預設值為 -1,表示沒有逾時。

除非客戶服務團隊指示您變更,否則請勿修改這項設定。您很少需要變更預設設定。

Backint 代理程式的記錄

除了 SAP HANA 在 backup.log 中保留的記錄外,Backint 代理程式也會將作業和通訊錯誤事件寫入 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcslogs 子目錄的記錄檔案。

記錄檔大小達到 10 MB 時,Backint 代理程式會輪替記錄檔。

如有需要,您可以在 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/logging.properties 中編輯 Backint 代理程式記錄設定。

Backint 代理程式也支援 Cloud Logging。如要啟用 Cloud Logging,請參閱 SAP HANA 適用的 Cloud Storage Backint 代理程式安裝指南

在 SAP HANA HA 部署中使用 Backint 代理程式

在 SAP HANA 高可用性叢集中,您需要在叢集中的每個節點上安裝 Backint 代理程式。

針對 HA 叢集中的每個 SAP HANA 執行個體,使用相同的 Backint 代理程式設定和 Cloud Storage 值區規格。您可以使用相同的值區規格,因為在正常運作期間,只有高可用性設定中的有效 SAP HANA 執行個體會將備份寫入 Cloud Storage。次要系統處於複製模式。這適用於資料、記錄和目錄備份。

此外,應用程式叢集軟體 (例如 Pacemaker) 可防止分割腦情境,也就是叢集中有多個 SAP HANA 系統認為自己是主要執行個體。

不過,在維護作業期間,如果叢集可能會停用,且待命資料庫已從複製作業中移除並重新上線,您必須確保備份只會在主要資料庫上觸發。

由於 Backint 代理程式無法得知哪個 SAP HANA 系統目前為活動系統,且沒有排程或觸發機制,因此您必須使用 SAP 機制 (例如 SAP ABAP 交易 DB13) 管理排程和備份觸發事件。

SAP ABAP 應用程式會透過虛擬 IP 連線至 HA 叢集,因此觸發事件一律會路由至有效的 SAP HANA 執行個體。

如果備份觸發事件是在每部伺服器的本機端定義 (例如本機作業系統指令碼),且主系統和次要系統都認為自己是主動系統,則兩者都可能會嘗試將備份寫入儲存空間集區。

在 SAP HANA DR 部署中使用 Backint 代理程式

在災難復原設定中,如果您使用非同步 SAP HANA 系統複製功能,讓其他 Google Cloud 地區的 SAP HANA 復原執行個體保持同步,請為復原執行個體指定與主要 SAP HANA 系統不同的值區。

雖然 DR 系統通常處於複製模式,因此無法自行執行備份作業,但在例行災難復原測試期間,復原執行個體會上線,並可能觸發備份作業。如果是這樣,且復原系統未使用獨立的值區,備份可能會覆寫主要資料庫中的資料。

如果發生實際災難,需要從備份復原至 DR 區域,您可以更新 Backint 代理程式設定,以參照主要 HA 系統使用的多區域值區。

在 SAP HANA 向外擴充系統中使用 Backint 代理程式

在 SAP HANA 向外擴充系統中,您需要在系統的每個節點上安裝 Backint 代理程式。

如要簡化 parameters.txt 設定檔的管理作業,以及 (如果您使用了) Backint 代理程式服務帳戶金鑰的管理作業,您可以將這些檔案放在共用的 NFS 目錄中。