全部产品
Search
文档中心

CloudOps Orchestration Service:ACS-HBR-SAPHanaRestorationAutomationByExistingECS

更新时间:Dec 21, 2025

ACS-HBR-SAPHanaRestorationAutomationByExistingECS: Memvalidasi backup SAP HANA dengan memulihkannya ke instans yang sudah ada.

Deskripsi template

Templat ini menggunakan layanan Hybrid Backup Recovery (HBR) untuk memulihkan data cadangan dari instans SAP HANA sumber ke instans SAP HANA tujuan yang telah ada. Setelah pemulihan data selesai, templat ini memeriksa status instans tujuan. Jalankan sekarang

Tipe template

Otomatisasi

Pemilik

Alibaba Cloud

Parameter input

Parameter

Deskripsi

Tipe

Diperlukan

Nilai default

Batasan

vaultId

ID penyimpanan cadangan Hybrid Backup Recovery (HBR).

String

Ya

sourceClusterId

ID instance HBR sumber.

String

Ya

destinationClusterId

ID instance HBR tujuan.

String

Ya

HANASID

System ID (SID) instans SAP HANA tujuan.

String

Ya

Ekspresi reguler: ^[A-Z][A-Z0-9][A-Z0-9]$

ECSHostname

Hostname instans tujuan.

String

Ya

Ekspresi reguler: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$

HANAInstanceNumber

Nomor instans instans SAP HANA tujuan.

String

Ya

Ekspresi reguler: ^([0-8][0-9]|9[0-6])$

dingTalkWebhook

URL webhook chatbot DingTalk.

String

Ya

databaseName

Daftar instans database.

List

Tidak

['SYSTEMDB@<SID>:SYSTEMDB']

Parameter output

Tidak tersedia.

Kebijakan akses yang diperlukan

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "hbr:CreateHanaRestore",
                "hbr:DescribeClients",
                "hbr:DescribeHanaBackupSetting",
                "hbr:DescribeHanaBackupsAsync",
                "hbr:DescribeHanaRestores",
                "hbr:DescribeTask",
                "hbr:UpdateHanaBackupSetting"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:RunCommand"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "oos:ListExecutions"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Rincian

Untuk informasi selengkapnya, lihat ACS-HBR-SAPHanaRestorationAutomationByExistingECS.yml di GitHub.

Konten Template

FormatVersion: OOS-2019-06-01
Description:
  name-en: ACS-HBR-SAPHanaRestorationAutomationByExistingECS
  en: This template uses existing SAP HANA instances (a source instance and a destination instance) to restore backup data from the source instance to the destination instance using the Hybrid Backup Recovery (HBR) service. It also checks the status of the destination instance after the restoration.
Parameters:
  vaultId:
    Label:
      en: Backup Vault ID
    Description:
      en: The ID of the backup vault.
    Type: String
  sourceClusterId:
    Label:
      en: Source SAP HANA instance ID
    Description:
      en: 'The ID of the source SAP HANA instance. You can find this ID in the Hybrid Backup Recovery console. Go to ECS Application Backup and look in the Instance Name/ID column.'
    Type: String
  destinationClusterId:
    Label:
      en: Destination SAP HANA instance ID
    Description:
      en: 'The ID of the destination SAP HANA instance. You can find this ID in the Hybrid Backup Recovery console. Go to ECS Application Backup and look in the Instance Name/ID column.'
    Type: String
  databaseName:
    Label:
      en: SAP HANA Database List
    Description:
      en: 'A list of SAP HANA database instances to restore. Use the format: <Source_database_name>@<SID>:<Destination_database_name>. Separate multiple database instances with line breaks.'
    Type: List
    Default:
      - 'SYSTEMDB@<SID>:SYSTEMDB'
  HANASID:
    Type: String
    ConstraintDescription:
      en: 'Must be 3 characters. It can contain uppercase letters and numbers, and must start with an uppercase letter.'
    Label:
      en: SAP HANA SID
    Description:
      en: The SID of the destination SAP HANA instance.
    AllowedPattern: '^[A-Z][A-Z0-9][A-Z0-9]$'
  ECSHostname:
    Type: String
    Label:
      en: Hostname
    Description:
      en: The hostname of the SAP HANA ECS instance.
    AllowedPattern: '^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$'
    ConstraintDescription:
      en: 'The length must be 2 to 13 characters. It can contain letters, numbers, and hyphens (-), but cannot start or end with a hyphen.'
  HANAInstanceNumber:
    Type: String
    Label:
      en: SAP HANA Instance Number
    Description:
      en: The instance number of the SAP HANA instance.
    ConstraintDescription:
      en: 'A two-digit number from 00 to 97.'
    AllowedPattern: '^([0-8][0-9]|9[0-6])$'
  dingTalkWebhook:
    Label:
      en: DingTalk Robot Webhook
    Description:
      en: 'The webhook URL for a custom DingTalk chatbot. It is used to send test results and approval messages for deleting cloud resources. For more information, see <a href=''https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq'' target=''_blank''>Custom DingTalk Chatbots</a>.'
    Type: String
Tasks:
  - Name: checkHanaBackupSetting
    Action: 'ACS::CheckFor'
    Description:
      id: Menanyakan pengaturan backup database instans SAP HANA sumber.
    Properties:
      Service: HBR
      API: DescribeHanaBackupSetting
      Parameters:
        VaultId: '{{ vaultId }}'
        ClusterId: '{{ sourceClusterId }}'
        DatabaseName: 
          'Fn::Select':
            - 0
            - 'Fn::Split':
              - '@'
              - '{{ ACS::TaskLoopItem }}'
      PropertySelector: HanaBackupSetting.CatalogBackupUsingBackint
      DesiredValues:
        - true
    Retries: 2
    Loop:
      Items: '{{ databaseName }}'
      RateControl:
        MaxErrors: 0
        Mode: Concurrency
        Concurrency: 1
  - Name: checkForActivateClient
    Action: 'ACS::CheckFor'
    OnError: getExecutionFaildMessage
    Description:
      id: Memeriksa apakah client telah diaktifkan.
    Properties:
      Service: HBR
      API: DescribeClients
      Parameters:
        ClusterId: '{{ destinationClusterId }}'
        VaultId: '{{ vaultId }}'
        SourceType: HANA
        ClientType: ECS_AGENT
      PropertySelector: 'Clients.Client[].Status'
      DesiredValues:
        - ACTIVATED
    Retries: 2
    Outputs:
      ClientId:
        Type: String
        ValueSelector: 'Clients.Client[].ClientId'
      InstanceId:
        Type: String
        ValueSelector: 'Clients.Client[].InstanceId'
  - Name: RestoreBuckup
    Action: 'ACS::HBR::RestoreHanaDatabaseBackup'
    OnError: getExecutionFaildMessage
    Description:
      id: Memulihkan dan memverifikasi backup.
    Properties:
      vaultId: '{{ vaultId }}'
      sourceClusterId: '{{ sourceClusterId }}'
      sourceSystemName:
        'Fn::Select':
          - 0
          - 'Fn::Split':
            - ':'
            - '{{ ACS::TaskLoopItem }}'
      clusterId: '{{ destinationClusterId }}'
      databaseName:
        'Fn::Select':
          - 1
          - 'Fn::Split':
            - ':'
            - '{{ ACS::TaskLoopItem }}'
      HANAInstanceServerId: '{{ checkForActivateClient.InstanceId }}'
      HANASID: '{{ HANASID }}'
      masterClientId: '{{ checkForActivateClient.ClientId }}'
    Loop:
      Items: '{{ databaseName }}'
      RateControl:
        MaxErrors: 0
        Mode: Concurrency
        Concurrency: 1
  - Name: runCommand
    Action: 'ACS::ECS::RunCommand'
    OnSuccess: DingTalkNotify
    OnError: getExecutionFaildMessage
    Description:
      id: Memverifikasi status berjalan instans SAP HANA.
    Properties:
      regionId: '{{ ACS::RegionId }}'
      commandContent:
        'Fn::Join':
          - ''
          - - 'su - '
            - 'Fn::Jq':
                - First
                - .key | ascii_downcase
                - key: '{{ HANASID }}'
            - 'adm -c "sapcontrol -nr '
            - '{{ HANAInstanceNumber }}'
            - ' -function GetProcessList"; if [[ $? -eq 3 ]]; then exit 0;fi'
      instanceId: '{{ checkForActivateClient.InstanceId }}'
      commandType: RunShellScript
      timeout: '180'
    Outputs:
      commandOutputs:
        Type: String
        ValueSelector: invocationOutput
  - Name: getExecutionFaildMessage
    Action: 'ACS::ExecuteAPI'
    Description:
      id: Mendapatkan pesan kegagalan eksekusi.
    Properties:
      Service: OOS
      API: ListExecutions
      Parameters:
        ExecutionId: '{{ ACS::ExecutionId }}'
    Outputs:
      statusMessage:
        Type: String
        ValueSelector: 'Executions[].StatusMessage'
  - Name: DingTalkNotifyExecutionFailed
    Action: 'ACS::Notify'
    OnSuccess: 'ACS::END'
    Description:
      id: Mengirim notifikasi tentang kegagalan eksekusi.
    Properties:
      NotifyType: WebHook
      WebHook:
        URI: '{{ dingTalkWebhook }}'
        Headers:
          Content-Type: application/json
        Content:
          msgtype: markdown
          markdown:
            title: '{{ ACS::CurrentUTCTime }}-Laporan kegagalan pengujian otomatis HBR'
            text:
              'Fn::Join':
                - |+


                - - '#### {{ ACS::CurrentUTCTime }} - Laporan kegagalan pengujian otomatis HBR'
                  - 'Database yang diperiksa: {{ databaseName }}'
                  - 'Pesan error: {{ getExecutionFaildMessage.statusMessage }}'
                  - '**Untuk detailnya, buka [Konsol OOS](https://oos.console.alibabacloud.com/{{ ACS::RegionId }}/execution/detail/{{ ACS::ExecutionId }})**'
          at:
            atMobiles: []
            isAtAll: true
  - Name: DingTalkNotify
    Action: 'ACS::Notify'
    Description:
      id: Mengirim notifikasi berisi hasil pengujian.
    Properties:
      NotifyType: WebHook
      WebHook:
        URI: '{{ dingTalkWebhook }}'
        Headers:
          Content-Type: application/json
        Content:
          msgtype: markdown
          markdown:
            title: '{{ ACS::CurrentUTCTime }}-Laporan pengujian otomatis HBR'
            text:
              'Fn::Join':
                - |+


                - - '#### {{ ACS::CurrentUTCTime }} - Laporan pengujian otomatis HBR'
                  - 'Hasil pengujian: BERHASIL'
                  - 'Database yang diperiksa: {{ databaseName }}'
                  - 'Instans tujuan: {{ ECSHostname }}'
                  - 'ID instans tujuan: {{ checkForActivateClient.InstanceId }}'
                  - '**Untuk informasi selengkapnya, buka [Konsol OOS](https://oos.console.alibabacloud.com/{{ACS::RegionId}}/execution/detail/{{ ACS::ExecutionId }})**'
          at:
            atMobiles: []
            isAtAll: true