Tipps und Tricks zur Verwendung des Tools für konsistente Momentaufnahmen in Azure-Anwendungen für Azure NetApp Files

Dieser Artikel enthält Tipps und Tricks, die bei der Verwendung von AzAcSnap hilfreich sein können.

Globale Außerkraftsetzungseinstellungen zur Steuerung des AzAcSnap-Verhaltens

In AzAcSnap 8 wurde eine neue globale Einstellungsdatei (.azacsnaprc) eingeführt, die sich im gleichen Verzeichnis (dem aktuellen Arbeitsverzeichnis) befindet, in dem AzAcSnap ausgeführt wird. Der Dateiname lautet .azacsnaprc. Durch Verwenden des Punkts „.“ am Anfang des Dateinamens wird die Datei aus Standardverzeichnisauflistungen ausgeblendet. In der Datei können globale Einstellungen, die das Verhalten von AzAcSnap steuern, festgelegt werden. Sie hat folgendes Format: ein Eintrag pro Zeile mit einer unterstützten Anpassungsvariablen und einem neuen Außerkraftsetzungswert.

Einstellungen, die durch Hinzufügen/Bearbeiten der globalen Datei für Außerkraftsetzungseinstellungen oder durch Festlegen als Umgebungsvariablen gesteuert werden können:

  • MAINLOG_LOCATION: Damit lässt sich der Speicherort der Hauptprotokoll-Ausgabedatei anpassen, die azacsnap.log heißt und in AzAcSnap 8 eingeführt wurde. Als Werte sind der absolute Pfade und der Standardwert = '.' (das aktuelle Arbeitsverzeichnis) zulässig. Um z. B. sicherzustellen, dass die Hauptprotokoll-Ausgabedatei in das Verzeichnis /home/azacsnap/bin/logs ausgegeben wird, fügen Sie der .azacsnaprc-Datei Folgendes hinzu:
    • MAINLOG_LOCATION=/home/azacsnap/bin/logs
  • AZURE_MANAGEMENT_ENDPOINT: Dient zum Anpassen des Standorts des Azure Management-Endpunkts, den AzAcSnap für Azure REST-API-Aufrufe verwendet, und wurde in AzAcSnap 9a eingeführt. Als Werte sind URL-Pfade und der Standardwert = 'https://management.azure.com' zulässig. Um beispielsweise AzAcSnap so zu konfigurieren, dass alle Verwaltungsaufrufe an den Azure Management Endpoint for US Govt Cloud weitergeleitet werden (siehe Azure Government Guidance for developers), fügen Sie der Datei .azacsnaprc Folgendes hinzu:
    • AZURE_MANAGEMENT_ENDPOINT=https://management.usgovcloudapi.net

Hinweis

Ab AzAcSnap 9a können alle diese Werte auch als Befehlszeilenumgebungsvariablen oder anstelle der Datei .azacsnaprc festgelegt werden. Beispielsweise kann unter Linux die Einstellung AZURE_MANAGEMENT_ENDPOINT mit export AZURE_MANAGEMENT_ENDPOINT=https://management.usgovcloudapi.net festgelegt werden, bevor AzAcSnap ausgeführt wird.

Analyse des Hauptprotokolls

In AzAcSnap 8 wurde ein neues Hauptprotokoll eingeführt, um eine einfachere Analyse der Ausführung von AzAcSnap zu ermöglichen. Vorbild für diese Datei ist der SAP HANA-Sicherungskatalog, aus dem hervorgeht, wann AzAcSnap gestartet wurde, wie lange die Ausführung gedauert hat und wie der Name der Momentaufnahme lautet. Bei AzAcSnap wurde diese Idee erweitert, um Informationen zu den einzelnen AzAcSnap-Befehlen, insbesondere die -c-Optionen, einzuschließen. Die Datei verfügt über die folgenden Header:

DATE_TIME,OPERATION_NAME,STATUS,SID,DATABASE_TYPE,DURATION,SNAPSHOT_NAME,AZACSNAP_VERSION,AZACSNAP_CONFIG_FILE,VOLUME

Wenn AzAcSnap ausgeführt wird, werden abhängig vom verwendeten -c-Befehl die entsprechenden Informationen an das Protokoll angefügt. Beispiele für die Ausgabe sind:

2023-03-29T16:10:57.8643546+13:00,about,started,,,,,8,azacsnap.json,
2023-03-29T16:10:57.8782148+13:00,about,SUCCESS,,,0:00:00.0258013,,8,azacsnap.json,
2023-03-29T16:11:55.7276719+13:00,backup,started,PR1,Hana,,pr1_hourly__F47B181A117,8,PR1.json,(data)HANADATA_P;(data)HANASHARED_P;(data)VGvol01;
2023-03-29T16:13:03.3774633+13:00,backup,SUCCESS,PR1,Hana,0:01:07.7558663,pr1_hourly__F47B181A117,8,PR1.json,(data)HANADATA_P;(data)HANASHARED_P;(data)VGvol01;
2023-03-29T16:13:30.1312963+13:00,details,started,PR1,Hana,,,8,PR1.json,(data)HANADATA_P;(data)HANASHARED_P;(data)VGvol01;(other)HANALOGBACKUP_P;
2023-03-29T16:13:33.1806098+13:00,details,SUCCESS,PR1,Hana,0:00:03.1380686,,8,PR1.json,(data)HANADATA_P;(data)HANASHARED_P;(data)VGvol01;(other)HANALOGBACKUP_P;

Durch dieses Format kann die Datei mit den Linux-Befehlen watch, grep, head, tail und column analysiert werden, um fortlaufende Updates von AzAcSnap-Sicherungen zu erhalten. Eine Beispielkombination dieser Befehle in einem einzigen Shellskript zum Überwachen von AzAcSnap sieht wie folgt aus:

#!/bin/bash
#
# mainlog-watcher.sh
# Monitor execution of AzAcSnap backup commands
#
# These values can be modified as appropriate.
# Mainlog header fields:
#       1. DATE_TIME,
#       2. OPERATION_NAME,
#       3. STATUS,
#       4. SID,
#       5. DATABASE_TYPE,
#       6. DURATION,
#       7. SNAPSHOT_NAME,
#       8. AZACSNAP_VERSION,
#       9. AZACSNAP_CONFIG_FILE,
#       10. VOLUME
FIELDS_TO_INCLUDE="1,2,3,5,4,6,7"
SCREEN_REFRESH_SECS=2
#
# Use AzAcSnap global settings file (.azacsnaprc) if available,
# otherwise use the default location of the current working directory.
AZACSNAP_RC=".azacsnaprc"
if [ -f ${AZACSNAP_RC} ]; then
    source ${AZACSNAP_RC} 2> /dev/null
else
    MAINLOG_LOCATION="."
fi
cd ${MAINLOG_LOCATION}
echo "Changing current working directory to ${MAINLOG_LOCATION}"
#
# Default MAINLOG filename.
HOSTNAME=$(hostname)
MAINLOG_FILENAME="azacsnap.log"
#
# High-level explanation of how commands used.
# `watch` - continuously monitoring the command output.
# `grep` - filter only backup runs.
# `head` and `tail` - add/remove column headers.
# `sed` to remove millisecs from date.
# `awk` format output for `column`.
# `column` - provide pretty output.
FIELDS_FOR_AWK=$(echo "${FIELDS_TO_INCLUDE}" | sed 's/^/\\\$/g' | sed 's/,/,\\\$/g')
PRINTOUT="{OFS=\\\",\\\";print ${FIELDS_FOR_AWK}}"
#
echo -n "Parsing '${MAINLOG_FILENAME}' for field #s ${FIELDS_TO_INCLUDE} = "
bash -c "cat ${MAINLOG_FILENAME} | grep -e \"DATE\" | head -n1 -  | awk -F\",\" \"${PRINTOUT}\" "
#
watch -t -n ${SCREEN_REFRESH_SECS} \
  "\
  echo -n \"Monitoring AzAcSnap on '${HOSTNAME}' @ \" ; \
  date ; \
  echo ; \
  cat ${MAINLOG_FILENAME} \
    | grep -e \"DATE\" -e \",backup,\" \
    | ( sleep 1; head -n1 - ; sleep 1; tail -n+2 - | tail -n20 \
      | sed 's/\(:[0-9][0-9]\)\.[0-9]\{7\}/\1/' ; sleep 1 ) \
    | awk -F\",\" \"${PRINTOUT}\" \
    | column -s\",\" -t \
  "
exit 0

Erzeugt die folgende Ausgabe, die alle zwei Sekunden aktualisiert wird.

Monitoring AzAcSnap on 'azacsnap' @ Thu Sep 21 11:27:40 NZST 2023

DATE_TIME                  OPERATION_NAME  STATUS   DATABASE_TYPE  SID       DURATION         SNAPSHOT_NAME
2023-09-21T07:00:02+12:00  backup          started  Oracle         ORATEST1                   all-volumes__F6B07A2D77A
2023-09-21T07:02:10+12:00  backup          SUCCESS  Oracle         ORATEST1  0:02:08.0338537  all-volumes__F6B07A2D77A
2023-09-21T08:00:03+12:00  backup          started  Oracle         ORATEST1                   all-volumes__F6B09C83210
2023-09-21T08:02:12+12:00  backup          SUCCESS  Oracle         ORATEST1  0:02:09.9954439  all-volumes__F6B09C83210
2023-09-21T09:00:03+12:00  backup          started  Oracle         ORATEST1                   all-volumes__F6B0BED814B
2023-09-21T09:00:03+12:00  backup          started  Hana           PR1                        pr1_hourly__F6B0BED817F
2023-09-21T09:01:10+12:00  backup          SUCCESS  Hana           PR1       0:01:07.8575664  pr1_hourly__F6B0BED817F
2023-09-21T09:02:12+12:00  backup          SUCCESS  Oracle         ORATEST1  0:02:09.4572157  all-volumes__F6B0BED814B

Begrenzen von Dienstprinzipalberechtigungen

Möglicherweise ist es erforderlich, den Berechtigungsbereich des AzAcSnap-Dienstprinzipals einzuschränken. Weitere Informationen zur fein abgestuften Zugriffsverwaltung von Azure-Ressourcen finden Sie in der Azure RBAC-Dokumentation.

Im Folgenden finden Sie eine Beispielrollendefinition mit den mindestens erforderlichen Aktionen, die für die Funktion von AzAcSnap erforderlich sind.

az role definition create --role-definition '{ \
  "Name": "Azure Application Consistent Snapshot tool", \
  "IsCustom": "true", \
  "Description": "Perform snapshots on ANF volumes.", \
  "Actions": [ \
    "Microsoft.NetApp/*/read", \
    "Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots/write", \
    "Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots/delete" \
  ], \
  "NotActions": [], \
  "DataActions": [], \
  "NotDataActions": [], \
  "AssignableScopes": ["/subscriptions/<insert your subscription id>"] \
}'

Damit Wiederherstellungsoptionen erfolgreich funktionieren, muss der AzAcSnap-Dienstprinzipal auch Volumes erstellen können. In diesem Fall benötigt die Rollendefinition eine zusätzliche „Action“-Klausel. Daher sollte der vollständige Dienstprinzipal wie im folgenden Beispiel aussehen.

az role definition create --role-definition '{ \
  "Name": "Azure Application Consistent Snapshot tool", \
  "IsCustom": "true", \
  "Description": "Perform snapshots and restores on ANF volumes.", \
  "Actions": [ \
    "Microsoft.NetApp/*/read", \
    "Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots/write", \
    "Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots/delete", \
    "Microsoft.NetApp/netAppAccounts/capacityPools/volumes/write" \
  ], \
  "NotActions": [], \
  "DataActions": [], \
  "NotDataActions": [], \
  "AssignableScopes": ["/subscriptions/<insert your subscription id>"] \
}'

Manuelles Erstellen von Momentaufnahmen

Überprüfen Sie vor dem Ausführen jeglicher Sicherungsbefehle (azacsnap -c backup) die Konfiguration, indem Sie die Testbefehle ausführen und überprüfen, ob Sie erfolgreich ausgeführt werden. Die korrekte Ausführung dieser Tests hat gezeigt, dass azacsnap mit der installierten SAP HANA-Datenbank und dem zugrunde liegenden Speichersystem von SAP HANA in Azure (große Instanzen) oder dem Azure NetApp Files-System kommunizieren kann.

  • azacsnap -c test --test hana
  • azacsnap -c test --test storage

Führen Sie dann zur Erstellung einer manuellen Datenbankmomentaufnahme den folgenden Befehl aus:

azacsnap -c backup --volume data --prefix hana_TEST --retention=1

Einrichten der automatischen Momentaufnahmensicherung

Auf Unix/Linux-Systemen ist es gängige Praxis, die Ausführung von Befehlen auf einem System mit cron zu automatisieren. Das Standardverfahren für die Momentaufnahmetools besteht darin, die crontab des Benutzers einzurichten.

Es folgt ein Beispiel für einen crontab für den Benutzer azacsnap zum Automatisieren von Momentaufnahmen.

MAILTO=""
# =============== TEST snapshot schedule ===============
# Data Volume Snapshots - taken every hour.
@hourly (. /home/azacsnap/.profile ; cd /home/azacsnap/bin ; azacsnap -c backup --volume data --prefix hana_TEST --retention=9)
# Other Volume Snapshots - taken every 5 minutes, excluding the top of the hour when hana snapshots taken
5,10,15,20,25,30,35,40,45,50,55 * * * * (. /home/azacsnap/.profile ; cd /home/azacsnap/bin ; azacsnap -c backup --volume other --prefix logs_TEST --retention=9)
# Other Volume Snapshots - using an alternate config file to snapshot the boot volume daily.
@daily (. /home/azacsnap/.profile ; cd /home/azacsnap/bin ; azacsnap -c backup --volume other --prefix DailyBootVol --retention=7 --configfile boot-vol.json)

Erläuterung der obigen crontab.

  • MAILTO="": Durch Angabe eines leeren Werts wird verhindert, dass cron automatisch versucht, eine E-Mail an den lokalen Linux-Benutzer zu senden, wenn der crontab-Eintrag ausgeführt wird.
  • Abgekürzte Versionen zur zeitlichen Steuerung von crontab-Einträgen sind selbsterklärend:
    • @monthly = Einmal im Monat ausführen,d. h. „0 0 1 * *“.
    • @weekly = Einmal in der Woche ausführen, d. h. „0 0 * * 0“
    • @daily = Einmal am Tag ausführen, d. h. „0 0 * * *“
    • @hourly = Einmal pro Stunde ausführen, d. h. „0 * * * *“
  • Die ersten fünf Spalten werden verwendet, um Zeiten festzulegen. Weitere Informationen hierzu finden Sie in den folgenden Beispielen zu Spalten:
    • 0,15,30,45: Alle 15 Minuten
    • 0-23: Stündlich
    • *: Täglich
    • *: Monatlich
    • *: Jeden Tag der Woche
  • Die auszuführende Befehlszeile ist in runde Klammern „()“ eingeschlossen.
    • . /home/azacsnap/.profile = Profil von Benutzer*innen mithilfe von Pull Requests übertragen, um ihre Umgebung einzurichten (einschließlich „$PATH“ usw.)
    • cd /home/azacsnap/bin = Ausführungsverzeichnis in den Speicherort „/home/azacsnap/bin“ ändern, in dem sich die Konfigurationsdateien befinden
    • azacsnap -c ..... = Der vollständige azacsnap-Befehl, der ausgeführt werden soll, einschließlich aller Optionen.

Weitere Informationen zu cron und dem Format der crontab-Datei finden Sie unter cron.

Hinweis

Benutzer sind verantwortlich für die Überwachung der cron-Aufträge, um sicherzustellen, dass Momentaufnahmen erfolgreich generiert werden.

Verwalten von AzAcSnap-Protokolldateien

AzAcSnap schreibt die Ausgabe seines Vorgangs in Protokolldateien, um das Debuggen zu unterstützen und den richtigen Vorgang zu überprüfen. Diese Protokolldateien werden immer umfangreicher, sofern sie nicht aktiv verwaltet werden. Glücklicherweise beinhalten UNIX-basierte Systeme ein Tool namens logrotate zum Verwalten und Archivieren von Protokolldateien.

Die folgende Ausgabe stellt eine Beispielkonfiguration für logrotate dar. Diese Konfiguration behält maximal 31 Protokolle (etwa einen Monat lang) bei. Wenn die Protokolldateien größer als 10 KB sind, werden sie durch Umbenennung mit einer an den Dateinamen angehängten Zahl rotiert und komprimiert.

# azacsnap logrotate configuration file
compress

~/bin/azacsnap*.log {
    rotate 31
    size 10k
}

Nachdem die Datei logrotate.conf erstellt wurde, sollte der Befehl logrotate regelmäßig ausgeführt werden, um AzAcSnap-Protokolldateien entsprechend zu archivieren. Die Automatisierung des logrotate-Befehls kann mithilfe von cron erfolgen. Die folgende Ausgabe ist eine Zeile des crontab des AzAcSnap-Benutzers. In diesem Beispiel wird logrotate täglich mithilfe der Konfigurationsdatei ~/logrotate.conf ausgeführt.

@daily /usr/sbin/logrotate -s ~/logrotate.state ~/logrotate.conf >> ~/logrotate.log

Hinweis

Im oben gezeigten Beispiel befindet sich die Datei „logrotate.conf“ im Basisverzeichnis (~) des Benutzers.

Nach mehreren Tagen sollten die AzAcSnap-Protokolldateien ähnlich wie im folgenden Verzeichniseintrag aussehen.

ls -ltra ~/bin/logs
-rw-r--r-- 1 azacsnap users 127431 Mar 14 23:56 azacsnap-backup-azacsnap.log.6.gz
-rw-r--r-- 1 azacsnap users 128379 Mar 15 23:56 azacsnap-backup-azacsnap.log.5.gz
-rw-r--r-- 1 azacsnap users 129272 Mar 16 23:56 azacsnap-backup-azacsnap.log.4.gz
-rw-r--r-- 1 azacsnap users 128010 Mar 17 23:56 azacsnap-backup-azacsnap.log.3.gz
-rw-r--r-- 1 azacsnap users 128947 Mar 18 23:56 azacsnap-backup-azacsnap.log.2.gz
-rw-r--r-- 1 azacsnap users 128971 Mar 19 23:56 azacsnap-backup-azacsnap.log.1.gz
-rw-r--r-- 1 azacsnap users 167921 Mar 20 01:21 azacsnap-backup-azacsnap.log

Überwachen der Momentaufnahmen

Die folgenden Bedingungen sollten überwacht werden, um ein fehlerfreies System zu gewährleisten:

  1. Verfügbarer Datenträgerspeicherplatz. Momentaufnahmen verbrauchen entsprechend der Änderungsrate auf Blockebene langsam Festplattenplatz, da ältere Festplattenblöcke in der Momentaufnahme erhalten bleiben.
    1. Verwenden Sie zum Automatisieren der Verwaltung des Speicherplatzes auf dem Datenträger die Optionen --retention und --trim, um die alten Momentaufnahmen und Datenbankprotokolldateien automatisch zu bereinigen.
  2. Erfolgreiche Ausführung der Momentaufnahmetools
    1. Überprüfen Sie die Datei *.result auf den Erfolg oder das Fehlschlagen der letzten Ausführung von azacsnap.
    2. Überprüfen Sie /var/log/messages auf Ausgaben des Befehls azacsnap.
  3. Konsistenz der Momentaufnahmen, indem diese regelmäßig auf einem anderen System wiederhergestellt werden.

Hinweis

Um Momentaufnahmedetails aufzulisten, führen Sie den Befehl azacsnap -c details aus.

Löschen einer Momentaufnahme

Um eine Momentaufnahme zu löschen, verwenden Sie den Befehl azacsnap -c delete. Es ist nicht möglich, Momentaufnahmen auf Betriebssystemebene zu löschen. Sie müssen den richtigen Befehl (azacsnap -c delete) verwenden, um die Speichermomentaufnahmen zu löschen.

Wichtig

Seien Sie besonders vorsichtig, wenn Sie eine Momentaufnahme löschen. Nach dem Löschen ist es UNMÖGLICH, die gelöschten Momentaufnahmen wiederherzustellen.

Wiederherstellen einer Momentaufnahme

Eine Speichervolume-Momentaufnahme kann auf einem neuen Volume wiederhergestellt (-c restore --restore snaptovol) werden. Bei Azure (große Instanzen) kann das Volume wieder in eine Momentaufnahme (-c restore --restore revertvolume) umgewandelt werden.

Hinweis

Es wird KEIN Datenbankwiederherstellungsbefehl bereitgestellt.

Eine Momentaufnahme kann zurück in den SAP HANA-Datenbereich kopiert werden, aber SAP HANA darf nicht ausgeführt werden, wenn eine Kopie erstellt wird (cp /hana/data/H80/mnt00001/.snapshot/hana_hourly.2020-06-17T113043.1586971Z/*).

Für Azure (große Instanzen) können Sie sich an das Microsoft-Betriebsteam wenden, indem Sie eine Serviceanfrage zum Wiederherstellen einer gewünschten Momentaufnahme aus den vorhandenen verfügbaren Momentaufnahmen öffnen. Sie können eine Serviceanfrage im Azure-Portal öffnen.

Wenn Sie ein Notfallwiederherstellungs-Failover durchführen möchten, stellt der Befehl azacsnap -c restore --restore revertvolume am Standort der Notfallwiederherstellung automatisch die neuesten Volumemomentaufnahmen(/hana/data und /hana/logbackups) zur Verfügung, um eine SAP HANA-Wiederherstellung zu ermöglichen. Verwenden Sie diesen Befehl mit Vorsicht, da er die Replikation zwischen Produktions- und Notfallwiederherstellungsstandorten unterbricht.

Einrichten von Momentaufnahmen nur für Startvolumes

Wichtig

Dieser Vorgang gilt nur für Azure (große Instanzen).

In einigen Fällen verfügen Kunden bereits über Tools zum Schutz von SAP HANA und möchten nur Startvolume-Momentaufnahmen konfigurieren. In diesem Fall müssen Sie nur die folgenden Schritte durchführen.

  1. Führen Sie die Schritte 1–4 der erforderlichen Komponenten für die Installation aus.

  2. Aktivieren der Kommunikation mit dem Speicher

  3. Herunterladen und Ausführen des Installationsprogramms, um die Momentaufnahmetools zu installieren.

  4. Abschließen der Einrichtung der Momentaufnahmetools.

  5. Abrufen der Liste der Volumes, die der Konfigurationsdatei „azacsnap“ hinzugefügt werden sollen. In diesem Beispiel lautet der Speicherbenutzername cl25h50backup und die Speicher-IP-Adresse 10.1.1.10.

    ssh cl25h50backup@10.1.1.10 "volume show -volume *boot*"
    
    Last login time: 7/20/2021 23:54:03
    Vserver   Volume       Aggregate    State      Type       Size  Available Used%
    --------- ------------ ------------ ---------- ---- ---------- ---------- -----
    ams07-a700s-saphan-1-01v250-client25-nprod t250_sles_boot_sollabams07v51_vol aggr_n01_ssd online RW 150GB 57.24GB  61%
    ams07-a700s-saphan-1-01v250-client25-nprod t250_sles_boot_sollabams07v52_vol aggr_n01_ssd online RW 150GB 81.06GB  45%
    ams07-a700s-saphan-1-01v250-client25-nprod t250_sles_boot_sollabams07v53_vol aggr_n01_ssd online RW 150GB 79.56GB  46%
    3 entries were displayed.
    

    Hinweis

    In diesem Beispiel ist dieser Host Teil eines horizontalen Skalierungssystems mit 3 Knoten, wobei alle drei Startvolumes von diesem Host aus zu sehen sind. Dies bedeutet, dass von diesem Host aus Momentaufnahmen aller drei Startvolumes erstellt werden können, und alle drei sollten im nächsten Schritt der Konfigurationsdatei hinzugefügt werden.

  6. Erstellen einer neuen Konfigurationsdatei wie folgt. Die Details zum Startvolume müssen sich im Abschnitt „OtherVolume“ befinden:

    azacsnap -c configure --configuration new --configfile BootVolume.json
    
    Building new config file
    Add comment to config file (blank entry to exit adding comments): Boot only config file.
    Add comment to config file (blank entry to exit adding comments):
    Add database to config? (y/n) [n]: y
    HANA SID (for example, H80): X
    HANA Instance Number (for example, 00): X
    HANA HDB User Store Key (for example, `hdbuserstore List`): X
    HANA Server's Address (hostname or IP address): X
    Add ANF Storage to database section? (y/n) [n]:
    Add HLI Storage to database section? (y/n) [n]: y
    Add DATA Volume to HLI Storage section of Database section? (y/n) [n]:
    Add OTHER Volume to HLI Storage section of Database section? (y/n) [n]: y
    Storage User Name (for example, clbackup25): cl25h50backup
    Storage IP Address (for example, 192.168.1.30): 10.1.1.10
    Storage Volume Name (for example, hana_data_soldub41_t250_vol): t250_sles_boot_sollabams07v51_vol
    Add OTHER Volume to HLI Storage section of Database section? (y/n) [n]: y
    Storage User Name (for example, clbackup25): cl25h50backup
    Storage IP Address (for example, 192.168.1.30): 10.1.1.10
    Storage Volume Name (for example, hana_data_soldub41_t250_vol): t250_sles_boot_sollabams07v52_vol
    Add OTHER Volume to HLI Storage section of Database section? (y/n) [n]: y
    Storage User Name (for example, clbackup25): cl25h50backup
    Storage IP Address (for example, 192.168.1.30): 10.1.1.10
    Storage Volume Name (for example, hana_data_soldub41_t250_vol): t250_sles_boot_sollabams07v53_vol
    Add OTHER Volume to HLI Storage section of Database section? (y/n) [n]:
    Add HLI Storage to database section? (y/n) [n]:
    Add database to config? (y/n) [n]:
    
    Editing configuration complete, writing output to 'BootVolume.json'.
    
  7. Überprüfen Sie die Konfigurationsdatei, wobei Sie sich hierbei auf das folgende Beispiel beziehen:

    Verwenden Sie den Befehl cat, um den Inhalt der Konfigurationsdatei anzuzeigen:

    cat BootVolume.json
    
    {
      "version": "5.0",
      "logPath": "./logs",
      "securityPath": "./security",
      "comments": [
        "Boot only config file."
      ],
      "database": [
        {
          "hana": {
            "serverAddress": "X",
            "sid": "X",
            "instanceNumber": "X",
            "hdbUserStoreName": "X",
            "savePointAbortWaitSeconds": 600,
            "hliStorage": [
              {
                "dataVolume": [],
                "otherVolume": [
                  {
                    "backupName": "cl25h50backup",
                    "ipAddress": "10.1.1.10",
                    "volume": "t250_sles_boot_sollabams07v51_vol"
                  },
                  {
                    "backupName": "cl25h50backup",
                    "ipAddress": "10.1.1.10",
                    "volume": "t250_sles_boot_sollabams07v52_vol"
                  },
                  {
                    "backupName": "cl25h50backup",
                    "ipAddress": "10.1.1.10",
                    "volume": "t250_sles_boot_sollabams07v53_vol"
                  }
                ]
              }
            ],
            "anfStorage": []
          }
        }
      ]
    }
    
  8. Testen einer Startvolumesicherung

    azacsnap -c backup --volume other --prefix TestBootVolume --retention 1 --configfile BootVolume.json
    
  9. Überprüfen Sie, ob sie aufgeführt ist, und fügen Sie die Option --snapshotfilter hinzu, um die Liste der zurückgegebenen Momentaufnahmen einzugrenzen.

    azacsnap -c details --snapshotfilter TestBootVolume --configfile BootVolume.json
    

    Befehlsausgabe:

    List snapshot details called with snapshotFilter 'TestBootVolume'
    #, Volume, Snapshot, Create Time, HANA Backup ID, Snapshot Size
    #1, t250_sles_boot_sollabams07v51_vol, TestBootVolume.2020-07-03T034651.7059085Z, "Fri Jul 03 03:48:24 2020", "otherVolume Backup|azacsnap version: 5.0 (Build: 20210421.6349)", 200KB
    , t250_sles_boot_sollabams07v51_vol, , , Size used by Snapshots, 1.31GB
    #1, t250_sles_boot_sollabams07v52_vol, TestBootVolume.2020-07-03T034651.7059085Z, "Fri Jul 03 03:48:24 2020", "otherVolume Backup|azacsnap version: 5.0 (Build: 20210421.6349)", 200KB
    , t250_sles_boot_sollabams07v52_vol, , , Size used by Snapshots, 1.31GB
    #1, t250_sles_boot_sollabams07v53_vol, TestBootVolume.2020-07-03T034651.7059085Z, "Fri Jul 03 03:48:24 2020", "otherVolume Backup|azacsnap version: 5.0 (Build: 20210421.6349)", 200KB
    , t250_sles_boot_sollabams07v53_vol, , , Size used by Snapshots, 1.31GB
    
  10. Optional Richten Sie automatische Momentaufnahmesicherung mit crontab oder einem geeigneten Zeitplaner ein, der die azacsnap-Sicherungsbefehle ausführen kann.

Hinweis

Das Einrichten der Kommunikation mit SAP HANA ist nicht erforderlich.

Wiederherstellen einer Startmomentaufnahme

Wichtig

Dieser Vorgang gilt nur für Azure (große Instanzen). Der Serverzustand zu dem Zeitpunkt, an dem die Momentaufnahme erstellt wurde, wird wiederhergestellt.

Eine Startmomentaufnahme kann wie folgt wiederhergestellt werden:

  1. Der Kunde muss den Server herunterfahren.
  2. Nachdem der Server heruntergefahren wurde, muss der Kunde eine Serviceanfrage öffnen, die die Computer-ID und die wiederherzustellende Momentaufnahme enthält.

    Kunden können eine Serviceanfrage im Azure-Portal öffnen.

  3. Microsoft stellt die Betriebssystem-LUN mithilfe der angegebenen Computer-ID und der Momentaufnahme wieder her und startet dann den Server.
  4. Der Kunde muss dann überprüfen, ob der Server gestartet wurde und fehlerfrei ist.

Nach der Wiederherstellung müssen keine weiteren Schritte ausgeführt werden.

Wichtiges Faktenwissen über Momentaufnahmen

Hauptattribute von Speichervolume-Momentaufnahmen:

  • Speicherort von Momentaufnahmen: Momentaufnahmen befinden sich in einem virtuellen Verzeichnis (.snapshot) innerhalb des Volumes. Sehen Sie sich das folgende Beispiel für Azure (große Instanzen) an:

    • Datenbank: /hana/data/<SID>/mnt00001/.snapshot
    • Freigegeben: /hana/shared/<SID>/.snapshot
    • Protokolle: /hana/logbackups/<SID>/.snapshot
    • Start: Startmomentaufnahmen für HLI werden auf Betriebssystemebene nicht angezeigt, können jedoch mit azacsnap -c details aufgelistet werden.

    Hinweis

    .snapshot ist ein schreibgeschützter, ausgeblendeter virtueller Ordner, der schreibgeschützten Zugriff auf die Momentaufnahmen gewährt.

  • Max. Momentaufnahme: Die Hardware kann bis zu 250 Momentaufnahmen pro Volume unterstützen. Der snapshot-Befehl behält eine maximale Anzahl von Momentaufnahmen für das Präfix basierend auf dem in der Befehlszeile festgelegten Aufbewahrungssatz bei. Alle weiteren Momentaufnahmen, die über die Aufbewahrungszahl hinausgehen und das gleiche Präfix haben, werden gelöscht.

  • Name der Momentaufnahme: Der Name der Momentaufnahme enthält die vom Kunden bereitgestellte Präfixbezeichnung.

  • Größe der Momentaufnahme: Dies hängt von der Größe/Änderungen auf Datenbankebene ab.

  • Speicherort von Protokolldateien: Die von den Befehlen generierten Protokolldateien werden in Ordner ausgegeben, die in der JSON-Konfigurationsdatei definiert sind. Standardmäßig handelt es sich hierbei um einen Unterordner des Ordners, in dem der Befehl ausgeführt wird (z. B. ./logs).

Nächste Schritte