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

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

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

始める前に

権限を設定する

Google Cloud の SAP 用エージェントを使用して、SAP HANA システムのディスク スナップショット ベースのバックアップと復元を行うには、次の権限を設定する必要があります。

  • ディスク スナップショットを作成するため、次の IAM 権限を有効にします。
    • SAP HANA システムが実行されている Google Cloud プロジェクトで compute.snapshots.create 権限を有効にします。
    • Compute Engine VM インスタンスで使用されるサービス アカウントで compute.disks.createSnapshotcompute.snapshot.listcompute.disk.list の権限を有効にします。
  • ディスク スナップショット ベースのバックアップを作成するには、エージェントで使用される 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 プロジェクトの 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 データベースのユーザー名

    • 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 ツール hdbsqlhdduserstore が、エージェントをホストする 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 です。使用可能なログレベルは、debuginfowarnerror です。
    -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 バックアップ カタログのディスク スナップショットに割り当てられたバックアップ ID
  • SOURCE_DISK_NAME: スナップショットを作成した /hana/data ボリュームをホストするディスクの名前
  • YYYYMMDD-HHMMMSS: スナップショットが作成された日時

ディスク スナップショットを使用して復元を行う

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

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

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

  1. エージェントの 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 プロジェクトの ID
    • SID: SAP HANA システムの SAP システム識別子(SID)
    • SOURCE_SNAPSHOT_NAME: 新しいディスクの作成に使用するディスク スナップショットの名前
    • SOURCE_DISK_NAME: /hana/data ボリュームをホストしているソースディスクの名前
    • SOURCE_DISK_ZONE: ソースディスクがデプロイされているゾーンの名前

    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 ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。
    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 ボリュームをホストするソースディスクの名前を指定します。
-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

省略可。復元された /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 ボリュームをホストしているディスクを復元します。

    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 プロジェクトの ID
    • SID: SAP HANA システムの SAP システム識別子(SID)
    • SOURCE_SNAPSHOT_NAME: 新しいディスクの作成に使用するディスク スナップショットの名前
    • SOURCE_DISK_NAME: /hana/data ボリュームをホストしているソースディスクの名前
    • SOURCE_DISK_ZONE: ソースディスクがデプロイされているゾーンの名前

    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 ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。
    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 ボリュームをホストしているディスクを復元します。

    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 プロジェクトの ID
    • SID: SAP HANA システムの SAP システム識別子(SID)
    • SOURCE_SNAPSHOT_NAME: 新しいディスクの作成に使用するディスク スナップショットの名前
    • SOURCE_DISK_NAME: /hana/data ボリュームをホストしているソースディスクの名前
    • SOURCE_DISK_ZONE: ソースディスクがデプロイされているゾーンの名前

    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 ボリュームのバックアップが作成されていることを確認します。この機能の詳細については、SAP HANA の Backint ベースのバックアップと復元をご覧ください。
    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 用エージェントの診断情報をご覧ください。