ACS-HBR-SAPHanaRestorationAutomationByExistingECS:SAP HANA バックアップを既存のインスタンスに復元することで検証します。
テンプレートの説明
Hybrid Backup Recovery (HBR) サービスを使用して、ソース SAP HANA インスタンスから既存の宛先 SAP HANA インスタンスにバックアップデータを復元します。データ復元後、このテンプレートは宛先インスタンスのステータスを確認します。 今すぐ実行
テンプレートタイプ
自動化
所有者
Alibaba Cloud
入力パラメーター
パラメーター | 説明 | タイプ | 必須 | デフォルト値 | 制約 |
vaultId | Hybrid Backup Recovery (HBR) バックアップボールトの ID。 | 文字列 | はい | ||
sourceClusterId | ソース HBR インスタンスの ID。 | 文字列 | はい | ||
destinationClusterId | 宛先 HBR インスタンスの ID。 | 文字列 | はい | ||
HANASID | 宛先 SAP HANA インスタンスのシステム ID (SID)。 | 文字列 | はい | 正規表現:^[A-Z][A-Z0-9][A-Z0-9]$ | |
ECSHostname | 宛先インスタンスのホスト名。 | 文字列 | はい | 正規表現:^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$ | |
HANAInstanceNumber | 宛先 SAP HANA インスタンスのインスタンス番号。 | 文字列 | はい | 正規表現:^([0-8][0-9]|9[0-6])$ | |
dingTalkWebhook | DingTalk チャットボットの Webhook URL。 | 文字列 | はい | ||
databaseName | データベースインスタンスのリスト。 | リスト | いいえ | ['SYSTEMDB@<SID>:SYSTEMDB'] |
出力パラメーター
なし
必要なアクセスポリシー
{
"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"
}
]
}
詳細
詳細については、「GitHub の ACS-HBR-SAPHanaRestorationAutomationByExistingECS.yml」をご参照ください。
テンプレートコンテンツ
FormatVersion: OOS-2019-06-01
Description:
name-ja: ACS-HBR-SAPHanaRestorationAutomationByExistingECS
ja: このテンプレートは、既存の SAP HANA インスタンス (ソースインスタンスと宛先インスタンス) を使用して、Hybrid Backup Recovery (HBR) サービスを介してソースインスタンスから宛先インスタンスにバックアップデータを復元します。また、復元後に宛先インスタンスのステータスを確認します。
Parameters:
vaultId:
Label:
ja: バックアップボールト ID
Description:
ja: バックアップボールトの ID。
Type: String
sourceClusterId:
Label:
ja: ソース SAP HANA インスタンス ID
Description:
ja: ソース SAP HANA インスタンスの ID。この ID は、Hybrid Backup Recovery コンソールで見つけることができます。[ECS アプリケーションバックアップ] に移動し、[インスタンス名/ID] 列を確認してください。
Type: String
destinationClusterId:
Label:
ja: 宛先 SAP HANA インスタンス ID
Description:
ja: 宛先 SAP HANA インスタンスの ID。この ID は、Hybrid Backup Recovery コンソールで見つけることができます。[ECS アプリケーションバックアップ] に移動し、[インスタンス名/ID] 列を確認してください。
Type: String
databaseName:
Label:
ja: SAP HANA データベースリスト
Description:
ja: 復元する SAP HANA データベースインスタンスのリスト。フォーマット:<ソースデータベース名>@<SID>:<宛先データベース名> を使用します。複数のデータベースインスタンスは改行で区切ります。
Type: List
Default:
- 'SYSTEMDB@<SID>:SYSTEMDB'
HANASID:
Type: String
ConstraintDescription:
ja: 3 文字である必要があります。大文字と数字を含めることができ、大文字で始まる必要があります。
Label:
ja: SAP HANA SID
Description:
ja: 宛先 SAP HANA インスタンスの SID。
AllowedPattern: '^[A-Z][A-Z0-9][A-Z0-9]$'
ECSHostname:
Type: String
Label:
ja: ホスト名
Description:
ja: SAP HANA ECS インスタンスのホスト名。
AllowedPattern: '^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-])*([a-zA-Z0-9])$'
ConstraintDescription:
ja: 長さは 2~13 文字である必要があります。文字、数字、ハイフン (-) を含めることができますが、ハイフンで開始または終了することはできません。
HANAInstanceNumber:
Type: String
Label:
ja: SAP HANA インスタンス番号
Description:
ja: SAP HANA インスタンスのインスタンス番号。
ConstraintDescription:
ja: 00 から 97 までの 2 桁の数字。
AllowedPattern: '^([0-8][0-9]|9[0-6])$'
dingTalkWebhook:
Label:
ja: DingTalk ロボット Webhook
Description:
ja: カスタム DingTalk チャットボットの Webhook URL。テスト結果やクラウドリソース削除の承認メッセージの送信に使用されます。詳細については、<a href=''https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq'' target=''_blank''>カスタム DingTalk チャットボット</a>をご参照ください。
Type: String
Tasks:
- Name: checkHanaBackupSetting
Action: 'ACS::CheckFor'
Description:
ja: ソース SAP HANA インスタンスのデータベースバックアップ設定をクエリします。
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:
ja: クライアントがアクティベートされているかどうかを確認します。
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:
ja: バックアップを復元して検証します。
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:
ja: 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:
ja: 実行失敗メッセージを取得します。
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:
ja: 実行失敗に関する通知を送信します。
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ dingTalkWebhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: '{{ ACS::CurrentUTCTime }}-HBR 自動テスト失敗レポート'
text:
'Fn::Join':
- |+
- - '#### {{ ACS::CurrentUTCTime }} - HBR 自動テスト失敗レポート'
- 'チェック対象データベース:{{ databaseName }}'
- 'エラーメッセージ:{{ getExecutionFaildMessage.statusMessage }}'
- '**詳細については、[OOS コンソール](https://oos.console.alibabacloud.com/{{ ACS::RegionId }}/execution/detail/{{ ACS::ExecutionId }}) をご参照ください**'
at:
atMobiles: []
isAtAll: true
- Name: DingTalkNotify
Action: 'ACS::Notify'
Description:
ja: テスト結果を含む通知を送信します。
Properties:
NotifyType: WebHook
WebHook:
URI: '{{ dingTalkWebhook }}'
Headers:
Content-Type: application/json
Content:
msgtype: markdown
markdown:
title: '{{ ACS::CurrentUTCTime }}-HBR 自動テストレポート'
text:
'Fn::Join':
- |+
- - '#### {{ ACS::CurrentUTCTime }} - HBR 自動テストレポート'
- 'テスト結果:SUCCESS'
- 'チェック対象データベース:{{ databaseName }}'
- '宛先インスタンス:{{ ECSHostname }}'
- '宛先インスタンス ID:{{ checkForActivateClient.InstanceId }}'
- '**詳細については、[OOS コンソール](https://oos.console.alibabacloud.com/{{ACS::RegionId}}/execution/detail/{{ ACS::ExecutionId }}) をご参照ください**'
at:
atMobiles: []
isAtAll: true