このガイドでは、Google Cloud の SAP 用エージェントのディスク スナップショット機能を使用して、SAP HANA のバックアップと復元を行う方法について説明します。
この機能の詳細については、SAP HANA のディスク スナップショット ベースのバックアップと復元をご覧ください。
始める前に
- Google Cloud の SAP 用エージェントのインストールを検証します。手順については、Compute Engine VM インスタンスに Google Cloud の SAP 用エージェントをインストールして構成するをご覧ください。
- 次のように、SAP HANA システムが Compute Engine VM インスタンスにデプロイされていることを確認します。
- スケールアウト アーキテクチャにデプロイされていない。詳細については、スケールアウト デプロイでスナップショットを使用するをご覧ください。
- SAP 認定オペレーティング システム(OS)を使用している。詳細については、Google Cloud 上の SAP HANA に対する OS サポートをご覧ください。
/hana/data
ボリュームが、ストライピングされていない SSD ベースの Persistent Disk または Hyperdisk ボリュームに独立してホストされている。このディスクには、他の SAP HANA ボリュームがホストされないようにする必要があります。SAP Note 2039883 - FAQ: SAP HANA database and data snapshots (storage snapshots) に説明されているように、SAP HANA データベースを復元できるようにするため、ストレージ スナップショットにデータベースのログ領域が含まれないようにする必要があります。/hana/data
ボリュームが論理ボリュームにマッピングされている。これにより、エージェントはディスク スナップショット ベースのバックアップまたは復元オペレーション中にマウント ポイントを正しく処理できます。- 基盤となるインフラストラクチャが、Terraform などの Infrastructure as Code(IaC)ツールを使用してデプロイされていない。詳細については、IaC ツールベースのデプロイでスナップショットを使用するをご覧ください。
権限を設定する
Google Cloud の SAP 用エージェントを使用して、SAP HANA システムのディスク スナップショット ベースのバックアップと復元を行うには、次の権限を設定する必要があります。
- ディスク スナップショットを作成するため、次の IAM 権限を有効にします。
- SAP HANA システムが実行されている Google Cloud プロジェクトで
compute.snapshots.create
権限を有効にします。 - Compute Engine VM インスタンスで使用されるサービス アカウントで
compute.disks.createSnapshot
、compute.snapshot.list
、compute.disk.list
の権限を有効にします。
- SAP HANA システムが実行されている Google Cloud プロジェクトで
- ディスク スナップショット ベースのバックアップを作成するには、エージェントで使用される SAP HANA データベースのユーザーに
BACKUP OPERATOR
権限またはBACKUP ADMIN
権限が必要です。詳細については、SAP ドキュメントの Authorizations Needed for Backup and Recovery をご覧ください。 バックアップと復元を実行するには、エージェントのコマンドを実行するオペレーティング システム ユーザーが
root
ユーザーであるか、次のコマンドを実行するためのsudo
アクセス権を持っている必要があります。また、次のように、/etc/sudoers.d
ディレクトリにグループを作成してsudo
アクセス権を付与することもできます。%sapagent_snapshot_sudoers ALL=(ALL:ALL) NOPASSWD:/sbin/lvdisplay, /sbin/vgscan, /sbin/dmsetup, /sbin/lvscan, /usr/sbin/xfs_freeze, /usr/bin/google_cloud_sap_agent
ディスク スナップショット ベースのバックアップを作成する
-
SAP HANA データベースの
/hana/data
ボリュームにディスク スナップショット ベースのバックアップを作成するには、Google Cloud の SAP 用エージェントのhanadiskbackup
コマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \ -project=DESTINATION_PROJECT_ID \ -host=HANA_HOST_ADDRESS \ -port=HANA_PORT_NUMBER \ -sid=SID \ -hana-db-user=HANA_USERNAME \ -password-secret=HANA_USER_PWD_SECRET_NAME \ -hdbuserstore-key=HDB_USERSTORE_KEY \ [-source-disk=SOURCE_DISK_NAME \ -source-disk-zone=SOURCE_DISK_ZONE]
次のように置き換えます。
DESTINATION_PROJECT_ID
: ディスク スナップショットを作成する Google Cloud プロジェクトの IDHANA_HOST_ADDRESS
: SAP HANA データベースをホストする Compute Engine VM インスタンスのホスト名または IP アドレス高可用性(HA)システムでは、プライマリ SAP HANA ノードのローカルホストのホスト名または IP アドレスを指定します。プライマリ ノードを識別するために、クラスタで使用されている仮想 IP(VIP)を使用しないでください。障害復旧(DR)デプロイメントでは、プライマリ SAP HANA インスタンスのローカルホストのホスト名または IP アドレスを指定します。
HANA_PORT_NUMBER
: バックアップと復元のリクエストを受け入れる SAP HANA ポートSID
: SAP HANA システムの SAP システム識別子(SID)HANA_USERNAME
: バックアップの作成に使用する SAP HANA データベースのユーザー名HANA_USER_PWD_SECRET_NAME
: Secret Manager を使用して SAP HANA データベース ユーザーのパスワードを保存する場合は、対応するシークレット名を指定します。HDB_USERSTORE_KEY
: 指定した SAP HANA ユーザーを認証するためにhdbuserstore
キーを作成した場合は、そのキーを指定しますSOURCE_DISK_NAME
:/hana/data
ボリュームをホストする Persistent Disk または Hyperdisk ボリュームの名前SOURCE_DISK_ZONE
:/hana/data
ボリュームをホストするディスクがデプロイされているゾーンの名前
次の表に、
hanadiskbackup
コマンドでサポートされている引数を示します。引数 説明 -port
バックアップと復元のリクエストを受け入れる SAP HANA ポートを指定します。 -sid
SAP HANA システムの SAP システム識別子(SID)を指定します。 -hana-db-user
バックアップの作成に使用する SAP HANA データベースのユーザー名を指定します。
-hdbuserstore-key
を指定する場合は、-hana-db-user
引数の指定をスキップできます。-password
バックアップの作成に使用する SAP HANA データベース ユーザーのパスワードを指定します。
-password-secret
または-hdbuserstore-key
引数を使用している場合は、この引数を指定しないでください。-password
を使用する代わりに、いずれかを使用することをおすすめします。-password-secret
省略可。Secret Manager を使用して SAP HANA データベース ユーザーのパスワードを保存する場合は、対応するシークレット名を指定します。
Secret Manager では、Secret 値(パスワード)は 8 文字以上で、少なくとも英大文字、英小文字、数字をそれぞれ 1 文字以上含めるようにします。
-password
引数を使用している場合は、この引数を指定しないでください。-hdbuserstore-key
SAP HANA システムに安全に接続するには、そのシステム用に作成したセキュア ユーザーストア(
hdbuserstore
)鍵を指定します。認証に
hdbuserstore
鍵を使用するには、次の点に注意してください。- SAP ツール
hdbsql
とhdduserstore
が、エージェントをホストする Compute インスタンスにインストールされている。 hdbuserstore
キーが、特定の 1 つの SAP HANA インスタンスに対応している。複数の SAP HANA インスタンスのホスト名を含む鍵は使用できません。
この構成パラメータは、エージェントのバージョン 3.3 以降でサポートされています。
-hdbuserstore-key
を指定する場合、引数-host
、-port
、-hana-db-user
を省略できます。-host
省略可。SAP HANA システムをホストする Compute Engine VM インスタンスの IP アドレスを指定します。デフォルト値は localhost
です。-project
省略可。ディスク スナップショットを作成する Google Cloud プロジェクトの ID を指定します。デフォルトでは、SAP HANA システムが実行されている Google Cloud プロジェクトにスナップショットが作成されます。 -abandon-prepared
省略可。既存のディスク スナップショットを無視するかどうかを指定します。デフォルト値は false
です。-snapshot-name
省略可。作成するディスク スナップショットの名前を指定します。
デフォルトでは、スナップショットには
snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
という形式の名前が付けられます。-source-disk
/hana/data
ボリュームをホストする Persistent Disk または Hyperdisk ボリュームの名前を指定します。-source-disk-zone
/hana/data
ボリュームをホストしているディスクが存在するゾーンを指定します。-source-disk-key-file
省略可。 /hana/data
ボリュームをホストしているディスクが、RSA でラップした顧客指定の暗号鍵で暗号化されている場合は、その鍵の JSON ファイルの絶対パスを指定します。この引数は、エージェントのバージョン 3.2 以降でサポートされています。
-storage-location
省略可。ディスク スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンを指定します。 -snapshot-description
省略可。ディスク スナップショットの説明を指定します。 -labels
省略可。作成するディスク スナップショットに関連付けるラベル値ペアを 1 つ以上指定します。例: -labels="label1=value1,label2=value2"
。-send-metrics-to-monitoring
省略可。スナップショット作成の実行ステータスを Cloud Monitoring に送信するかどうかを指定します。デフォルト値は TRUE
です。-loglevel
省略可。スナップショット作成オペレーションのロギングレベルを指定します。デフォルトのロギングレベルは info
です。使用可能なログレベルは、debug
、info
、warn
、error
です。-confirm-data-snapshot-after-create
省略可。スナップショットの作成直後に SAP HANA へのスナップショットの作成を確認する必要があるものの、
-storage-location
引数に対して指定された Cloud Storage バケットへのアップロードを確認する必要はない場合は、値TRUE
を指定します。デフォルト値は
FALSE
です。この場合、エージェントはCREATE
オペレーションとUPLOAD
オペレーションの両方が完了した後にスナップショットの作成を確認します。この引数は、エージェントのバージョン 3.4 以降でサポートされています。
ディスク スナップショットを確認する
ディスク スナップショットが作成されたことを確認するには、次のオプションを使用します。
Google Cloud コンソールで Compute Engine の [スナップショット] ページに移動し、ディスク名またはスナップショット名でエントリをフィルタリングします。
また、Google Cloud の SAP 用エージェントの次のログファイルでディスク スナップショットの詳細を確認することもできます。
/var/log/google-cloud-sap-agent/hanadiskbackup.log
SAP HANA バックアップ カタログを確認する
hanadiskbackup
コマンドは、ディスク スナップショットを作成するだけでなく、SAP HANA バックアップ カタログにスナップショットのエントリを作成します。以下は、SAP HANA バックアップ カタログのディスク スナップショット エントリを表示する SQL クエリの例です。
SELECT BACKUP_ID, STATE_NAME, COMMENT FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot'
出力は次のようになります。
BACKUP_ID,STATE_NAME,COMMENT BACKUP_ID,"successful","snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMMSS"
この出力には次の値が含まれます。
BACKUP_ID
: SAP HANA バックアップ カタログのディスク スナップショットに割り当てられたバックアップ IDSOURCE_DISK_NAME
: スナップショットを作成した/hana/data
ボリュームをホストするディスクの名前YYYYMMDD-HHMMMSS
: スナップショットが作成された日時
ディスク スナップショットを使用して復元を行う
Google Cloud の SAP 用エージェントを使用してディスク スナップショット ベースの復元を行うには、次のシナリオの手順をご覧ください。
- スケールアップ システムのデータベースを復元する
- スケールアップ HA システムのデータベースを復元する
- スケールアップ DR デプロイ用にデータベースを復元する
- システムのコピーまたはシステムの更新を行う
スケールアップ システムのデータベースを復元する
Google Cloud にデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。
エージェントの
hanadiskrestore
コマンドを実行して、/hana/data
ボリュームをホストしているディスクを復元します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
: 新しいディスクの作成に使用するディスク スナップショットの名前SOURCE_DISK_NAME
:/hana/data
ボリュームをホストしているソースディスクの名前SOURCE_DISK_ZONE
: ソースディスクがデプロイされているゾーンの名前
hanadiskrestore
コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。必要なオプションを使用して SAP HANA データベースを復元します。
スナップショット時刻に復元する
ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。
SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
TENANT_SID
は、テナント データベースの SID に置き換えます。
特定の時点に復元する
SAP HANA データベースを特定の時点に復元する手順は次のとおりです。
- Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に
/hana/log
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。 SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
TENANT_SID
は、テナント データベースの SID に置き換えます。
ディスクの復元でサポートされている引数
次の表に、エージェントの hanadiskrestore
コマンドでサポートされる引数を示します。
引数 | 説明 |
---|---|
-sid |
SAP HANA システムの SAP システム識別子(SID)を指定します。 |
-data-disk-name |
省略可。/hana/data ボリュームをホストするソースディスクの名前を指定します。
|
-data-disk-zone |
省略可。/hana/data ボリュームをホストするソースディスクがデプロイされているゾーンを指定します。
|
-source-snapshot |
SAP HANA データ ボリュームをホストしているディスクの復元に使用するディスク スナップショットの名前を指定します。 |
-new-disk-name |
新しいディスクに設定する名前を指定します。 |
-project |
省略可。ソースディスクのスナップショットが存在する Google Cloud プロジェクトの ID を指定します。デフォルトでは、SAP HANA システムが実行されている Google Cloud プロジェクトにスナップショットが作成されます。 |
-csek-key-file |
省略可。hanadiskbackup コマンドで -source-disk-key-file 引数を使用してソースディスク スナップショットを暗号化した場合は、ソースディスク スナップショットに対応する RSA でラップした顧客指定の暗号鍵の JSON ファイルの絶対パスを指定します。鍵ファイルの例を次に示します。
[ { "uri": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ] この引数は、エージェントのバージョン 3.2 以降でサポートされています。 |
-new-disk-type |
省略可。作成する Persistent Disk または Hyperdisk のタイプを指定します。デフォルトでは、新しいディスクはソースディスクと同じタイプになります。 SAP HANA での使用が SAP によって認定されている SSD ベースのディスクタイプを指定してください。詳細については、サポートされているディスクタイプをご覧ください。 |
-hana-sidadm |
省略可。SIDadm (SAP HANA システムのオペレーティング システム ユーザー)を指定します。 |
-force-stop-hana |
省略可。復元オペレーションを開始する前に SAP HANA を強制的に停止する場合は、この引数を指定し、値を true に設定します。デフォルト値は false です。 |
-provisioned-iops |
省略可。Hyperdisk ボリュームを作成する場合は、処理する IOPS(1 秒あたりの入出力オペレーション)を指定します。 |
-provisioned-throughput |
省略可。Hyperdisk ボリュームを作成する場合は、サポートするスループットを指定します。 |
-labels-on-detached-disk |
省略可。復元された この引数は、エージェントのバージョン 3.4 以降でサポートされています。 |
-send-metrics-to-monitoring |
省略可。スナップショットの復元の所要時間を Cloud Monitoring に送信するかどうかを指定します。デフォルト値は この引数は、エージェントのバージョン 3.4 以降でサポートされています。 |
-disk-size-gb |
省略可。新しいディスクのサイズを GB で指定します。デフォルトでは、新しいディスクは既存のディスクと同じサイズになります。 新しいディスクのサイズは、既存のディスクよりも小さくしないでください。 |
-loglevel |
省略可。hanadiskrestore コマンドで実行するすべてのアクションのロギングレベルを指定します。デフォルトのロギングレベルは info です。使用可能なログレベルは、debug 、info 、warn 、error です。 |
スケールアップ HA システムのデータベースを復元する
Google Cloud の高可用性(HA)クラスタにデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。
プライマリ SAP HANA ノードに、
/hana/data
ボリュームをホストしているディスクのスナップショットがあることを確認します。root ユーザーとして、HA クラスタをメンテナンス モードに切り替えます。Pacemaker を使用している場合は、次のコマンドを実行します。
RHEL
pcs property set maintenance-mode=true
SLES
crm configure property maintenance-mode=true
HA クラスタのプライマリ ノードとスタンバイ ノードの両方で次のコマンドを実行して、SAP HANA データベース インスタンスを停止します。
HDB stop
SAP HANA HA システムのプライマリ ノードに切り替えます。
エージェントの
hanadiskrestore
コマンドを実行して、/hana/data
ボリュームをホストしているディスクを復元します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
: 新しいディスクの作成に使用するディスク スナップショットの名前SOURCE_DISK_NAME
:/hana/data
ボリュームをホストしているソースディスクの名前SOURCE_DISK_ZONE
: ソースディスクがデプロイされているゾーンの名前
hanadiskrestore
コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。SAP HANA HA システムのセカンダリ ノードの登録を解除します。
hdbnsutil -sr_unregister
SAP HANA HA システムのプライマリ ノードで、SAP HANA システムのレプリケーションを無効にします。
hdbnsutil -sr_disable
プライマリ ノードで、必要なオプションを使用して SAP HANA データベースを復元します。
スナップショット時刻に復元する
ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。
SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
TENANT_SID
は、テナント データベースの SID に置き換えます。
特定の時点に復元する
SAP HANA データベースを特定の時点に復元する手順は次のとおりです。
- Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に
/hana/log
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。 SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
TENANT_SID
は、テナント データベースの SID に置き換えます。
プライマリ ノードで、SAP HANA システム レプリケーションを有効にします。
hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
スタンバイ ノードをプライマリ ノードに再登録します。
hdbnsutil -sr_register --name=SECONDARY_SITE_NAME --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INSTANCE_NUMBER --replicationMode=sync --operationMode=logreplay
スタンバイ ノードのデータベースがプライマリ ノード内のデータベースと完全に同期していることを確認します。
root ユーザーとして、HA クラスタのメンテナンス モードを終了します。Pacemaker を使用している場合は、次のコマンドを実行します。
RHEL
pcs property set maintenance-mode=false
SLES
crm configure property maintenance-mode=false
スケールアップ DR デプロイ用にデータベースを復元する
Google Cloud に障害復旧ソリューションを使用してデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。
DR デプロイのプライマリ インスタンスとスタンバイ インスタンスの両方で次のコマンドを実行して、SAP HANA データベースを停止します。
HDB stop
SAP HANA DR デプロイメントのプライマリ インスタンスに切り替えます。
エージェントの
hanadiskrestore
コマンドを実行して、/hana/data
ボリュームをホストしているディスクを復元します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ -data-disk-name=SOURCE_DISK_NAME \ -data-disk-zone=SOURCE_DISK_ZONE \ -new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
: 新しいディスクの作成に使用するディスク スナップショットの名前SOURCE_DISK_NAME
:/hana/data
ボリュームをホストしているソースディスクの名前SOURCE_DISK_ZONE
: ソースディスクがデプロイされているゾーンの名前
hanadiskrestore
コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。プライマリ インスタンスで、SAP HANA システム レプリケーションを無効にします。
hdbnsutil -sr_disable
プライマリ インスタンスで、必要なオプションを使用して SAP HANA データベースを復元します。
スナップショット時刻に復元する
ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。
SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG
TENANT_SID
は、テナント データベースの SID に置き換えます。
特定の時点に復元する
SAP HANA データベースを特定の時点に復元する手順は次のとおりです。
- Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に
/hana/log
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。 SIDadm
ユーザーに切り替えます。su - SID_LCadm
SID_LC
は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。- 次のコマンドを実行して、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
- システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
- テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT
TENANT_SID
は、テナント データベースの SID に置き換えます。
プライマリ インスタンスで、SAP HANA システム レプリケーションを有効にします。
hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
スタンバイ インスタンスをプライマリ インスタンスに登録します。
hdbnsutil -sr_register --name=SECONDARY_SITE_NAME --remoteHost=PRIMARY_HOST_NAME --remoteInstance=INSTANCE_NUMBER --replicationMode=sync --operationMode=logreplay
スタンバイ インスタンスのデータベースが、プライマリ インスタンスのデータベースと完全に同期していることを確認します。
システムのコピーまたはシステムの更新を行う
SAP HANA システムのディスク スナップショット ベースのバックアップを使用して別の SAP HANA システムで復元を行うには、次の手順を完了します。
- ソースシステムでエージェントの
hanadiskbackup
コマンドを実行して、スナップショット ベースのバックアップを作成します。手順については、ディスク スナップショット ベースのバックアップを作成するをご覧ください。 ソースシステムとターゲット システムの SID が異なる場合は、ターゲット システムと一致するようにソースシステムの
/hana/data/SID
ディレクトリの名前を変更します。mv /hana/data/SOURCE_SID /hana/data/TARGET_SID
次のように置き換えます。
SOURCE_SID
: ソース SAP HANA システムの SIDTARGET_SID
: ターゲット SAP HANA システムの SID
ターゲット システムでエージェントの
hanadiskrestore
コマンドを実行して、/hana/data
ボリュームをホストしているディスクを復元します。ターゲット システムで、システム データベースを復元します。
HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SOURCE 'SYSTEMDB@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT"
テナント データベースにソースシステムの SID を設定する場合、SAP HANA ドキュメントの Rename a Tenant Database の手順に沿って名前を変更できます。
ターゲット システムで、システム データベースに接続します。たとえば、次のコマンドを実行します。
hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER
次のように置き換えます。
SYSTEM_DB_PASSWORD
: システム データベースのパスワードINSTANCE_NUMBER
: SAP HANA インスタンス番号
ターゲット システムで、テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
RECOVER DATABASE FOR TARGET_SID UNTIL TIMESTAMP '2023-12-08 23:59:00' CLEAR LOG USING SOURCE 'TARGET_SID@SOURCE_SID' USING CATALOG BACKINT USING SNAPSHOT
スナップショットの整合性を検証する
このセクションでは、SAP の hdbpersdiag
ツールを使用してディスク スナップショット内のデータの整合性を検証する方法について説明します。ディスク スナップショット ベースのバックアップと復元について Google Cloud が推奨するその他のベスト プラクティスについては、ベスト プラクティスをご覧ください。
スナップショットの整合性を検証するには、次の手順を完了します。
エージェントの
hanadiskbackup
コマンドを使用して、作成したスナップショットからディスクを作成します。gcloud compute disks create
コマンドを実行します。gcloud compute disks create DISK_NAME \ --size=SIZE \ --source-snapshot=SNAPSHOT_NAME \ --type=DISK_TYPE \ --zone=ZONE
次のように置き換えます。
DISK_NAME
: 一時ディスクの名前SIZE
: 一時ディスクのサイズSNAPSHOT_NAME
: ソース スナップショットの名前DISK_TYPE
: 一時ディスクのディスクタイプZONE
: 一時ディスクをデプロイする Compute Engine ゾーン
ディスクを SAP HANA ホスト以外の VM にアタッチします。
gcloud compute instances attach-disk
コマンドを実行します。gcloud compute instances attach-disk VM_INSTANCE_NAME \ --disk=DISK_NAME \ --zone=ZONE
次のように置き換えます。
VM_INSTANCE_NAME
: 作成したディスクをデプロイする VM の名前DISK_NAME
: 作成したディスクの名前ZONE
: VM がデプロイされている Compute Engine ゾーン
任意の SSH メソッドを使用して VM に接続します。
新しいディスクを一時ファイル システムとしてマウントします。
OS レベルで、アクティブな論理ボリュームがないボリューム グループを見つけます。
vgdisplay
出力は次のようになります。
--- Volume group --- VG Name vg_hana_data System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 250.00 GiB PE Size 4.00 MiB Total PE 63999 Alloc PE / Size 63999 / 250.00 GiB Free PE / Size 0 / 0 VG UUID Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR
VG UUID を使用して、ボリューム グループの名前を変更します。上記の例では
Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR
です。vgrename Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR vg_hana_data_temp
ボリューム グループと論理ボリュームを有効にします。
vgchange -a y vg_hana_data_temp lvchange -a y /dev/vg_hana_data_temp/data
論理ボリュームを一時ファイル システムにマウントします(例:
/hana/data_temp
)。mkdir /hana/data_temp mount /dev/vg_hana_data_temp/data /hana/data_temp
すべてのディスクが正しくマウントされていることを確認します。
lsblk
出力は次のようになります。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 20M 0 part /boot/efi └─sda3 8:3 0 30G 0 part / sdb 8:16 0 350G 0 disk └─vg_hana_data_temp-data 254:5 0 250G 0 lvm /hana/data_temp sdc 8:32 0 104G 0 disk └─vg_hana_log-log 254:2 0 104G 0 lvm /hana/log sdd 8:48 0 208G 0 disk └─vg_hana_shared-shared 254:0 0 208G 0 lvm /hana/shared sde 8:64 0 32G 0 disk └─vg_hana_usrsap-usrsap 254:3 0 32G 0 lvm /usr/sap sdf 8:80 0 416G 0 disk └─vg_hanabackup-backup 254:4 0 416G 0 lvm /hanabackup sdh 8:112 0 250G 0 disk └─vg_hana_data-data 254:1 0 250G 0 lvm /hana/data
SIDadm
ユーザーとして、一時ファイル システムに含まれるデータ ボリュームに対してhdbpersdiag
ツールを実行します。for directory in $(find /hana/data_temp/SID/mnt00001/hdb* -type d); do hdbpersdiag -c -e 'check all' $directory; done
hdbpersdiag
ツールの出力を確認します。今後、この整合性チェックを実行する場合は、新しいボリューム グループを残しておきます。実行しない場合は削除します。
ディスクを VM から切断します。
gcloud compute instances detach-disk
コマンドを実行します。VM_INSTANCE_NAME \ --disk=DISK_NAME \ --zone=ZONE
ディスクを削除します。
gcloud compute disks delete
コマンドを実行します。gcloud compute disks delete DISK_NAME \ --zone=ZONE
トラブルシューティング
Google Cloud の SAP 用エージェントは、ディスク スナップショット ベースの SAP HANA のバックアップおよび復元中に発生する可能性のある問題に対処するように設計されていますが、手動による操作が必要になるシナリオもいくつかあります。
Google Cloud の SAP 用エージェントのディスク スナップショット機能に関する問題のトラブルシューティングについては、ディスク スナップショット ベースのバックアップまたは復元に関する問題をご覧ください。
サポートを利用する
Google Cloud の SAP 用エージェントの問題解決にサポートが必要な場合は、必要な診断情報を収集し、Cloud カスタマーケアまでお問い合わせください。詳細については、Google Cloud の SAP 用エージェントの診断情報をご覧ください。