SAP HANA Restore auf ein anderes System aus einem Google Cloud Storage Bucket

SAP HANA Restore auf ein anderes System aus einem Google Cloud Storage Bucket

Wie mein Backup in einen Cloud Storage Bucket macht ist von Google gut beschrieben und zum Beispiel von mir im SDN dokumentiert. Aber wie bekomme Ich im Fall eines Systemausfalls die Sicherung aus einem Cloud Storage Bucket auf eine neue HANA? Oder Ich will eine Systemkopie von A nach B machen und auch die Tenant SID ändern? Die Dokumentation im SAP HANA Operations Guide geht nur von einem Filesystem Backup aus, dass manuell in einen Cloud Storage Bucket hochgeladen wurde. Genauso geht das Restore Beispiel von einem solchen Backup aus. Wer sich aber die Backups auf Dateisystem und im Storage Bucket einmal anschaut sieht dass die Struktur anders ist. Während auf dem Dateisystem die Backups als Datei beispielsweise mit der Struktur [Datum]_[Zeit]_databackup_X_Y vorliegen, sind diese Backups auf einem Cloud Storage Bucket ein Ordner und darin existiert eine Datei mit der Endung .bak.

Ein Teil eines Backups in einem Cloud Storage Bucket

Die Ausgangslage

Wir haben ein GCP Projekt „ERP Produktion“ und betreiben dort den Applikationsserver sapX20 mit der SID X20 und die HANA X20 läuft auf dem Server hanaX20. Die Datensicherung erfolgt in den Bucket backupX20, der ebenfalls im Projekt liegt.

Restore auf ein neues Systems

So, HANA X20 kaputt und Ich muss zurück gehen oder Ich möchte eine schnelle Systemkopie vom Produktiv in ein Sandboxsystem X00 machen um meinen S/4 Prototyp zu erstellen. Aber wie komme Ich denn da hin ohne groß basteln zu müssen?

Zuerst benötigen wir natürlich ein HANA System mit der gleichen Datenbankversion wie das Quellsystem und wir brauchen den existierenden oder einen neuen Backup Bucket (im Falle einer Systemkopie). Natürlich müssen wir auch den backint Controller wieder installieren und den entsprechenden Bucket anbinden. Wenn SID und Tenantname beibehalten werden, dann habt Ihr weniger Probleme.

Wenn Ihr natürlich die Backupverschlüsselung aktiv habt, müsst Ihr zuerst einmal den Root Key in den HANA Tenant importieren. Wie das funktioniert findet Ihr in meinem anderen Blogeintrag zum Thema HANA Backup Encryption. Kleiner Tipp: Der Standardtenant in einer SAP HANA Datenbank hat immer die ID 3. Ansonsten findet Ihr die entsprechende Information per SQL:

SELECT DATABASE_NAME, 
	CASE WHEN (DBID = '' AND 
	DATABASE_NAME = '[TENANTNAME]') 
	THEN 1
	WHEN (DBID = '' AND 
	DATABASE_NAME <> '[TENANTNAME]') 
	THEN 3
	ELSE TO_INT(DBID)
	END DATABASE_ID 
FROM (SELECT DISTINCT DATABASE_NAME, SUBSTR_AFTER (SUBPATH,'.') AS DBID FROM SYS_DATABASES.M_VOLUMES);

Anschließend könnt Ihr im Falle der gleichen System und Tenant ID nun direkt den Restore starten.

Und bei einer Systemkopie?

Wenn Ich nun die HANA ID ändern will, ist die HANA etwas störrisch. Wenn Ich nun meine produktive Datenbank X20 in die Datenbank X00 restoren möchte binde Ich natürlich den Storage Bucket der produktiven HANA an meine Sandbox an. Zumindest war das mein erster Gedanke. Leider ist das HANA Studio und auch das HANA Cockpit nicht optimal an der Stelle. Egal ob Ich ein Tenant Restore oder einen Tenant Restore mit Systemkopie anstarte, er möchte immer auf /usr/sap/X00/SYS/global/hdb/backint/DB_X00 zugreifen. Das produktive Backup liegt natürlich in den entsprechenden X20 Ordnern. Wir können nun entweder im produktiven Bucket einen Ordner für die X00 erstellen oder wir legen einen Bucket im Sandboxprojekt an und kopieren die Daten hin und her. Ich habe mich im Endeffekt für letzteres entschieden und den bestehen Cloud Storage Bucket des Sandbox Projektes genutzt. Das kopieren geht dank gsutil ganz einfach, Ihr benötigt nur das Backup Prefix eures letzten Full-Backups und schon kommt Ihr von A nach B.

gsutil -m cp -r gs://prd-backup/X20/usr/sap/X20/SYS/global/hdb/backint/DB_X20/2020_11_28_00_00_00_databackup_* gs://snd-backup/X00/usr/sap/X00/SYS/global/hdb/backint/DB_X00/

Sobald das ganze im neuen Bucket ist, ist der Rest straight forward. Entweder über das HANA Studio oder das HANA Cockpit eine Recovery aus dem Cloud Storage Bucket (Option: backint) anstarten. Und schon habt Ihr eure X20 in die X00 kopiert.

Vergesst aber bitte anschließend nicht, wenn es sich wirklich um eine Systemkopie handelt die Passwörter für SYSTEM, SAPABAP1, DBACOCKPIT, HANACOCKPIT oder Notfall User anzupassen. Ansonsten habt Ihr in der Sandbox die gleichen Passwörter wie in der Produktion. Im Hinblick auf Datensicherheit wäre eine solche Konstellation zumindest unschön.