使用磁碟快照備份及復原 SAP HANA

本指南說明如何使用 Google Cloud的 SAP 代理程式,透過磁碟快照功能備份及復原 SAP HANA 資料庫。

如要瞭解這項功能,請參閱「使用磁碟快照備份及復原 SAP HANA」。

事前準備

設定權限

如要使用 Google Cloud的 SAP 代理程式磁碟快照功能備份及復原 SAP HANA 資料庫,您必須設定下列權限:

  • 如要建立磁碟快照,請授予下列 IAM 權限:

    使用一個資料磁碟擴充

    如果 /hana/data 磁碟區是託管在一個永久磁碟或 Hyperdisk 磁碟區中,請將下列權限授予 Compute Engine 執行個體:

    compute.disks.create
    compute.disks.createSnapshot
    compute.disks.get
    compute.disks.setLabels
    compute.disks.use
    compute.globalOperations.get
    compute.instances.attachDisk
    compute.instances.detachDisk
    compute.instances.get
    compute.snapshots.create
    compute.snapshots.get
    compute.snapshots.setLabels
    compute.snapshots.useReadOnly
    compute.zoneOperations.get
    

    使用資料磁碟區條紋擴充

    如果 /hana/data 磁碟區是在多個永久磁碟或 Hyperdisk 磁碟區上託管,請為 Compute Engine 執行個體授予下列權限:

    compute.disks.addResourcePolicies
    compute.disks.create
    compute.disks.get
    compute.disks.list
    compute.disks.removeResourcePolicies
    compute.disks.use
    compute.disks.useReadOnly
    compute.globalOperations.get
    compute.instances.attachDisk
    compute.instances.detachDisk
    compute.instances.get
    compute.instantSnapshotGroups.create
    compute.instantSnapshotGroups.delete
    compute.instantSnapshotGroups.get
    compute.instantSnapshotGroups.list
    compute.instantSnapshots.list
    compute.instantSnapshots.useReadOnly
    compute.resourcePolicies.create
    compute.resourcePolicies.use
    compute.resourcePolicies.useReadOnly
    compute.snapshots.create
    compute.snapshots.get
    compute.snapshots.list
    compute.snapshots.setLabels
    compute.snapshots.useReadOnly
    compute.zoneOperations.get
    

    向外擴充 (不含主機自動容錯移轉)

    如要進行擴大部署,請授予 Compute Engine 執行個體下列權限:

    compute.disks.addResourcePolicies
    compute.disks.create
    compute.disks.get
    compute.disks.list
    compute.disks.removeResourcePolicies
    compute.disks.use
    compute.disks.useReadOnly
    compute.globalOperations.get
    compute.instances.attachDisk
    compute.instances.detachDisk
    compute.instances.get
    compute.instantSnapshotGroups.create
    compute.instantSnapshotGroups.delete
    compute.instantSnapshotGroups.get
    compute.instantSnapshotGroups.list
    compute.instantSnapshots.list
    compute.instantSnapshots.useReadOnly
    compute.resourcePolicies.create
    compute.resourcePolicies.use
    compute.resourcePolicies.useReadOnly
    compute.resourcePolicies.delete
    compute.snapshots.create
    compute.snapshots.get
    compute.snapshots.list
    compute.snapshots.setLabels
    compute.snapshots.useReadOnly
    compute.zoneOperations.get
    
  • 如要建立以磁碟快照為基礎的備份,代理程式使用的 SAP HANA 資料庫使用者必須具備 BACKUP OPERATORBACKUP ADMIN 權限。詳情請參閱 SAP 文件「備份與復原作業所需的授權

  • 如要備份及復原 SAP HANA 資料庫,執行代理程式指令的作業系統使用者必須是 root 使用者,或是具備 sudo 存取權,才能執行下列指令。您也可以在 /etc/sudoers.d 目錄中建立群組,藉此提供 sudo 存取權,例如:

    %sapagent_snapshot_sudoers ALL=(ALL:ALL) NOPASSWD:/sbin/lvdisplay, /sbin/vgscan, /sbin/dmsetup, /sbin/lvscan, /usr/sbin/xfs_freeze, /usr/bin/google_cloud_sap_agent

驗證以磁碟快照為基礎的備份和復原作業設定

您可以驗證是否已正確 Google Cloud 設定代理程式,以便為 SAP HANA 系統執行磁碟快照備份和復原作業。方法是執行代理程式的 status 指令,這個指令自代理程式 3.7 版起就已支援。

如要這樣做,請按照下列步驟進行:

  1. 與 Compute Engine 執行個體或 Bare Metal 解決方案伺服器建立 SSH 連線。
  2. 執行下列指令:

    sudo /usr/bin/google_cloud_sap_agent status
    

    如果您已正確設定磁碟快照備份和復原功能,輸出內容就會包含下列內容。您的設定可能包含 default 以外的值。

    Agent Status:
        ...
        Systemd Service Enabled: True
        Systemd Service Running: True
        Cloud API Full Scopes: True
        Configuration File: /etc/google-cloud-sap-agent/configuration.json
        Configuration Valid: True
    ...
    ----------------------------------------------------------------------------
    Disk Snapshot: Enabled
        Status: Fully Functional
        IAM Permissions: All granted
    ...

建立磁碟一致性群組

如果 /hana/data 磁碟區位於單一磁碟上,請略過本節。

如果 /hana/data 磁碟區位於多個磁碟上,您必須建立一致性群組,並將代管 /hana/data 磁碟區的磁碟新增至該一致性群組。您必須在與磁碟相同的地區中建立一致性群組。

如要進一步瞭解如何執行這項操作,請參閱「建立一致性群組」。

請記下一致性群組名稱,代理程式在建立快照型備份時會使用這個值。

建立以磁碟快照為基礎的備份

如要為 SAP HANA 資料庫的 /hana/data 磁碟分割區建立以磁碟快照為基礎的備份,請執行 Google Cloud的 SAP 代理程式 hanadiskbackup 指令:

使用一個資料磁碟擴充

如要為 SAP HANA 資料庫的 /hana/data 磁區建立以磁碟快照為基礎的備份,請執行 Google Cloud的 SAP 代理程式 hanadiskbackup 指令:

自 3.3 版起,-source-disk-source-disk-zone 引數可選用,可與 hanadiskbackup 指令搭配使用。這是因為代理程式可以自動偵測代管 /hana/data 目錄的磁碟。不過,如果您指定這些引數,則會覆寫代理程式的自動偵測功能。

  • 如果您想使用 hdbuserstore 金鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -sid=SID \
          -hdbuserstore-key=HDB_USERSTORE_KEY
  • 如果您想使用使用者名稱和 Secret Manager 密鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password-secret=HANA_USER_PWD_SECRET_NAME
  • 如果您想使用使用者名稱和密碼進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password=HANA_PASSWORD

更改下列內容:

  • DESTINATION_PROJECT_ID:您要建立磁碟快照的Google Cloud 專案 ID
  • HANA_HOST_ADDRESS:託管 SAP HANA 資料庫的 Compute Engine 執行個體的主機名稱或 IP 位址

    在高可用性 (HA) 系統中,請在主要 SAP HANA 節點中指定本機主機的主機名稱或 IP 位址。請勿使用叢集中使用的虛擬 IP (VIP) 來識別主要節點。在災難復原 (DR) 部署中,請在主要 SAP HANA 執行個體中指定本機主機的主機名稱或 IP 位址。

  • HANA_PORT_NUMBER:接受備份和復原要求的 SAP HANA 通訊埠

  • SID:SAP HANA 系統的 SAP 系統 ID (SID)

  • HANA_USERNAME:您要用來建立備份的 SAP HANA 資料庫使用者名稱

  • HDB_USERSTORE_KEY:如果您已建立 hdbuserstore 金鑰來驗證指定的 SAP HANA 使用者,請指定該金鑰

  • HANA_USER_PWD_SECRET_NAME:如果您使用 Secret Manager 來儲存 SAP HANA 資料庫使用者的密碼,請指定相應的密鑰名稱

  • HANA_PASSWORD:如果您要使用純文字密碼進行 SAP HANA 驗證,請指定該密碼

下表說明 hanadiskbackup 指令支援的引數:

引數 說明
-port 指定接受備份和復原要求的 SAP HANA 通訊埠。
-sid 指定 SAP HANA 系統的 SAP 系統 ID (SID)。
-hana-db-user

指定要用來建立備份的 SAP HANA 資料庫使用者名稱。

如果您指定 -hdbuserstore-key,則可以略過指定 -hana-db-user 引數。

-password

指定您用來建立備份的 SAP HANA 資料庫使用者密碼。

如果您使用 -password-secret-hdbuserstore-key 引數,請勿指定這個引數。建議您使用其中一種,而不要使用 -password

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-password-secret

(非必要) 如果您使用 Secret Manager 儲存 SAP HANA 資料庫使用者的密碼,請指定對應的機密名稱。

在 Secret Manager 中,請確認密鑰值 (即密碼) 至少包含 8 個字元,且至少包含一個大寫字母、一個小寫字母和一個數字。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-hdbuserstore-key

如要安全地連線至 SAP HANA 系統,請指定您為該系統建立的 安全使用者儲存庫 (hdbuserstore) 金鑰。

如要使用 hdbuserstore 金鑰進行驗證,請確認下列事項:

  • SAP 工具 hdbsqlhdbuserstore 會安裝在代管代理程式的運算執行個體上。
  • hdbuserstore 索引鍵對應至一個特定的 SAP HANA 執行個體。您無法使用包含多個 SAP HANA 執行個體主機名稱的金鑰。
  • SIDadm 使用者可以使用這個鍵查詢 SAP HANA 資料庫。此處的 SID 是指您為 sid 參數指定的值。您可以以 SIDadm 使用者身分執行下列指令,確認這項設定:
    hdbsql -U HDB_USERSTORE_KEY "SELECT * FROM DUMMY"

這個設定參數自 3.3 版開始支援。

如果您指定 -hdbuserstore-key,則可以略過指定 -host-port-hana-db-user 引數。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-host (非必要) 指定託管 SAP HANA 系統的 Compute Engine 執行個體 IP 位址。預設值為 localhost
-project (非必要) 指定 SAP HANA 執行個體執行所在的 Google Cloud 專案 ID。
-abandon-prepared (非必要) 指定是否要忽略任何現有的快照式備份。預設值為 false
-snapshot-name

(非必要) 指定要建立的磁碟快照名稱。只有在 /hana/data 磁碟區位於單一磁碟時,才能使用這個引數。

根據預設,快照的命名格式如下:snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS

-snapshot-description (非必要) 指定磁碟快照的說明。這個引數僅適用於 /hana/data 磁碟區位於單一磁碟的情況。
-snapshot-type

(非必要) 指定要為代管 /hana/data 磁碟區的磁碟建立的快照類型。這個引數僅適用於 /hana/data 磁碟區位於多個磁碟上時。

根據預設,代理程式會建立標準快照。這個引數支援的值:STANDARDARCHIVE。如要瞭解這些快照類型,請參閱「 關於封存和標準磁碟快照」。

這個引數自 3.6 版代理程式起開始支援。

-group-snapshot-name

(非必要) 為代管 /hana/data 磁碟區的磁碟指定快照群組名稱。

根據預設,快照群組名稱會使用以下格式設定:CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMSS。其中 CONSISTENCY_GROUP_NAME 是您在「建立磁碟一致性群組」一節中建立的磁碟一致性群組名稱。

這個引數自 3.6 版代理程式起開始支援。

-labels (非必要) 指定一或多個標籤-值組合,以便與您要建立的磁碟快照建立關聯。例如:-labels="label1=value1,label2=value2"
-storage-location (非必要) 指定要儲存磁碟快照的 Cloud Storage 多地區Cloud Storage 地區
-freeze-file-system

(非必要) 指定代理程式是否要凍結 SAP HANA 資料庫的檔案系統。預設值為 false

這個引數自 3.2 版代理程式起開始支援。

-send-metrics-to-monitoring (非必要) 指定是否要將快照建立作業的執行狀態傳送至 Cloud Monitoring。預設值為 TRUE
-loglevel (非必要) 指定快照建立作業的記錄層級。預設的記錄層級為 info。可用的記錄層級為:debuginfowarnerror
-confirm-data-snapshot-after-create

(非必要) 如果您想在快照建立完成後立即確認快照是否已建立至 SAP HANA,但不確認是否已上傳至為 -storage-location 引數指定的 Cloud Storage 值區,請指定 TRUE 值。

預設值為 FALSE,這會導致代理程式在 CREATEUPLOAD 作業完成後,確認快照建立作業。

這個引數自 3.4 版的代理程式起開始支援。

使用資料磁碟區條紋擴充

如要為 SAP HANA 資料庫的 /hana/data 磁區建立以磁碟快照為基礎的備份,請執行 Google Cloud的 SAP 代理程式 hanadiskbackup 指令:

自 3.3 版起,-source-disk-source-disk-zone 引數可選用,可與 hanadiskbackup 指令搭配使用。這是因為代理程式可以自動偵測代管 /hana/data 目錄的磁碟。不過,如果您指定這些引數,則會覆寫代理程式的自動偵測功能。

  • 如果您想使用 hdbuserstore 金鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -sid=SID \
          -hdbuserstore-key=HDB_USERSTORE_KEY
  • 如果您想使用使用者名稱和 Secret Manager 密鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password-secret=HANA_USER_PWD_SECRET_NAME
  • 如果您想使用使用者名稱和密碼進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password=HANA_PASSWORD

更改下列內容:

  • DESTINATION_PROJECT_ID:您要建立磁碟快照的Google Cloud 專案 ID
  • HANA_HOST_ADDRESS:託管 SAP HANA 資料庫的 Compute Engine 執行個體的主機名稱或 IP 位址

    在高可用性 (HA) 系統中,請在主要 SAP HANA 節點中指定本機主機的主機名稱或 IP 位址。請勿使用叢集中使用的虛擬 IP (VIP) 來識別主要節點。在災難復原 (DR) 部署中,請在主要 SAP HANA 執行個體中指定本機主機的主機名稱或 IP 位址。

  • HANA_PORT_NUMBER:接受備份和復原要求的 SAP HANA 通訊埠

  • SID:SAP HANA 系統的 SAP 系統 ID (SID)

  • HANA_USERNAME:您要用來建立備份的 SAP HANA 資料庫使用者名稱

  • HDB_USERSTORE_KEY:如果您已建立 hdbuserstore 金鑰來驗證指定的 SAP HANA 使用者,請指定該金鑰

  • HANA_USER_PWD_SECRET_NAME:如果您使用 Secret Manager 來儲存 SAP HANA 資料庫使用者的密碼,請指定相應的密鑰名稱

  • HANA_PASSWORD:如果您要使用純文字密碼進行 SAP HANA 驗證,請指定該密碼

下表說明 hanadiskbackup 指令支援的引數:

引數 說明
-port 指定接受備份和復原要求的 SAP HANA 通訊埠。
-sid 指定 SAP HANA 系統的 SAP 系統 ID (SID)。
-hana-db-user

指定要用來建立備份的 SAP HANA 資料庫使用者名稱。

如果您指定 -hdbuserstore-key,則可以略過指定 -hana-db-user 引數。

-password

指定您用來建立備份的 SAP HANA 資料庫使用者密碼。

如果您使用 -password-secret-hdbuserstore-key 引數,請勿指定這個引數。建議您使用其中一種,而不要使用 -password

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-password-secret

(非必要) 如果您使用 Secret Manager 儲存 SAP HANA 資料庫使用者的密碼,請指定對應的機密名稱。

在 Secret Manager 中,請確認密鑰值 (即密碼) 至少包含 8 個字元,且至少包含一個大寫字母、一個小寫字母和一個數字。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-hdbuserstore-key

如要安全地連線至 SAP HANA 系統,請指定您為該系統建立的 安全使用者儲存庫 (hdbuserstore) 金鑰。

如要使用 hdbuserstore 金鑰進行驗證,請確認下列事項:

  • SAP 工具 hdbsqlhdbuserstore 會安裝在代管代理程式的運算執行個體上。
  • hdbuserstore 索引鍵對應至一個特定的 SAP HANA 執行個體。您無法使用包含多個 SAP HANA 執行個體主機名稱的金鑰。
  • SIDadm 使用者可以使用這個鍵查詢 SAP HANA 資料庫。此處的 SID 是指您為 sid 參數指定的值。您可以以 SIDadm 使用者身分執行下列指令,確認這項設定:
    hdbsql -U HDB_USERSTORE_KEY "SELECT * FROM DUMMY"

這個設定參數自 3.3 版開始支援。

如果您指定 -hdbuserstore-key,則可以略過指定 -host-port-hana-db-user 引數。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-host (非必要) 指定託管 SAP HANA 系統的 Compute Engine 執行個體 IP 位址。預設值為 localhost
-project (非必要) 指定 SAP HANA 執行個體執行所在的 Google Cloud 專案 ID。
-abandon-prepared (非必要) 指定是否要忽略任何現有的快照式備份。預設值為 false
-snapshot-name

(非必要) 指定要建立的磁碟快照名稱。只有在 /hana/data 磁碟區位於單一磁碟時,才能使用這個引數。

根據預設,快照的命名格式如下:snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS

-snapshot-description (非必要) 指定磁碟快照的說明。這個引數僅適用於 /hana/data 磁碟區位於單一磁碟的情況。
-snapshot-type

(非必要) 指定要為代管 /hana/data 磁碟區的磁碟建立的快照類型。這個引數僅適用於 /hana/data 磁碟區位於多個磁碟上時。

根據預設,代理程式會建立標準快照。這個引數支援的值:STANDARDARCHIVE。如要瞭解這些快照類型,請參閱「 關於封存和標準磁碟快照」。

這個引數自 3.6 版代理程式起開始支援。

-group-snapshot-name

(非必要) 為代管 /hana/data 磁碟區的磁碟指定快照群組名稱。

根據預設,系統會使用以下格式設定快照群組名稱:CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMSS。其中 CONSISTENCY_GROUP_NAME 是您在「建立磁碟一致性群組」一節中建立的磁碟一致性群組名稱。

這個引數自 3.6 版代理程式起開始支援。

-labels (非必要) 指定一或多個標籤-值組合,以便與您要建立的磁碟快照建立關聯。例如:-labels="label1=value1,label2=value2"
-source-disks 選用。 在部署中指定代管 /hana/data 磁碟區的磁碟名稱。請使用半形逗號分隔磁碟名稱。例如:-source-disks="disk-name-1, disk-name-2"
-storage-location (非必要) 指定要儲存磁碟快照的 Cloud Storage 多地區Cloud Storage 地區
-freeze-file-system

(非必要) 指定代理程式是否要凍結 SAP HANA 資料庫的檔案系統。預設值為 false

這個引數自 3.2 版代理程式起開始支援。

-send-metrics-to-monitoring (非必要) 指定是否要將快照建立作業的執行狀態傳送至 Cloud Monitoring。預設值為 TRUE
-loglevel (非必要) 指定快照建立作業的記錄層級。預設的記錄層級為 info。可用的記錄層級為:debuginfowarnerror
-confirm-data-snapshot-after-create

(非必要) 如果您想在快照建立完成後立即確認快照是否已建立至 SAP HANA,但不確認是否已上傳至為 -storage-location 引數指定的 Cloud Storage 值區,請指定 TRUE 值。

預設值為 FALSE,這會導致代理程式在 CREATEUPLOAD 作業完成後,確認快照建立作業。

這個引數自 3.4 版的代理程式起開始支援。

向外擴充 (不含主機自動容錯移轉)

如要為 SAP HANA 資料庫的 /hana/data 磁區建立以磁碟快照為基礎的備份,請執行 Google Cloud的 SAP 代理程式 hanadiskbackup 指令:

  • 如果您想使用 hdbuserstore 金鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -sid=SID \
          -hdbuserstore-key=HDB_USERSTORE_KEY \
          -source-disks="COMMA_SEPARATED_DISK_NAMES"
  • 如果您想使用使用者名稱和 Secret Manager 密鑰進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password-secret=HANA_USER_PWD_SECRET_NAME \
          -source-disks="COMMA_SEPARATED_DISK_NAMES"
  • 如果您想使用使用者名稱和密碼進行 SAP HANA 驗證,請執行下列指令:
    sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \
          -project=DESTINATION_PROJECT_ID \
          -host=HANA_HOST_ADDRESS \
          -port=HANA_PORT_NUMBER \
          -sid=SID \
          -hana-db-user=HANA_USERNAME \
          -password=HANA_PASSWORD \
          -source-disks="COMMA_SEPARATED_DISK_NAMES"

更改下列內容:

  • DESTINATION_PROJECT_ID:您要建立磁碟快照的Google Cloud 專案 ID
  • HANA_HOST_ADDRESS:託管 SAP HANA 資料庫的 Compute Engine 執行個體的主機名稱或 IP 位址

    在高可用性 (HA) 系統中,請在主要 SAP HANA 節點中指定本機主機的主機名稱或 IP 位址。請勿使用叢集中使用的虛擬 IP (VIP) 來識別主要節點。在災難復原 (DR) 部署中,請在主要 SAP HANA 執行個體中指定本機主機的主機名稱或 IP 位址。

  • HANA_PORT_NUMBER:接受備份和復原要求的 SAP HANA 通訊埠

  • SID:SAP HANA 系統的 SAP 系統 ID (SID)

  • HANA_USERNAME:您要用來建立備份的 SAP HANA 資料庫使用者名稱

  • HDB_USERSTORE_KEY:如果您已建立 hdbuserstore 金鑰來驗證指定的 SAP HANA 使用者,請指定該金鑰

  • HANA_USER_PWD_SECRET_NAME:如果您使用 Secret Manager 來儲存 SAP HANA 資料庫使用者的密碼,請指定相應的密鑰名稱

  • HANA_PASSWORD:如果您要使用純文字密碼進行 SAP HANA 驗證,請指定該密碼

  • COMMA_SEPARATED_DISK_NAMES:以逗號分隔的磁碟名稱清單,這些磁碟會在橫向擴展系統中代管 /hana/data 磁碟分割區

下表說明 hanadiskbackup 指令支援的引數:

引數 說明
-port 指定接受備份和復原要求的 SAP HANA 通訊埠。
-sid 指定 SAP HANA 系統的 SAP 系統 ID (SID)。
-hana-db-user

指定要用來建立備份的 SAP HANA 資料庫使用者名稱。

如果您指定 -hdbuserstore-key,則可以略過指定 -hana-db-user 引數。

-password

指定您用來建立備份的 SAP HANA 資料庫使用者密碼。

如果您使用 -password-secret-hdbuserstore-key 引數,請勿指定這個引數。建議您使用其中一種,而不要使用 -password

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-password-secret

(非必要) 如果您使用 Secret Manager 儲存 SAP HANA 資料庫使用者的密碼,請指定對應的機密名稱。

在 Secret Manager 中,請確認密鑰值 (即密碼) 至少包含 8 個字元,且至少包含一個大寫字母、一個小寫字母和一個數字。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-hdbuserstore-key

如要安全地連線至 SAP HANA 系統,請指定您為該系統建立的 安全使用者儲存庫 (hdbuserstore) 金鑰。

如要使用 hdbuserstore 金鑰進行驗證,請確認下列事項:

  • SAP 工具 hdbsqlhdbuserstore 會安裝在代管代理程式的運算執行個體上。
  • hdbuserstore 索引鍵對應至一個特定的 SAP HANA 執行個體。您無法使用包含多個 SAP HANA 執行個體主機名稱的金鑰。
  • SIDadm 使用者可以使用這個鍵查詢 SAP HANA 資料庫。此處的 SID 是指您為 sid 參數指定的值。您可以以 SIDadm 使用者身分執行下列指令,確認這項設定:
    hdbsql -U HDB_USERSTORE_KEY "SELECT * FROM DUMMY"

這個設定參數自 3.3 版開始支援。

如果您指定 -hdbuserstore-key,則可以略過指定 -host-port-hana-db-user 引數。

針對 SAP HANA 驗證,代理程式會使用以下偏好順序:如果已指定,系統會優先使用 -hdbuserstore-key 引數,其次是 -password 引數,最後是 -password-secret 引數。建議您在執行 hanadiskbackup 指令時,只指定一個驗證選項。

-host (非必要) 指定託管 SAP HANA 系統的 Compute Engine 執行個體 IP 位址。預設值為 localhost
-project (非必要) 指定執行 SAP HANA 執行個體的 Google Cloud 專案 ID。
-abandon-prepared (非必要) 指定是否要忽略任何現有的快照式備份。預設值為 false
-snapshot-name

(非必要) 指定要建立的磁碟快照名稱。只有在 /hana/data 磁碟區位於單一磁碟時,才能使用這個引數。

根據預設,快照的命名格式如下:snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS

-snapshot-description (非必要) 指定磁碟快照的說明。這個引數僅適用於 /hana/data 磁碟區位於單一磁碟的情況。
-snapshot-type

(非必要) 指定要為代管 /hana/data 磁碟區的磁碟建立的快照類型。這個引數僅適用於 /hana/data 磁碟區位於多個磁碟上時。

根據預設,代理程式會建立標準快照。這個引數支援的值:STANDARDARCHIVE。如要瞭解這些快照類型,請參閱「 關於封存和標準磁碟快照」。

這個引數自 3.6 版代理程式起開始支援。

-group-snapshot-name

(非必要) 為代管 /hana/data 磁碟區的磁碟指定快照群組名稱。

根據預設,系統會使用以下格式設定快照群組名稱:CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMSS。其中 CONSISTENCY_GROUP_NAME 是您在「建立磁碟一致性群組」一節中建立的磁碟一致性群組名稱。

這個引數自 3.6 版代理程式起開始支援。

-labels (非必要) 指定一或多個標籤-值組合,以便與您要建立的磁碟快照建立關聯。例如:-labels="label1=value1,label2=value2"
-source-disks 在 擴大規模部署中指定代管 /hana/data 磁碟區的磁碟名稱。請使用半形逗號分隔磁碟名稱。例如:-source-disks="disk-name-1, disk-name-2"
-storage-location (非必要) 指定要儲存磁碟快照的 Cloud Storage 多地區Cloud Storage 地區
-freeze-file-system

(非必要) 指定代理程式是否要凍結 SAP HANA 資料庫的檔案系統。預設值為 false

這個引數自 3.2 版代理程式起開始支援。

-send-metrics-to-monitoring (非必要) 指定是否要將快照建立作業的執行狀態傳送至 Cloud Monitoring。預設值為 TRUE
-loglevel (非必要) 指定快照建立作業的記錄層級。預設的記錄層級為 info。可用的記錄層級為:debuginfowarnerror
-confirm-data-snapshot-after-create

(非必要) 如果您想在快照建立完成後立即確認快照是否已建立至 SAP HANA,但不確認是否已上傳至為 -storage-location 引數指定的 Cloud Storage 值區,請指定 TRUE 值。

預設值為 FALSE,這會導致代理程式在 CREATEUPLOAD 作業完成後,確認快照建立作業。

這個引數自 3.4 版的代理程式起開始支援。

驗證磁碟快照

您可以使用下列選項,確認磁碟快照是否已建立:

  • 在 Google Cloud 控制台中,前往 Compute Engine 的「Snapshots」(快照) 頁面,然後使用磁碟名稱篩選項目。如果 /hana/data 磁碟區位於單一磁碟上,您也可以使用快照名稱進行篩選。如果 /hana/data 磁碟區位於多個磁碟上,您也可以使用快照群組名稱進行篩選。

    前往「快照」

  • 或者,您也可以在代理程的下列記錄檔案中查看磁碟快照詳細資料:

    /var/log/google-cloud-sap-agent/hanadiskbackup.log

查看 SAP HANA 備份目錄

除了建立以磁碟快照為基礎的備份外,hanadiskbackup 指令也會在 SAP HANA 備份目錄中建立相關項目。以下是 SQL 查詢範例,可用於在 SAP HANA 備份目錄中查看快照式備份項目:

SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot'

輸出結果會與下列範例相似:

BACKUP_ID,STATE_NAME,COMMENT
BACKUP_ID,"successful","SNAPSHOT_IDENTIFIER"

輸出內容包含下列值:

  • BACKUP_ID:在 SAP HANA 備份目錄中,指派給以磁碟快照為基礎的備份的備份 ID
  • SNAPSHOT_IDENTIFIER
    • 對於磁碟上的 /hana/data 音量,此 ID 的值會根據 -snapshot-name 引數與 hanadiskbackup 指令的使用方式決定。如果您未指定此引數,則會設定引數的預設值,即:snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
    • 如果 /hana/ 磁碟區位於多個磁碟上,則此 ID 的值會根據 -group-snapshot-name 引數與 hanadiskbackup 指令的使用方式而定。如果您未指定此引數,則會設定引數的預設值,即 CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMMSS
  • SOURCE_DISK_NAME:這個值取決於 -source-disk 引數與 hanadiskbackup 指令的使用方式。
  • CONSISTENCY_GROUP_NAME:這個值取決於 -group-snapshot-name 引數與 hanadiskbackup 指令的使用方式
  • YYYYMMDD-HHMMMSS:快照建立的日期和時間。

使用磁碟快照備份還原資料庫

如要使用Google Cloud的 SAP 代理程式磁碟快照功能來復原 SAP HANA 資料庫,請參閱適用於您情況的指示:

復原擴大系統的資料庫

如要為部署在Google Cloud上的 SAP HANA 向上擴充系統復原資料庫,請完成下列步驟:

  1. 執行代理程式的 hanadiskrestore 指令,找回代管 /hana/data 磁碟的磁碟:

    • 如果 /hana/data 磁碟區位於單一磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -source-snapshot=SOURCE_SNAPSHOT_NAME \
      [-new-disk-name=NEW_DISK_NAME \
      -new-disk-type=NEW_DISK_TYPE]
    • 如果 /hana/data 磁碟區位於多個磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \
      [-source-disks=COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY \
      -new-disk-type=NEW_DISK_TYPE \
      -new-disk-prefix=NEW_DISK_PREFIX]
    取代下列內容:

    • SOURCE_PROJECT_ID:磁碟快照所在的Google Cloud 專案 ID
    • SID:SAP HANA 系統的 SAP 系統 ID (SID)
    • SOURCE_SNAPSHOT_NAME:如果 /hana/data 磁區位於單一磁碟上,請指定您要用來建立新磁碟的磁碟快照名稱
    • SOURCE_SNAPSHOT_GROUP_NAME:如果您的 /hana/data 磁區位於多個磁碟上,請指定您要用來建立新磁碟的快照群組名稱
    • NEW_DISK_NAME:您要為新磁碟設定的名稱。詳情請參閱「磁碟還原作業支援的引數」一文中 -new-disk-name 的說明。
    • NEW_DISK_TYPE:您要建立的磁碟類型。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-type 說明。
    • NEW_DISK_PREFIX:要新增至新磁碟名稱的前置字串
    • COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY:以半形逗號分隔的清單,列出您要使用快照式備份還原的磁碟名稱

    如要進一步瞭解可搭配 hanadiskrestore 指令使用的引數,請參閱「支援的磁碟還原引數」。

  2. 使用必要選項復原 SAP HANA 資料庫:

    復原至快照時間

    如要還原 SAP HANA 資料庫,請按照下列步驟操作,將資料庫還原至建立磁碟快照的時間點:

    1. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    2. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    4. 針對每個租用戶資料庫執行下列指令,即可復原租用戶資料庫:
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID 替換為租用戶資料庫的 SID。

    復原至特定時間點

    如要還原 SAP HANA 資料庫至特定時間點,請按照下列步驟操作:

    1. 請使用 Google Cloud的 SAP 代理程式,透過 Backint 功能,確認您已為 Cloud Storage 中的 /hana/log 磁碟區建立備份。如要進一步瞭解這項功能,請參閱「使用 Backint 備份及復原 SAP HANA」。
    2. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    3. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    5. 針對每個租用戶資料庫執行下列指令,還原租用戶資料庫:
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID 替換為租用戶資料庫的 SID。

為擴充 HA 系統復原資料庫

如要針對在 Google Cloud上高可用性 (HA) 叢集中部署的 SAP HANA 擴充系統復原資料庫,請完成下列步驟:

  1. 請確認您在主要 SAP HANA 節點中,有代管 /hana/data 磁碟的磁碟快照。

  2. 以超級使用者身分,將 HA 叢集設為維護模式。如果您使用 Pacemaker,請執行下列指令:

    RHEL

    pcs property set maintenance-mode=true

    SLES

    crm configure property maintenance-mode=true
  3. 請在 HA 叢集的主節點和待機節點上執行下列指令,停止 SAP HANA 資料庫執行個體:

    HDB stop
  4. 切換至 SAP HANA HA 系統的主要節點。

  5. 執行代理程式的 hanadiskrestore 指令,找回代管 /hana/data 磁碟的磁碟:

    • 如果 /hana/data 磁碟區位於單一磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -source-snapshot=SOURCE_SNAPSHOT_NAME \
      [-new-disk-name=NEW_DISK_NAME \
      -new-disk-type=NEW_DISK_TYPE]
    • 如果 /hana/data 磁碟區位於多個磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \
      [-source-disks=COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY \
      -new-disk-type=NEW_DISK_TYPE \
      -new-disk-prefix=NEW_DISK_PREFIX]
    取代下列內容:

    • SOURCE_PROJECT_ID:磁碟快照所在的Google Cloud 專案 ID
    • SID:SAP HANA 系統的 SAP 系統 ID (SID)
    • SOURCE_SNAPSHOT_NAME:如果 /hana/data 磁區位於單一磁碟上,請指定要用來建立新磁碟的磁碟快照名稱
    • SOURCE_SNAPSHOT_GROUP_NAME:如果您的 /hana/data 磁區位於多個磁碟上,請指定您要用來建立新磁碟的快照群組名稱
    • NEW_DISK_NAME:您要為新磁碟設定的名稱。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-name 說明。
    • NEW_DISK_TYPE:您要建立的磁碟類型。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-type 說明。
    • NEW_DISK_PREFIX:要新增至新磁碟名稱的前置字串
    • COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY:以半形逗號分隔的清單,列出您要使用快照式備份還原的磁碟名稱

    如要進一步瞭解可搭配 hanadiskrestore 指令使用的引數,請參閱「支援的磁碟還原引數」。

  6. 取消註冊 SAP HANA HA 系統的次要節點:

    hdbnsutil -sr_unregister
  7. 在 SAP HANA HA 系統的主節點上,停用 SAP HANA 系統複製:

    hdbnsutil -sr_disable
  8. 在主要節點上,使用必要選項復原 SAP HANA 資料庫:

    復原至快照時間

    如要還原 SAP HANA 資料庫,請按照下列步驟操作,將資料庫還原至建立磁碟快照的時間點:

    1. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    2. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    4. 針對每個租用戶資料庫執行下列指令,即可復原租用戶資料庫:
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID 替換為租用戶資料庫的 SID。

    復原至特定時間點

    如要還原 SAP HANA 資料庫至特定時間點,請按照下列步驟操作:

    1. 請使用 Google Cloud的 SAP 代理程式,透過 Backint 功能,確認您已為 Cloud Storage 中的 /hana/log 磁碟區建立備份。如要進一步瞭解這項功能,請參閱「使用 Backint 備份及復原 SAP HANA」。
    2. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    3. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    5. 針對每個租用戶資料庫執行下列指令,還原租用戶資料庫:
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID 替換為租用戶資料庫的 SID。

  9. 在主要節點上啟用 SAP HANA 系統複製:

    hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
  10. 將待命節點重新註冊至主要節點:

    hdbnsutil -sr_register
       --name=SECONDARY_SITE_NAME
       --remoteHost=PRIMARY_HOST_NAME
       --remoteInstance=INSTANCE_NUMBER
       --replicationMode=sync
       --operationMode=logreplay
  11. 確認待命節點中的資料庫已與主要節點中的資料庫完全同步。

  12. 以根使用者身分,退出 HA 叢集維護模式。如果您使用 Pacemaker,請執行下列指令:

    RHEL

    pcs property set maintenance-mode=false

    SLES

    crm configure property maintenance-mode=false

為擴大規模的 DR 部署作業復原資料庫

如要為在 Google Cloud上以災難復原解決方案部署的 SAP HANA 向上擴充系統復原資料庫,請完成下列步驟:

  1. 在 DR 部署的預設和備用執行個體上執行下列指令,即可停止 SAP HANA 資料庫:

    HDB stop
  2. 切換至 SAP HANA DR 部署作業的主要執行個體。

  3. 執行代理程式的 hanadiskrestore 指令,找回代管 /hana/data 磁碟的磁碟:

    • 如果 /hana/data 磁碟區位於單一磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -source-snapshot=SOURCE_SNAPSHOT_NAME \
      [-new-disk-name=NEW_DISK_NAME \
      -new-disk-type=NEW_DISK_TYPE]
    • 如果 /hana/data 磁碟區位於多個磁碟上,請執行下列指令:

      sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
      -project=SOURCE_PROJECT_ID \
      -sid=SID \
      -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \
      [-source-disks=COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY \
      -new-disk-type=NEW_DISK_TYPE \
      -new-disk-prefix=NEW_DISK_PREFIX]
    取代下列內容:

    • SOURCE_PROJECT_ID:磁碟快照所在的Google Cloud 專案 ID
    • SID:SAP HANA 系統的 SAP 系統 ID (SID)
    • SOURCE_SNAPSHOT_NAME:如果 /hana/data 磁區位於單一磁碟上,請指定您要用來建立新磁碟的磁碟快照名稱
    • SOURCE_SNAPSHOT_GROUP_NAME:如果您的 /hana/data 磁區位於多個磁碟上,請指定您要用來建立新磁碟的快照群組名稱
    • NEW_DISK_NAME:您要為新磁碟設定的名稱。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-name 說明。
    • NEW_DISK_TYPE:您要建立的磁碟類型。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-type 說明。
    • NEW_DISK_PREFIX:要新增至新磁碟名稱的前置字串
    • COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY:以半形逗號分隔的清單,列出您要使用快照式備份還原的磁碟名稱

    如要進一步瞭解可搭配 hanadiskrestore 指令使用的引數,請參閱「支援的磁碟還原引數」。

  4. 在主要執行個體上停用 SAP HANA 系統複製:

    hdbnsutil -sr_disable
  5. 在主要執行個體上,使用必要選項復原 SAP HANA 資料庫:

    復原至快照時間

    如要還原 SAP HANA 資料庫,請按照下列步驟操作,將資料庫還原至建立磁碟快照的時間點:

    1. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    2. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    4. 針對每個租用戶資料庫執行下列指令,即可復原租用戶資料庫:
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID 替換為租用戶資料庫的 SID。

    復原至特定時間點

    如要還原 SAP HANA 資料庫至特定時間點,請按照下列步驟操作:

    1. 請使用 Google Cloud的 SAP 代理程式,透過 Backint 功能,確認您已為 Cloud Storage 中的 /hana/log 磁碟區建立備份。如要進一步瞭解這項功能,請參閱「使用 Backint 備份及復原 SAP HANA」。
    2. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    3. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    5. 針對每個租用戶資料庫執行下列指令,還原租用戶資料庫:
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID 替換為租用戶資料庫的 SID。

  6. 在主要執行個體上啟用 SAP HANA 系統複製:

    hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
  7. 將待命執行個體註冊至主要執行個體:

    hdbnsutil -sr_register
       --name=SECONDARY_SITE_NAME
       --remoteHost=PRIMARY_HOST_NAME
       --remoteInstance=INSTANCE_NUMBER
       --replicationMode=sync
       --operationMode=logreplay
  8. 確認待命執行個體中的資料庫與主要執行個體中的資料庫完全同步。

復原向外擴充系統的資料庫

如要在Google Cloud 上部署 SAP HANA 向外擴充系統,但沒有主機自動容錯移轉解決方案,請完成下列步驟:

  1. 在向外擴充部署作業中的每個節點上,停止 SAP HANA:

    HDB STOP
    
  2. 在每個節點上,以根使用者身分卸載 /hana/data 磁碟區。

    如要進一步瞭解如何執行這項操作,請參閱 SAP HANA 版本的 SAP 說明文件。

  3. 執行代理程式的 hanadiskrestore 指令,復原代管 /hana/data 磁碟的磁碟:

    sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \
        -project=SOURCE_PROJECT_ID \
        -sid=SID \
        -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \
        -source-disks=COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY \
        [-new-disk-type=NEW_DISK_TYPE \
        -new-disk-prefix=NEW_DISK_PREFIX]
    取代下列內容:

    • SOURCE_PROJECT_ID:磁碟快照所在的Google Cloud 專案 ID
    • SID:SAP HANA 系統的 SAP 系統 ID (SID)
    • SOURCE_SNAPSHOT_GROUP_NAME:要用來建立新磁碟的快照群組名稱
    • NEW_DISK_TYPE:您要建立的磁碟類型。詳情請參閱「磁碟還原作業支援的引數」中的 -new-disk-type 說明。
    • NEW_DISK_PREFIX:要新增至新磁碟名稱的前置字串
    • COMMA_SEPARATED_DISK_NAMES_FOR_RECOVERY:以半形逗號分隔的清單,列出您要使用快照式備份還原的磁碟名稱

    如要進一步瞭解可搭配 hanadiskrestore 指令使用的引數,請參閱「支援的磁碟還原引數」。

  4. 在每個 worker 節點上,以 root 使用者身分重新掃描磁區群組:

    /sbin/dmsetup remove_all
    /sbin/vgscan -v --mknodes
    /sbin/vgchange -ay
    /sbin/lvscan
    mount -av
    
  5. 在每個 worker 節點上,以 root 使用者身分使用必要選項復原 SAP HANA 資料庫:

    復原至快照時間

    如要還原 SAP HANA 資料庫,請按照下列步驟操作,將資料庫還原至建立磁碟快照的時間點:

    1. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    2. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    4. 針對每個租用戶資料庫執行下列指令,即可復原租用戶資料庫:
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID 替換為租用戶資料庫的 SID。

    復原至特定時間點

    如要還原 SAP HANA 資料庫至特定時間點,請按照下列步驟操作:

    1. 請使用 Google Cloud的 SAP 代理程式,透過 Backint 功能,確認您已為 Cloud Storage 中的 /hana/log 磁碟區建立備份。如要進一步瞭解這項功能,請參閱「使用 Backint 備份及復原 SAP HANA」。
    2. 切換至 SIDadm 使用者:
      su - SID_LCadm

      SID_LC 替換為 SAP HANA 系統的 SID。請使用小寫字母。

    3. 執行下列指令,還原系統資料庫:
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. 連結至系統資料庫。例如,您可以執行下列指令:
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      更改下列內容:

      • SYSTEM_DB_PASSWORD:系統資料庫密碼
      • INSTANCE_NUMBER:您的 SAP HANA 執行個體編號
    5. 針對每個租用戶資料庫執行下列指令,還原租用戶資料庫:
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID 替換為租用戶資料庫的 SID。

  6. 在每個 worker 節點上啟動 SAP HANA 資料庫。

  7. 針對外推部署中的主節點重複執行步驟 3 至 5。

支援的磁碟還原引數

下表說明代理程式 hanadiskrestore 指令支援的引數:

引數 說明
-sid 指定 SAP HANA 系統的 SAP 系統 ID (SID)。
-data-disk-name (非必要) 指定代管 /hana/data 磁碟區的來源磁碟名稱。

自 3.4 版起,-data-disk-name-data-disk-zone 引數可選用,可搭配 hanadiskrestore 指令使用。這是因為代理程式可以自動偵測 /hana/data 磁碟機的所在磁碟。不過,如果您指定這些引數,則會覆寫代理程式的自動偵測功能。

-source-disks

指定在部署中代管 /hana/data 磁碟區的磁碟名稱,以便進行復原作業。請使用半形逗號分隔磁碟名稱。例如:-source-disks="disk-name-1, disk-name-2"

Google Cloud的 SAP 代理程式自 3.7 版起支援此引數。這個引數是復原橫向擴展系統的必要條件。對於使用條紋磁碟來代管 /hana/data 磁碟區的擴充系統,這項功能屬於選用功能。向上擴充系統不支援使用單一磁碟來代管 /hana/data 磁碟區。

-data-disk-zone (非必要) 指定部署代管 /hana/data 磁碟區的區域

自 3.4 版起,-data-disk-name-data-disk-zone 引數可選用,可搭配 hanadiskrestore 指令使用。這是因為代理程式可以自動偵測 /hana/data 磁碟機的所在磁碟。不過,如果您指定這些引數,系統就會覆寫代理程式的自動偵測功能。

-source-snapshot 如果 /hana/data 磁碟區位於單一磁碟上,請指定要用來執行復原作業的磁碟快照名稱。
-new-disk-name 指定要為新磁碟設定的名稱。如果 /hana/data 磁碟區位於多個磁碟上,則此引數不適用。
-group-snapshot-name

指定要用來執行復原作業的快照群組名稱。

這個引數自代理程式 3.6 版起受支援。對於使用單一磁碟來主機 /hana/data 磁區的 SAP HANA 向上擴充系統,不支援此引數。

-project (非必要) 指定來源磁碟快照所在的 Google Cloud 專案 ID。根據預設,快照會在執行 SAP HANA 系統的 Google Cloud 專案中建立。
-csek-key-file (非必要) 如果您使用 -source-disk-key-file 引數搭配 hanadiskbackup 指令來加密來源磁碟快照,請指定與來源磁碟快照相對應的 RSA 包裝客戶提供的加密金鑰 JSON 檔案的絕對路徑。以下是金鑰檔案範例:
[
  {
    "uri": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
    "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
    "key-type": "rsa-encrypted"
  }
]

這個引數自 3.2 版代理程式起開始支援。

-new-disk-type

(非必要) 指定要建立的 Persistent Disk 或 Hyperdisk 類型。根據預設,新磁碟的類型與來源磁碟相同。

請務必指定已獲 SAP 認證,可搭配 SAP HANA 使用的 SSD 磁碟類型。詳情請參閱「支援的磁碟類型」。

-new-disk-prefix

(非必要) 指定要新增至新磁碟名稱的前置字串。

這個引數自 3.7 版代理程式起開始支援。在復原使用單一磁碟來主機 /hana/data 磁區的 SAP HANA 向上擴充系統時,系統不支援這個引數。

-hana-sidadm (非必要) 指定 SIDadm - SAP HANA 系統的作業系統使用者。
-force-stop-hana (非必要) 如果您想在啟動復原作業前強制停止 SAP HANA,請指定這個引數,並將其值設為 true。預設值為 false
-provisioned-iops (非必要) 如果您要建立 Hyperdisk 磁碟區,請指定該磁碟區必須處理的 IOPS (每秒輸入/輸出作業數)。
-provisioned-throughput (非必要) 如果您要建立 Hyperdisk 磁碟區,請指定該磁碟區必須支援的吞吐量。
-labels-on-detached-disk

(非必要) 如果您要建立新磁碟來代管已復原的 /hana/data 目錄,請使用這個引數來指定要與已解除連結的磁碟建立關聯的標籤-值組。請使用半形逗號分隔標籤。例如:-labels-on-detached-disk="label1=value1,label2=value2"

這個引數自 3.4 版的代理程式起開始支援。

-send-metrics-to-monitoring

(非必要) 指定是否要將快照還原作業的時間長度傳送至 Cloud Monitoring。預設值為 TRUE

這個引數自 3.4 版的代理程式起開始支援。

-disk-size-gb

(非必要) 指定新磁碟的大小 (以 GB 為單位)。根據預設,新磁碟的大小會與現有磁碟相同。

新磁碟的大小不得小於現有磁碟。

-loglevel (非必要) 指定 hanadiskrestore 指令執行的所有動作的記錄層級。預設的記錄層級為 info。可用的記錄層級包括:debuginfowarnerror

執行系統複製或系統重新整理作業

如要使用 SAP HANA 系統的磁碟快照備份來復原另一個 SAP HANA 系統,請完成下列步驟:

  1. 在來源系統中,執行代理程式的 hanadiskbackup 指令,建立快照式備份。如需操作說明,請參閱「建立以磁碟快照為基礎的備份」。
  2. 如果來源和目標系統的 SID 不同,請將來源系統中的 /hana/data/SID 目錄重新命名,以便與目標系統相符:

    mv /hana/data/SOURCE_SID /hana/data/TARGET_SID

    更改下列內容:

    • SOURCE_SID:來源 SAP HANA 系統的 SID
    • TARGET_SID:目標 SAP HANA 系統的 SID
  3. 在目標系統中,執行代理程式的 hanadiskrestore 指令,還原代管 /hana/data 磁碟區的磁碟。

  4. 如果您已為來源 SAP HANA 系統啟用資料加密功能,則在執行復原作業前,您必須將加密金鑰匯入目標系統。如果您尚未在來源系統中啟用資料加密功能,請略過這個步驟。

    如要將資料加密金鑰匯入目標系統,請完成下列步驟:

    1. 建立系統資料庫加密金鑰的備份:

      hdbnsutil -backupRootKeys FILE_NAME_SYS.rkb --type=ALL --database_name=SYSTEMDB

      FILE_NAME_SYS 替換為您要為系統資料庫加密金鑰備份設定的名稱。您可以視需要加入要儲存此檔案的路徑。

    2. 在來源系統中,針對每個租用戶資料庫執行下列指令,為租用戶資料庫的加密金鑰建立備份:

      hdbnsutil -backupRootKeys FILE_NAME_TENANT.rkb --type=ALL --database_name=TENANT_DB_NAME

      更改下列內容:

      • FILE_NAME_TENANT:您要為租用戶資料庫的加密金鑰備份設定的名稱。您可以選擇加入要儲存此檔案的路徑。
      • TENANT_DB_NAME:租用戶資料庫名稱
    3. 驗證備份:

      ls -ltr *.rkb

      輸出結果會與下列範例相似:

      -rw-r----- 1 sbxadm sapsys 1440 Mar 24 21:09 sbxkeys.rkb
      -rw-r----- 1 sbxadm sapsys 1440 Mar 24 21:12 systemkeys.rkb
    4. 在目標系統中,匯入系統資料庫的備份加密金鑰:

      hdbnsutil -recoverRootKeys FILE_NAME_SYS.rkb --dbid=SYSTEM_DB_ID --password=SYSTEM_DB_PASSWORD

      更改下列內容:

      • SYSTEM_DB_ID:系統資料庫 ID
      • SYSTEM_DB_PASSWORD:系統資料庫密碼
    5. 針對每個租用戶資料庫執行下列指令,匯入租用戶資料庫的備份加密金鑰:

      hdbnsutil -recoverRootKeys FILE_NAME_TENANT.rkb --dbid=TENANT_DB_ID --password=TENANT_DB_PASSWORD

      更改下列內容:

      • TENANT_DB_ID:租用戶資料庫 ID
      • TENANT_DB_PASSWORD:租用戶資料庫密碼
  5. 在目標系統中復原系統資料庫:

    HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SOURCE 'SYSTEMDB@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT"
  6. 如果您希望租用戶資料庫具有來源系統的 SID,請按照 SAP HANA 文件「重新命名租用戶資料庫」中的指示重新命名。

  7. 在目標系統中,連線至系統資料庫。例如,您可以執行下列指令:

    hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

    INSTANCE_NUMBER 替換為 SAP HANA 系統資料庫的執行個體編號。

  8. 在目標系統中,針對每個用戶群資料庫執行下列指令,即可復原用戶群資料庫:

    RECOVER DATABASE FOR TARGET_SID UNTIL TIMESTAMP '2023-12-08 23:59:00' CLEAR LOG USING SOURCE 'TARGET_SID@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT
  9. 在目標系統中,針對每個租用戶資料庫執行下列指令,連線至租用戶資料庫:

    hdbsql -d TENANT_SID -u system -p "TENANT_DB_PASSWORD" -i INSTANCE_NUMBER

    更改下列內容:

    • TENANT_SID:租用戶資料庫 SID
    • INSTANCE_NUMBER:租用戶資料庫例項編號
  10. 完成下列步驟,驗證目標資料庫中的資料一致性:

    1. 停止目標系統:

      HDB stop
    2. SIDadm 使用者身分執行 hdbpersdiag 工具:

      hdbpersdiag -c 'check all' -e HANA_DATA_DIRECTORY

      HANA_DATA_DIRECTORY 替換為 SAP HANA 資料磁碟區目錄,例如:/hana/data/SBX/mnt00001/hdb00001

  11. 如果資料一致性驗證失敗,請完成下列步驟:

    1. 針對目標系統,確認系統資料庫和所有租用戶資料庫已啟用資料加密功能:

      SELECT * FROM SYS.M_ENCRYPTION_OVERVIEW
    2. 如果任何資料庫的資料加密功能為 FALSE,請啟用資料加密功能:

      ALTER SYSTEM PERSISTENCE ENCRYPTION ON;
      ALTER SYSTEM LOG ENCRYPTION ON;
      ALTER SYSTEM BACKUP ENCRYPTION ON;
    3. 使用 hdbpersdiag 工具重新驗證資料一致性。

驗證快照一致性

本節說明如何使用 SAP 的 hdbpersdiag 工具,驗證磁碟快照中資料的一致性。如要瞭解 Google Cloud 建議的其他最佳做法,以便執行磁碟快照備份與復原作業,請參閱「最佳做法」。

如要驗證快照的一致性,請完成下列步驟:

  1. 使用代理程式的 hanadiskbackup 指令,從您建立的快照建立磁碟。使用 gcloud compute disks create 指令

    gcloud compute disks create DISK_NAME \
       --size=SIZE \
       --source-snapshot=SNAPSHOT_NAME \
       --type=DISK_TYPE \
       --zone=ZONE
    

    更改下列內容:

    • DISK_NAME:暫時磁碟的名稱
    • SIZE:暫時磁碟的大小
    • SNAPSHOT_NAME:來源快照的名稱
    • DISK_TYPE:臨時磁碟的磁碟類型
    • ZONE:要部署臨時磁碟的 Compute Engine 區域
  2. 將磁碟連結至 SAP HANA 主機以外的 Compute Engine 執行個體。使用 gcloud compute instances attach-disk 指令

    gcloud compute instances attach-disk COMPUTE_INSTANCE_NAME \
       --disk=DISK_NAME \
       --zone=ZONE
    

    更改下列內容:

    • COMPUTE_INSTANCE_NAME:您要部署所建立磁碟的 Compute Engine 執行個體名稱
    • DISK_NAME:您建立的磁碟名稱
    • ZONE:部署運算執行個體的 Compute Engine 區域
  3. 使用您偏好的 SSH 方法連線至運算執行個體。

  4. 將新磁碟掛載為暫時性檔案系統:

    1. 在作業系統層級,找出沒有任何有效邏輯磁碟區的磁碟區群組:

      vgdisplay
      

      輸出結果會與下列範例相似:

      --- Volume group ---
      VG Name               vg_hana_data
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  2
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               250.00 GiB
      PE Size               4.00 MiB
      Total PE              63999
      Alloc PE / Size       63999 / 250.00 GiB
      Free  PE / Size       0 / 0
      VG UUID               Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR
    2. 使用 VG UUID 重新命名音量群組。在上述範例中為 Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR

      vgrename Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR vg_hana_data_temp
      
    3. 啟用磁碟區群組和邏輯磁碟區:

      vgchange -a y vg_hana_data_temp
      lvchange -a y /dev/vg_hana_data_temp/data
      
    4. 在暫時性檔案系統中掛接邏輯磁碟區,例如 /hana/data_temp

      mkdir /hana/data_temp
      mount /dev/vg_hana_data_temp/data /hana/data_temp
      
    5. 確認所有磁碟是否已正確掛載:

      lsblk
      

      輸出結果會與下列範例相似:

      NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
      sda                        8:0    0   30G  0 disk
      ├─sda1                     8:1    0    2M  0 part
      ├─sda2                     8:2    0   20M  0 part /boot/efi
      └─sda3                     8:3    0   30G  0 part /
      sdb                        8:16   0  350G  0 disk
      └─vg_hana_data_temp-data 254:5    0  250G  0 lvm  /hana/data_temp
      sdc                        8:32   0  104G  0 disk
      └─vg_hana_log-log        254:2    0  104G  0 lvm  /hana/log
      sdd                        8:48   0  208G  0 disk
      └─vg_hana_shared-shared  254:0    0  208G  0 lvm  /hana/shared
      sde                        8:64   0   32G  0 disk
      └─vg_hana_usrsap-usrsap  254:3    0   32G  0 lvm  /usr/sap
      sdf                        8:80   0  416G  0 disk
      └─vg_hanabackup-backup   254:4    0  416G  0 lvm  /hanabackup
      sdh                        8:112  0  250G  0 disk
      └─vg_hana_data-data      254:1    0  250G  0 lvm  /hana/data
  5. SIDadm 使用者身分,針對臨時檔案系統中的資料卷執行 hdbpersdiag 工具:

    for directory in $(find /hana/data_temp/SID/mnt00001/hdb* -type d); do hdbpersdiag -c -e 'check all' $directory; done
    
  6. 驗證 hdbpersdiag 工具的輸出內容。

  7. 如果您打算日後執行這項一致性檢查,可以保留新的磁區群組。如果不打算執行,請刪除該群組。

  8. 從運算執行個體卸離磁碟。使用 gcloud compute instances detach-disk 指令

    COMPUTE_INSTANCE_NAME \
       --disk=DISK_NAME \
       --zone=ZONE
    
  9. 刪除磁碟。使用 gcloud compute disks delete 指令

    gcloud compute disks delete DISK_NAME \
       --zone=ZONE
    

疑難排解

雖然 Google Cloud的 SAP 代理程式可處理 SAP HANA 磁碟快照備份與復原作業期間可能發生的大部分問題,但仍有少數情況需要手動介入。

如要排解Google Cloud的 SAP 代理程式磁碟快照功能相關問題,請參閱「以磁碟快照為基礎的備份或復原作業問題」。

取得支援

如果您需要協助解決 Google Cloud的 Agent for SAP 相關問題,請收集必要的診斷資訊,然後與 Cloud Customer Care 團隊聯絡。如需詳細資訊,請參閱 Google Cloud的 SAP 代理程式,瞭解 SAP HANA 的診斷資訊