Skip to content

Commit 9957348

Browse files
committed
Enhance Azure Backup documentation and scripts with improved parameter descriptions and logic for HANA DB recovery tasks
1 parent 59859d4 commit 9957348

6 files changed

Lines changed: 26 additions & 7 deletions

File tree

docs/AZURE_BACKUP.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ SAP_FUNCTIONAL_TEST_TYPE: AzureBackupDatabase
6060
Add the following variables to your system's `sap-parameters.yaml` file (under `WORKSPACES/SYSTEM/<SYSTEM_CONFIG_NAME>/`):
6161

6262
```yaml
63-
# Recovery Services vault ARM resource ID
63+
# Recovery Services vault ARM resource ID (required)
6464
backup_vault_resource_id: "/subscriptions/xxxx/resourceGroups/my-rg/providers/Microsoft.RecoveryServices/vaults/my-vault"
6565
6666
# Whether to restore SYSTEMDB (set false to skip)
@@ -84,6 +84,19 @@ backup_restore_point_time: ""
8484
hana_userstore_key: "SYSTEM"
8585
```
8686

87+
#### Parameter Reference
88+
89+
| Parameter | Default | Description |
90+
|-----------|---------|-------------|
91+
| `backup_vault_resource_id` | `""` | Full ARM resource ID of the Recovery Services vault (required) |
92+
| `backup_restore_systemdb` | `true` | Whether to include SYSTEMDB in restore operations |
93+
| `backup_restore_tenants` | `[]` | List of tenant DB names to restore; empty means all tenants |
94+
| `backup_target_filesystem_path` | `"/sapinstall/hana_backup/"` | Filesystem path for restore-as-files (test case 3) |
95+
| `backup_target_vm_name` | `""` | Target VM hostname for cross-VM restore (test case 5) |
96+
| `backup_target_vm_rg` | `""` | Target VM resource group; defaults to source VM's RG if empty |
97+
| `backup_restore_point_time` | `""` | Point-in-time for restore in ISO 8601 UTC; empty uses latest recovery point |
98+
| `hana_userstore_key` | `"SYSTEM"` | HANA hdbuserstore key for database connectivity |
99+
87100
### 3. User-Assigned Managed Identity (Optional)
88101

89102
If your management server uses a user-assigned managed identity, set the client ID in `vars.yaml`:

src/module_utils/backup_discovery.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ def _matches_source_vm(
8585
if not lower_server:
8686
return False
8787

88-
if self._source_vm in lower_server or lower_server in self._source_vm:
88+
if min(len(self._source_vm), len(lower_server)) >= 5 and (
89+
self._source_vm in lower_server or lower_server in self._source_vm
90+
):
8991
return True
9092

9193
parts = re.split(r"[-_]", self._source_vm)

src/roles/backup_db_hana/tasks/recover-db-commands.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@
290290
set -o pipefail
291291
source /usr/sap/{{ db_sid | upper }}/home/.sapenv.sh && \
292292
hdbnsutil -sr_register --online \
293-
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2')), true) }} \
293+
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2'), true), true) }} \
294294
--remoteHost={{ backup_primary_node }} \
295295
--remoteInstance={{ db_instance_number }} \
296296
--replicationMode={{ cluster_status_pre.replication_mode

src/roles/backup_db_hana/tasks/rescue-backup.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
set -o pipefail
9191
source /usr/sap/{{ db_sid | upper }}/home/.sapenv.sh && \
9292
hdbnsutil -sr_register \
93-
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2')), true) }} \
93+
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2'), true), true) }} \
9494
--remoteHost={{ backup_primary_node | default(ansible_hostname) }} \
9595
--remoteInstance={{ db_instance_number }} \
9696
--replicationMode={{ cluster_status_pre.replication_mode | default(backup_hsr_replication_mode | default('syncmem')) }} \

src/roles/backup_db_hana/tasks/restore-to-db.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,11 @@
214214
changed_when: hsr_disable_result.rc == 0
215215
when: database_high_availability | default(false) | bool
216216

217-
- name: "Test Execution: Stop HANA DB before restore"
217+
# NOTE: The stop→start cycle is intentional, not redundant.
218+
# After HSR unregister + sr_disable above, HANA still runs with stale HSR
219+
# metadata in memory. HDB stop clears that state; HDB start brings HANA
220+
# back in clean standalone mode.
221+
- name: "Test Execution: Stop HANA DB to clear HSR state"
218222
become: true
219223
become_user: "{{ db_sid | lower }}adm"
220224
ansible.builtin.shell: |
@@ -425,7 +429,7 @@
425429
set -o pipefail
426430
source /usr/sap/{{ db_sid | upper }}/home/.sapenv.sh && \
427431
hdbnsutil -sr_register \
428-
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2')), true) }} \
432+
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2'), true), true) }} \
429433
--remoteHost={{ backup_primary_node }} \
430434
--remoteInstance={{ db_instance_number }} \
431435
--replicationMode={{ cluster_status_pre.replication_mode | default(backup_hsr_replication_mode | default('syncmem')) }} \

src/roles/backup_db_hana/tasks/restore-to-filesystem.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@
533533
set -o pipefail
534534
source /usr/sap/{{ db_sid | upper }}/home/.sapenv.sh && \
535535
hdbnsutil -sr_register --online \
536-
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2')), true) }} \
536+
--name={{ backup_secondary_site_name | default(cluster_status_pre.secondary_site_name | default(backup_hsr_secondary_site | default('site2'), true), true) }} \
537537
--remoteHost={{ backup_primary_node }} \
538538
--remoteInstance={{ db_instance_number }} \
539539
--replicationMode={{ cluster_status_pre.replication_mode | default(backup_hsr_replication_mode | default('syncmem')) }} \

0 commit comments

Comments
 (0)