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