このガイドでは、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
ボリュームが、1 つ以上の SSD ベースの Persistent Disk ボリュームまたは Hyperdisk ボリュームに独立してホストされている。これらのディスクには、他の SAP HANA ボリュームがホストされないようにする必要があります。SAP Note 2039883 - FAQ: SAP HANA database and data snapshots (storage snapshots) に説明されているように、SAP HANA データベースを復元できるようにするため、ストレージ スナップショットにデータベースのログ領域が含まれないようにする必要があります。
複数のディスクを使用して
/hana/data
ボリュームをホストしている場合、エージェントのディスク スナップショット機能は、基盤となるディスクが Hyperdisk ボリュームの場合にのみ使用できます。/hana/data
ボリュームが論理ボリュームにマッピングされている。これにより、エージェントはディスク スナップショット ベースのバックアップまたは復元オペレーション中にマウント ポイントを正しく処理できます。- 基盤となるインフラストラクチャが、Terraform などの Infrastructure as Code(IaC)ツールを使用してデプロイされていない。詳細については、IaC ツールベースのデプロイでスナップショットを使用するをご覧ください。
権限の設定
Google Cloud の SAP 用エージェントのディスク スナップショット機能を使用して SAP HANA データベースのバックアップと復元を行うには、次の権限を設定する必要があります。
- ディスク スナップショットを作成するには、次の IAM ロールまたは権限を付与します。
/hana/data
ボリュームが 1 つの Persistent Disk ボリュームまたは Hyperdisk ボリュームにホストされている場合は、次の権限を付与します。- SAP HANA システムが実行されている Google Cloud プロジェクトで
compute.snapshots.create
権限を有効にします。 - Compute Engine VM インスタンスで使用されるサービス アカウントで
compute.disks.createSnapshot
、compute.snapshot.list
、compute.disk.list
の権限を有効にします。
- SAP HANA システムが実行されている Google Cloud プロジェクトで
/hana/data
ボリュームが複数のディスクにホストされている場合は、次の権限を付与します。compute.disks.addResourcePolicies
compute.disks.removeResourcePolicies
compute.disks.get
compute.disks.create
compute.disks.use
compute.disks.list
compute.disks.useReadOnly
compute.globalOperations.get
compute.instances.get
compute.instances.attachDisk
compute.instances.detachDisk
compute.instantSnapshotGroups.create
compute.instantSnapshotGroups.delete
compute.instantSnapshotGroups.get
compute.instantSnapshotGroups.list
compute.instantSnapshots.list
compute.instantSnapshots.useReadOnly
compute.resourcePolicies.create
compute.resourcePolicies.use
compute.resourcePolicies.useReadOnly
compute.snapshots.create
compute.snapshots.get
compute.snapshots.list
compute.snapshots.setLabels
compute.snapshots.useReadOnly
compute.zoneOperations.get
monitoring.timeSeries.create
- ディスク スナップショット ベースのバックアップを作成するには、エージェントで使用される SAP HANA データベースのユーザーに
BACKUP OPERATOR
権限またはBACKUP ADMIN
権限が必要です。詳細については、SAP ドキュメントの Authorizations Needed for Backup and Recovery をご覧ください。 SAP HANA データベースのバックアップと復元を行うには、エージェントのコマンドを実行するオペレーティング システム ユーザーが
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
ディスク整合性グループを作成
/hana/data
ボリュームが 1 つのディスクでホストされている場合は、このセクションをスキップしてください。
/hana/data
ボリュームが複数のディスクにホストされている場合は、整合性グループを作成し、/hana/data
ボリュームをホストするディスクをその整合性グループに追加する必要があります。整合性グループは、ディスクと同じリージョンに作成する必要があります。
作成方法については、整合性グループを作成するをご覧ください。
整合性グループ名をメモしておきます。これは、スナップショット ベースのバックアップの作成中にエージェントによって使用されます。
ディスク スナップショット ベースのバックアップを作成する
-
SAP HANA データベースの
/hana/data
ボリュームにディスク スナップショット ベースのバックアップを作成するには、Google Cloud の SAP 用エージェントのhanadiskbackup
コマンドを実行します。注: バージョン 3.3 以降、引数
-source-disk
と-source-disk-zone
は、hanadiskbackup
コマンドと併用する場合は省略可能です。これは、エージェントが/hana/data
ディレクトリをホストするディスクを自動検出できるためです。ただし、これらの引数を指定すると、エージェントの自動検出がオーバーライドされます。- SAP HANA 認証に
hdbuserstore
キーを使用する場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskbackup \ -project=DESTINATION_PROJECT_ID \ -sid=SID \ -hdbuserstore-key=HDB_USERSTORE_KEY
- SAP HANA 認証にユーザー名と Secret Manager シークレットを使用する場合は、次のコマンドを実行します。
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
- SAP HANA 認証にユーザー名とパスワードを使用する場合は、次のコマンドを実行します。
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=HANA_PASSWORD
次のように置き換えます。
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 データベースのユーザー名HDB_USERSTORE_KEY
: 指定した SAP HANA ユーザーを認証するためにhdbuserstore
キーを作成した場合は、そのキーを指定しますHANA_USER_PWD_SECRET_NAME
: Secret Manager を使用して SAP HANA データベース ユーザーのパスワードを保存する場合は、対応するシークレット名を指定します。HANA_PASSWORD
: SAP HANA 認証に書式なしテキスト パスワードを使用している場合は、そのパスワードを指定します。
次の表に、
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
を使用する代わりに、いずれかを使用することをおすすめします。SAP HANA 認証の場合、エージェントは次の優先順位を使用します。指定されている場合、
-hdbuserstore-key
引数は-password
引数よりも優先され、これは-password-secret
引数よりも優先されます。hanadiskbackup
コマンドを実行するときに、指定する認証オプションは 1 つだけにすることをおすすめします。-password-secret
省略可。Secret Manager を使用して SAP HANA データベース ユーザーのパスワードを保存する場合は、対応するシークレット名を指定します。
Secret Manager では、Secret 値(パスワード)は 8 文字以上で、少なくとも英大文字、英小文字、数字をそれぞれ 1 文字以上含めるようにします。
SAP HANA 認証の場合、エージェントは次の優先順位を使用します。指定されている場合、
-hdbuserstore-key
引数は-password
引数よりも優先され、これは-password-secret
引数よりも優先されます。hanadiskbackup
コマンドを実行するときに、指定する認証オプションは 1 つだけにすることをおすすめします。-hdbuserstore-key
SAP HANA システムに安全に接続するには、そのシステム用に作成したセキュア ユーザーストア(
hdbuserstore
)鍵を指定します。認証に
hdbuserstore
鍵を使用するには、次の点に注意してください。- SAP ツール
hdbsql
とhdbuserstore
が、エージェントをホストする Compute インスタンスにインストールされている。 hdbuserstore
キーが、特定の 1 つの SAP HANA インスタンスに対応している。複数の SAP HANA インスタンスのホスト名を含む鍵は使用できません。SIDadm
ユーザーは、このキーを使用して SAP HANA データベースにクエリを実行できます。ここで、SID
はsid
パラメータに指定した値を参照します。これを検証するには、SIDadm
ユーザーとして次のコマンドを実行します。hdbsql -U HDB_USERSTORE_KEY "SELECT * FROM DUMMY"
この構成パラメータは、エージェントのバージョン 3.3 以降でサポートされています。
-hdbuserstore-key
を指定する場合、引数-host
、-port
、-hana-db-user
を省略できます。SAP HANA 認証の場合、エージェントは次の優先順位を使用します。指定されている場合、
-hdbuserstore-key
引数は-password
引数よりも優先され、これは-password-secret
引数よりも優先されます。hanadiskbackup
コマンドを実行するときに、指定する認証オプションは 1 つだけにすることをおすすめします。-host
省略可。SAP HANA システムをホストする Compute Engine VM インスタンスの IP アドレスを指定します。デフォルト値は localhost
です。-project
省略可。SAP HANA インスタンスが実行されている Google Cloud プロジェクトの ID を指定します。 -abandon-prepared
省略可。既存のスナップショット ベースのバックアップを無視するかどうかを指定します。デフォルト値は false
です。-snapshot-name
省略可。作成するディスク スナップショットの名前を指定します。この引数は、
/hana/data
ボリュームが 1 つのディスクでホストされている場合にのみ適用されます。デフォルトでは、スナップショットには
snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
という形式の名前が付けられます。-snapshot-description
省略可。ディスク スナップショットの説明を指定します。この引数は、 /hana/data
ボリュームが 1 つのディスクでホストされている場合にのみ適用されます。-snapshot-type
省略可。
/hana/data
ボリュームをホストするディスクに作成するスナップショットのタイプを指定します。この引数は、/hana/data
ボリュームが複数のディスクにホストされている場合にのみ適用されます。デフォルトでは、エージェントは標準スナップショットを作成します。この引数でサポートされる値:
STANDARD
、ARCHIVE
。これらのスナップショット タイプについては、アーカイブ ディスクと標準ディスクのスナップショットについてをご覧ください。この引数は、エージェントのバージョン 3.6 以降でサポートされています。
-group-snapshot-name
省略可。
/hana/data
ボリュームをホストするディスクのスナップショットのスナップショット グループ名を指定します。デフォルトでは、スナップショット グループ名は
CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMSS
という形式で設定されます。ここで、CONSISTENCY_GROUP_NAME
は、ディスク整合性グループを作成するで作成したディスク整合性グループの名前です。この引数は、エージェントのバージョン 3.6 以降でサポートされています。
-labels
省略可。作成するディスク スナップショットに関連付けるラベル値ペアを 1 つ以上指定します。例: -labels="label1=value1,label2=value2"
。-source-disk
/hana/data
ボリュームをホストする Persistent Disk ボリュームまたは Hyperdisk ボリュームの名前を指定します。注: バージョン 3.3 以降、引数
-source-disk
と-source-disk-zone
は、hanadiskbackup
コマンドと併用する場合は省略可能です。これは、エージェントが/hana/data
ディレクトリをホストするディスクを自動検出できるためです。ただし、これらの引数を指定すると、エージェントの自動検出がオーバーライドされます。-source-disk-zone
/hana/data
ボリュームをホストしているディスクが存在するゾーンを指定します。注: バージョン 3.3 以降、引数
-source-disk
と-source-disk-zone
は、hanadiskbackup
コマンドと併用する場合は省略可能です。これは、エージェントが/hana/data
ディレクトリをホストするディスクを自動検出できるためです。ただし、これらの引数を指定すると、エージェントの自動検出がオーバーライドされます。-source-disk-key-file
省略可。 /hana/data
ボリュームをホストしているディスクが、RSA でラップした顧客指定の暗号鍵で暗号化されている場合は、その鍵の JSON ファイルの絶対パスを指定します。この引数は、エージェントのバージョン 3.2 以降でサポートされています。
-storage-location
省略可。ディスク スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョンを指定します。 -freeze-file-system
省略可。エージェントが SAP HANA データベースのファイル システムを固定するかどうかを指定します。デフォルト値は
false
です。この引数は、エージェントのバージョン 3.2 以降でサポートされています。
-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 以降でサポートされています。
- SAP HANA 認証に
ディスク スナップショットを確認する
ディスク スナップショットが作成されたことを確認するには、次のオプションを使用します。
Google Cloud コンソールで Compute Engine の [スナップショット] ページに移動し、ディスク名を使用してエントリをフィルタします。
/hana/data
ボリュームが 1 つのディスクにホストされている場合は、スナップショット名を使用してフィルタすることもできます。/hana/data
ボリュームが複数のディスクにホストされている場合は、スナップショット グループの名前を使用してフィルタすることもできます。また、エージェントの次のログファイルでディスク スナップショットの詳細を確認することもできます。
/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_IDENTIFIER"
この出力には次の値が含まれます。
BACKUP_ID
: SAP HANA バックアップ カタログのディスク スナップショット ベースのバックアップに割り当てられたバックアップ IDSNAPSHOT_IDENTIFIER
:- 1 つのディスク上の
/hana/data
ボリュームの場合、この ID の値は、hanadiskbackup
コマンドでの-snapshot-name
引数の使用方法によって決まります。この引数を指定しなかった場合、引数のデフォルト値(snapshot-SOURCE_DISK_NAME-YYYYMMDD-HHMMSS
)が設定されます。 /hana/
ボリュームが複数のディスクにホストされている場合、この ID の値は、hanadiskbackup
コマンドでの-group-snapshot-name
引数の使用方法によって決まります。この引数を指定しなかった場合、引数のデフォルト値(CONSISTENCY_GROUP_NAME-YYYYMMDD-HHMMMSS
)が設定されます。
- 1 つのディスク上の
SOURCE_DISK_NAME
: この値は、hanadiskbackup
コマンドでの-source-disk
引数の使用方法によって決まります。CONSISTENCY_GROUP_NAME
: この値は、hanadiskbackup
コマンドでの-group-snapshot-name
引数の使用方法によって決まります。YYYYMMDD-HHMMMSS
: スナップショットが作成された日時です。
ディスク スナップショット ベースのバックアップを使用してデータベースを復元する
Google Cloud の SAP 用エージェントのディスク スナップショット機能を使用して SAP HANA データベースを復元するには、次のシナリオの手順をご覧ください。
- スケールアップ システムのデータベースを復元する
- スケールアップ HA システムのデータベースを復元する
- スケールアップ DR デプロイ用にデータベースを復元する
- システムのコピーまたはシステムの更新を行う
スケールアップ システムのデータベースを復元する
Google Cloud にデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。
エージェントの
hanadiskrestore
コマンドを実行して、/hana/data
ボリュームをホストしているディスクを復元します。/hana/data
ボリュームが 1 つのディスクでホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
/hana/data
ボリュームが複数のディスクにホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
:/hana/data
ボリュームが 1 つのディスクにホストされている場合は、新しいディスクの作成に使用するディスク スナップショットの名前を指定します。SOURCE_SNAPSHOT_GROUP_NAME
:/hana/data
ボリュームが複数のディスクにホストされている場合は、新しいディスクの作成に使用するスナップショット グループ名を指定します。NEW_DISK_TYPE
: 作成するディスクのタイプ。詳細については、ディスクの復元でサポートされている引数の-new-disk-type
の説明をご覧ください。NEW_DISK_NAME
: 新しいディスクに設定する名前。詳細については、ディスクの復元でサポートされている引数の-new-disk-name
の説明をご覧ください。
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
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。 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 ボリュームをホストするソースディスクの名前を指定します。
注: バージョン 3.4 以降、引数 |
-data-disk-zone |
省略可。/hana/data ボリュームをホストするソースディスクがデプロイされているゾーンを指定します。注: バージョン 3.4 以降、引数 |
-source-snapshot |
/hana/data ボリュームが 1 つのディスクにホストされている場合は、復元に使用するディスク スナップショットの名前を指定します。 |
-new-disk-name |
新しいディスクに設定する名前を指定します。この引数は、/hana/data ボリュームが複数のディスクにホストされている場合は適用されません。 |
-group-snapshot-name |
この引数は、エージェントのバージョン 3.6 以降でサポートされています。 |
-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
ボリュームをホストしているディスクを復元します。/hana/data
ボリュームが 1 つのディスクでホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
/hana/data
ボリュームが複数のディスクにホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
:/hana/data
ボリュームが 1 つのディスクにホストされている場合は、新しいディスクの作成に使用するディスク スナップショットの名前を指定します。SOURCE_SNAPSHOT_GROUP_NAME
:/hana/data
ボリュームが複数のディスクにホストされている場合は、新しいディスクの作成に使用するスナップショット グループ名を指定します。NEW_DISK_TYPE
: 作成するディスクのタイプ。詳細については、ディスクの復元でサポートされている引数の-new-disk-type
の説明をご覧ください。NEW_DISK_NAME
: 新しいディスクに設定する名前。詳細については、ディスクの復元でサポートされている引数の-new-disk-name
の説明をご覧ください。
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
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。 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
ボリュームをホストしているディスクを復元します。/hana/data
ボリュームが 1 つのディスクでホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -source-snapshot=SOURCE_SNAPSHOT_NAME \ [-new-disk-type=NEW_DISK_TYPE \ -new-disk-name=NEW_DISK_NAME]
/hana/data
ボリュームが複数のディスクにホストされている場合は、次のコマンドを実行します。sudo /usr/bin/google_cloud_sap_agent hanadiskrestore \ -project=SOURCE_PROJECT_ID \ -sid=SID \ -group-snapshot-name=SOURCE_SNAPSHOT_GROUP_NAME \ [-new-disk-type=NEW_DISK_TYPE ]
次のように置き換えます。
SOURCE_PROJECT_ID
: ディスク スナップショットが存在する Google Cloud プロジェクトの IDSID
: SAP HANA システムの SAP システム識別子(SID)SOURCE_SNAPSHOT_NAME
:/hana/data
ボリュームが 1 つのディスクにホストされている場合は、新しいディスクの作成に使用するディスク スナップショットの名前を指定します。SOURCE_SNAPSHOT_GROUP_NAME
:/hana/data
ボリュームが複数のディスクにホストされている場合は、新しいディスクの作成に使用するスナップショット グループ名を指定します。NEW_DISK_TYPE
: 作成するディスクのタイプ。詳細については、ディスクの復元でサポートされている引数の-new-disk-type
の説明をご覧ください。NEW_DISK_NAME
: 新しいディスクに設定する名前。詳細については、ディスクの復元でサポートされている引数の-new-disk-name
の説明をご覧ください。
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
ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。 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 用エージェントの診断情報をご覧ください。