ディスク スナップショットを使用して SAP HANA のバックアップと復元を行う

このガイドでは、Google Cloud の SAP 用エージェントのディスク スナップショット機能を使用して、SAP HANA データベースをバックアップして復元する方法について説明します。

この機能については、ディスク スナップショットを使用した SAP HANA のバックアップと復元をご覧ください。

始める前に

  • Google Cloud の SAP 用エージェントのインストールを検証します。手順については、Compute Engine VM インスタンスに Google Cloud の SAP 用エージェントをインストールして構成するをご覧ください。
  • 次のように、SAP HANA システムが Compute Engine VM インスタンスにデプロイされていることを確認します。

    複数のディスクを使用して /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.createSnapshotcompute.snapshot.listcompute.disk.list の権限を有効にします。
    • /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 プロジェクトの ID
    • HANA_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 ツール hdbsqlhdbuserstore が、エージェントをホストする Compute インスタンスにインストールされている。
    • hdbuserstore キーが、特定の 1 つの SAP HANA インスタンスに対応している。複数の SAP HANA インスタンスのホスト名を含む鍵は使用できません。
    • SIDadm ユーザーは、このキーを使用して SAP HANA データベースにクエリを実行できます。ここで、SIDsid パラメータに指定した値を参照します。これを検証するには、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 ボリュームが複数のディスクにホストされている場合にのみ適用されます。

    デフォルトでは、エージェントは標準スナップショットを作成します。この引数でサポートされる値: STANDARDARCHIVE。これらのスナップショット タイプについては、アーカイブ ディスクと標準ディスクのスナップショットについてをご覧ください。

    この引数は、エージェントのバージョン 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 です。使用可能なログレベルは、debuginfowarnerror です。
    -confirm-data-snapshot-after-create

    省略可。スナップショットの作成直後に SAP HANA へのスナップショットの作成を確認する必要があるものの、-storage-location 引数に対して指定された Cloud Storage バケットへのアップロードを確認する必要はない場合は、値 TRUE を指定します。

    デフォルト値は FALSE です。この場合、エージェントは CREATE オペレーションと UPLOAD オペレーションの両方が完了した後にスナップショットの作成を確認します。

    この引数は、エージェントのバージョン 3.4 以降でサポートされています。

ディスク スナップショットを確認する

ディスク スナップショットが作成されたことを確認するには、次のオプションを使用します。

  • 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 バックアップ カタログのディスク スナップショット ベースのバックアップに割り当てられたバックアップ ID
  • SNAPSHOT_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)が設定されます。
  • SOURCE_DISK_NAME: この値は、hanadiskbackup コマンドでの -source-disk 引数の使用方法によって決まります。
  • CONSISTENCY_GROUP_NAME: この値は、hanadiskbackup コマンドでの -group-snapshot-name 引数の使用方法によって決まります。
  • YYYYMMDD-HHMMMSS: スナップショットが作成された日時です。

ディスク スナップショット ベースのバックアップを使用してデータベースを復元する

Google Cloud の SAP 用エージェントのディスク スナップショット機能を使用して SAP HANA データベースを復元するには、次のシナリオの手順をご覧ください。

スケールアップ システムのデータベースを復元する

Google Cloud にデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。

  1. エージェントの 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 プロジェクトの ID
    • SID: 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 コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。

  2. 必要なオプションを使用して SAP HANA データベースを復元します。

    スナップショット時刻に復元する

    ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。

    1. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    2. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    4. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID は、テナント データベースの SID に置き換えます。

    特定の時点に復元する

    SAP HANA データベースを特定の時点に復元する手順は次のとおりです。

    1. Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に /hana/log ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。
    2. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    3. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    5. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      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-name-data-disk-zone は、hanadiskrestore コマンドと併用する場合は省略可能です。これは、エージェントが /hana/data ボリュームをホストするディスクを自動検出できるためです。ただし、これらの引数を指定すると、エージェントの自動検出がオーバーライドされます。

-data-disk-zone 省略可。/hana/data ボリュームをホストするソースディスクがデプロイされているゾーンを指定します。

注: バージョン 3.4 以降、引数 -data-disk-name-data-disk-zone は、hanadiskrestore コマンドと併用する場合は省略可能です。これは、エージェントが /hana/data ボリュームをホストするディスクを自動検出できるためです。ただし、これらの引数を指定すると、エージェントの自動検出がオーバーライドされます。

-source-snapshot /hana/data ボリュームが 1 つのディスクにホストされている場合は、復元に使用するディスク スナップショットの名前を指定します。
-new-disk-name 新しいディスクに設定する名前を指定します。この引数は、/hana/data ボリュームが複数のディスクにホストされている場合は適用されません。
-group-snapshot-name

/hana/data ボリュームが複数のディスクにホストされている場合は、復元に使用するスナップショット グループ名を指定します。

この引数は、エージェントのバージョン 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

省略可。復元された /hana/data ディレクトリをホストする新しいディスクを作成する場合は、この引数を使用して、切断されたディスクに関連付けるラベル値ペアを指定します。ラベルをカンマで区切ります。例: -labels-on-detached-disk="label1=value1,label2=value2"

この引数は、エージェントのバージョン 3.4 以降でサポートされています。

-send-metrics-to-monitoring

省略可。スナップショットの復元の所要時間を Cloud Monitoring に送信するかどうかを指定します。デフォルト値は TRUE です。

この引数は、エージェントのバージョン 3.4 以降でサポートされています。

-disk-size-gb

省略可。新しいディスクのサイズを GB で指定します。デフォルトでは、新しいディスクは既存のディスクと同じサイズになります。

新しいディスクのサイズは、既存のディスクよりも小さくしないでください。

-loglevel 省略可。hanadiskrestore コマンドで実行するすべてのアクションのロギングレベルを指定します。デフォルトのロギングレベルは info です。使用可能なログレベルは、debuginfowarnerror です。

スケールアップ HA システムのデータベースを復元する

Google Cloud の高可用性(HA)クラスタにデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。

  1. プライマリ SAP HANA ノードに、/hana/data ボリュームをホストしているディスクのスナップショットがあることを確認します。

  2. root ユーザーとして、HA クラスタをメンテナンス モードに切り替えます。Pacemaker を使用している場合は、次のコマンドを実行します。

    RHEL

    pcs property set maintenance-mode=true

    SLES

    crm configure property maintenance-mode=true
  3. HA クラスタのプライマリ ノードとスタンバイ ノードの両方で次のコマンドを実行して、SAP HANA データベース インスタンスを停止します。

    HDB stop
  4. SAP HANA HA システムのプライマリ ノードに切り替えます。

  5. エージェントの 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 プロジェクトの ID
    • SID: 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 コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。

  6. SAP HANA HA システムのセカンダリ ノードの登録を解除します。

    hdbnsutil -sr_unregister
  7. SAP HANA HA システムのプライマリ ノードで、SAP HANA システムのレプリケーションを無効にします。

    hdbnsutil -sr_disable
  8. プライマリ ノードで、必要なオプションを使用して SAP HANA データベースを復元します。

    スナップショット時刻に復元する

    ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。

    1. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    2. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    4. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID は、テナント データベースの SID に置き換えます。

    特定の時点に復元する

    SAP HANA データベースを特定の時点に復元する手順は次のとおりです。

    1. Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に /hana/log ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。
    2. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    3. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    5. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID は、テナント データベースの SID に置き換えます。

  9. プライマリ ノードで、SAP HANA システム レプリケーションを有効にします。

    hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
  10. スタンバイ ノードをプライマリ ノードに再登録します。

    hdbnsutil -sr_register
       --name=SECONDARY_SITE_NAME
       --remoteHost=PRIMARY_HOST_NAME
       --remoteInstance=INSTANCE_NUMBER
       --replicationMode=sync
       --operationMode=logreplay
  11. スタンバイ ノードのデータベースがプライマリ ノード内のデータベースと完全に同期していることを確認します。

  12. root ユーザーとして、HA クラスタのメンテナンス モードを終了します。Pacemaker を使用している場合は、次のコマンドを実行します。

    RHEL

    pcs property set maintenance-mode=false

    SLES

    crm configure property maintenance-mode=false

スケールアップ DR デプロイ用にデータベースを復元する

Google Cloud に障害復旧ソリューションを使用してデプロイされた SAP HANA スケールアップ システムのデータベースを復元するには、次の手順を完了します。

  1. DR デプロイのプライマリ インスタンスとスタンバイ インスタンスの両方で次のコマンドを実行して、SAP HANA データベースを停止します。

    HDB stop
  2. SAP HANA DR デプロイメントのプライマリ インスタンスに切り替えます。

  3. エージェントの 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 プロジェクトの ID
    • SID: 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 コマンドで使用できる引数については、ディスクの復元でサポートされている引数をご覧ください。

  4. プライマリ インスタンスで、SAP HANA システム レプリケーションを無効にします。

    hdbnsutil -sr_disable
  5. プライマリ インスタンスで、必要なオプションを使用して SAP HANA データベースを復元します。

    スナップショット時刻に復元する

    ディスク スナップショットが作成された時点に SAP HANA データベースを復元するには、次の操作を行います。

    1. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    2. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG;"
    3. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    4. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      RECOVER DATA FOR TENANT_SID USING SNAPSHOT CLEAR LOG

      TENANT_SID は、テナント データベースの SID に置き換えます。

    特定の時点に復元する

    SAP HANA データベースを特定の時点に復元する手順は次のとおりです。

    1. Google Cloud の SAP 用エージェントの Backint 機能を使用して、Cloud Storage に /hana/log ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、Backint を使用した SAP HANA のバックアップと復元をご覧ください。
    2. SIDadm ユーザーに切り替えます。
      su - SID_LCadm

      SID_LC は、SAP HANA システムの SID に置き換えます。すべて小文字を使用します。

    3. 次のコマンドを実行して、システム データベースを復元します。
      HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP 'YYYY-MM-DD HH:MM:SS' CLEAR LOG USING SNAPSHOT"
    4. システム データベースに接続します。たとえば、次のコマンドを実行します。
      hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

      次のように置き換えます。

      • SYSTEM_DB_PASSWORD: システム データベースのパスワード
      • INSTANCE_NUMBER: SAP HANA インスタンス番号
    5. テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。
      RECOVER DATABASE FOR TENANT_SID UNTIL TIMESTAMP '2099-12-31 12:00:00' CLEAR LOG USING SNAPSHOT

      TENANT_SID は、テナント データベースの SID に置き換えます。

  6. プライマリ インスタンスで、SAP HANA システム レプリケーションを有効にします。

    hdbnsutil -sr_enable --name=PRIMARY_SITE_NAME
  7. スタンバイ インスタンスをプライマリ インスタンスに登録します。

    hdbnsutil -sr_register
       --name=SECONDARY_SITE_NAME
       --remoteHost=PRIMARY_HOST_NAME
       --remoteInstance=INSTANCE_NUMBER
       --replicationMode=sync
       --operationMode=logreplay
  8. スタンバイ インスタンスのデータベースが、プライマリ インスタンスのデータベースと完全に同期していることを確認します。

システムのコピーまたはシステムの更新を行う

SAP HANA システムのディスク スナップショット ベースのバックアップを使用して別の SAP HANA システムを復元するには、次の手順を完了します。

  1. ソースシステムでエージェントの hanadiskbackup コマンドを実行して、スナップショット ベースのバックアップを作成します。手順については、ディスク スナップショット ベースのバックアップを作成するをご覧ください。
  2. ソースシステムとターゲット システムの SID が異なる場合は、ターゲット システムと一致するようにソースシステムの /hana/data/SID ディレクトリの名前を変更します。

    mv /hana/data/SOURCE_SID /hana/data/TARGET_SID

    次のように置き換えます。

    • SOURCE_SID: ソース SAP HANA システムの SID
    • TARGET_SID: ターゲット SAP HANA システムの SID
  3. ターゲット システムでエージェントの hanadiskrestore コマンドを実行して、/hana/data ボリュームをホストしているディスクを復元します。

  4. ターゲット システムで、システム データベースを復元します。

    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"
  5. テナント データベースにソースシステムの SID を設定する場合、SAP HANA ドキュメントの Rename a Tenant Database の手順に沿って名前を変更できます。

  6. ターゲット システムで、システム データベースに接続します。たとえば、次のコマンドを実行します。

    hdbsql -d SYSTEMDB -u system -p "SYSTEM_DB_PASSWORD" -i INSTANCE_NUMBER

    次のように置き換えます。

    • SYSTEM_DB_PASSWORD: システム データベースのパスワード
    • INSTANCE_NUMBER: SAP HANA インスタンス番号
  7. ターゲット システムで、テナント データベースごとに次のコマンドを実行して、テナント データベースを復元します。

    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 が推奨するその他のベスト プラクティスについては、ベスト プラクティスをご覧ください。

スナップショットの整合性を検証するには、次の手順を完了します。

  1. エージェントの 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 ゾーン
  2. ディスクを 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 ゾーン
  3. 任意の SSH メソッドを使用して VM に接続します。

  4. 新しいディスクを一時ファイル システムとしてマウントします。

    1. 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
    2. VG UUID を使用して、ボリューム グループの名前を変更します。上記の例では Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR です。

      vgrename Fa52zl-AROR-LH2k-aG4z-LbrB-cvTz-TZhEfR vg_hana_data_temp
      
    3. ボリューム グループと論理ボリュームを有効にします。

      vgchange -a y vg_hana_data_temp
      lvchange -a y /dev/vg_hana_data_temp/data
      
    4. 論理ボリュームを一時ファイル システムにマウントします(例: /hana/data_temp)。

      mkdir /hana/data_temp
      mount /dev/vg_hana_data_temp/data /hana/data_temp
      
    5. すべてのディスクが正しくマウントされていることを確認します。

      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
  5. SIDadm ユーザーとして、一時ファイル システムに含まれるデータ ボリュームに対して hdbpersdiag ツールを実行します。

    for directory in $(find /hana/data_temp/SID/mnt00001/hdb* -type d); do hdbpersdiag -c -e 'check all' $directory; done
    
  6. hdbpersdiag ツールの出力を確認します。

  7. 今後、この整合性チェックを実行する場合は、新しいボリューム グループを残しておきます。実行しない場合は削除します。

  8. ディスクを VM から切断します。gcloud compute instances detach-disk コマンドを実行します。

    VM_INSTANCE_NAME \
       --disk=DISK_NAME \
       --zone=ZONE
    
  9. ディスクを削除します。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 用エージェントの診断情報をご覧ください。