バックアップとリカバリの実行

高度なバックアップおよびリカバリ手法の説明

Objective

After completing this lesson, you will be able to 高度なバックアップおよびリカバリの手法を特定します。

データスナップショット

データスナップショットには、SAP HANA データベースをバックアップおよびリストアするための追加オプションが用意されています。データスナップショットは、ストレージシステム上のデータボリュームの特定の時点におけるステータスを取得します。データスナップショットには、SAP HANA システムを整合性のある状態に回復するために必要なすべてのデータが含まれます。

データスナップショットの利点

データスナップショットは、ストレージシステムで登録され、データベースリソースを消費しないため、データベースシステムへの影響は最小限に抑えられます。

データスナップショットからのリカバリは高速です。これは、データスナップショットがストレージシステムのデータ領域にすでに存在しており、バックアップサーバからストレージシステムにデータをコピーする必要がないためです。

データスナップショットに基づくリカバリでは、データバックアップに基づくリカバリと同様に、デルタバックアップおよびログバックアップを使用することもできます。

データスナップショットについて知っておくべき重要なポイント

データスナップショットを使用するバックアップ方針を計画している場合は、いくつかの重要な点に注意する必要があります。

  • データスナップショットを登録するには、最初に内部データベーススナップショットを登録します。この内部データベーススナップショットにより、データベースの起動時における整合性の保たれた状態が凍結されます。これは、複数のストレージボリュームグループが関連している場合に特に重要です。

  • データスナップショットは、システムデータベースを介してのみ登録できます。

  • データスナップショット中は、SAP HANA データベースシステムがオンラインになり、設定されたすべてのサービスが実行されます。

  • データスナップショットを登録するには、Native SQL を使用する必要があります。

  • データスナップショットからのリカバリは、SAP HANA コックピットでサポートされています。

データバックアップが別の保管場所に書き込まれるのに対し、データスナップショットは SAP HANA データ領域とは物理的に別の場所に、マニュアルで保存する必要があります。

注記

ストレージスナップショットの整合性の責任は、ストレージベンダにあります。SAP HANA では、ストレージシステムのストレージスナップショットの整合性をチェックできません。

SAP HANA データベースは、データスナップショットを使用するか、データバックアップと組み合わせてデータスナップショットを使用して、1 つの手順でリカバリすることができます。データベースがデータスナップショットでリカバリされた後、ログバックアップをリプレイすることができます。

データスナップショットの登録

データスナップショットは、SAP HANA データベースおよびストレージシステムレベルで実行される 3 つのステップで登録されます。SAP HANA とストレージツールの間には弱いリンクがあります。データスナップショットは、SAP HANA バックアップカタログに記録されます。

この図は、SAP HANA のシステムデータベースから外部ストレージへのデータベーススナップショットの登録プロセスを示しています。

データスナップショットの準備中または登録中に、スナップショット関連データが凍結されます。スナップショット関連のデータは凍結されたままですが、データベース内で変更を加えることができます。このような変更では、固定されたスナップショット関連データは変更されません。代わりに、データスナップショットとは別のデータ領域内の位置に変更が書き込まれます。変更はログにも書き込まれます。

データスナップショットを登録するには、以下の手順に従います。

  1. 次の SQL コマンドを使用することで、新しい内部データベーススナップショットを登録し、生成されたバックアップ ID を検索して、データベースを準備します。

    Code Snippet
    12
    BACKUP DATA FOR FULL SYSTEM CREATE SNAPSHOT COMMENT ‘Internal database snapshot’; SELECT * FROM M_BACKUP_CATALOG WHERE ENTRY_TYPE_NAME = 'data snapshot';

    出力から、ステータス PREPARED の内部データベーススナップショットのバックアップ ID を見つけます。このバックアップ ID は、後でデータスナップショットのバックアップを確認または破棄するために必要です。

  2. ストレージベンダから提供されたツールを使用して、SAP HANA データボリューム領域のストレージスナップショットを登録します。ストレージスナップショット ID を書き留めます。このストレージスナップショット ID は、後でデータスナップショットのバックアップを確認または放棄するために必要です。

  3. ストレージスナップショットの成功または失敗に応じて、SAP HANA のデータスナップショットを確認または放棄します。

    以下の SQL コマンドを使用して、データスナップショットを確認または放棄します。

    確認:BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID 3456789 SUCCESSFUL 'snapshot_id_12345‘

    中止:BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID 3456789 UNSUCCESSFUL 'snapshot_id_12345‘

    外部 ID を指定して、後でストレージシステムでデータスナップショットを識別することができます。

    外部バックアップ ID のエントリが Backup Catalog に書き込まれます。データスナップショットを登録できない場合、または確認に失敗した場合は、破棄を選択します。

データスナップショットを確認または破棄すると、成功または失敗のいずれかとして Backup Catalog に記録されます。スナップショットが確認または放棄されると、SAP HANA データベースによって SAP HANA データ領域から内部スナップショットが自動的に削除されます。

準備されたデータスナップショットは、ストレージツールを使用してデータスナップショットが実行されるまで存在します。データスナップショットが準備されているが、長期間確認されていない場合、アラートが発生します。

注記

データスナップショットの登録後、できるだけ早く確認または放棄することを強くお奨めします。

SQL コマンドを使用したデータスナップショットの登録については、SAP HANA 管理ガイド - データスナップショット (Data Snapshots) を参照してください。

データスナップショットを使用したリカバリ

SAP HANA コックピットおよびストレージシステムツールを使用して、データスナップショットを使用して、SAP HANA システムをそのすべてのテナントデータベースとともにリカバリすることができます。SAP HANA 管理ガイド - データスナップショットからの SAP HANA のリカバリ (Recover SAP HANA from a Data Snapshot) を参照してください。

追加情報

SAP ノート 2039883 - FAQ: SAP HANA データベースおよびデータスナップショット (ストレージスナップショット) (FAQ: SAP HANA database and data snapshots (storage snapshots))

リカバリ再開

リカバリが中止または中断された場合、SAP HANA データベースは起動できません。データベースで作業を続行する前に、リカバリを完了する必要があります。ただし、中断されたリカバリを最初から繰り返すと、作業時間が大幅に失われる可能性があります。このため、中断されたリカバリを再開するオプションを使用することで、データベースの大小を問わず、かなりの時間を節約できます。

エラー後のリカバリ再開

データリカバリには、リカバリのほとんどの時間が使用されます。デルタデータバックアップのリカバリ中またはログ再生中にリカバリが失敗した場合、SAP HANA はリカバリを再開できるため、停止が大幅に短縮されます。デルタデータバックアップのリカバリ中、またはログの正常な再生後に停止が発生した場合は、SAP HANA によりデータベースリカバリを再開できます。

この図は、デルタおよびログバックアップ中に障害が発生した場合の、主な違いがあるリカバリプロセスの再開を示しています。

正常にリカバリされた最後のフルバックアップから、またはリカバリ中にフルバックアップとデルタバックアップの間に設定された追加のフォールバックポイントに依存する正常にリカバリされたデルタバックアップから、データリカバリを再開することができます。ログリプレイ時の障害は、セーブポイント間隔で保持された変更によるメリットがあるため、セーブポイント後の最新のログセットのみをリプレイする必要があります。

注記

フルデータバックアップからのリカバリのみを再開することはできません。フルデータバックアップのみからのリカバリが中断された場合は、リカバリを最初から繰り返します。

SAP HANA では、リカバリ中にフォールバックポイントが自動的に定義され、その後リカバリを再開できるポイントがマークされます。

デルタデータバックアップのリカバリ中に障害が発生した後にデータベースリカバリを再開すると、以下の処理が行われます。

  • 正常にリカバリされたフルデータバックアップ、差分データバックアップと増分データバックアップ、およびログバックアップを使用して、後続のリカバリを高速化します。

  • 正常にリカバリされたデータバックアップは、内部データベーススナップショット (フォールバックポイント) としてデータ領域に暗黙的に保持されます。

  • デルタデータバックアップのリカバリ中にリカバリ障害が発生した場合、フルバックアップのリカバリは保持されます。デルタデータバックアップおよびログバックアップのみが再処理されます。

ログリカバリ中の障害後にデータベースリカバリを再開すると、次の処理が行われます。

  • データベースリカバリ時のログバックアップの再生によって発生するデータ変更は、フォールバックポイントとともに定期的にログ領域に保存されます。

  • フォールバックポイントの頻度は、log_recovery_resume_point_interval 設定パラメータを使用して設定できます (デフォルト: 1,800 秒、最大: 18,000 秒、0 = 無効)。

  • 間隔が終了すると、次のフォールバックポイントログエントリが再生されます。

  • フォールバックポイント後にリカバリ障害が発生した場合は、最新のフォールバックポイントより後のログバックアップのみを再処理する必要があります。

リカバリが正常に完了すると、フォールバックポイントが無効化されます。これらのフォールバックポイントに基づいて新しいリカバリを実行することはできなくなります。

注記

フォールバックポイントは backup.log ファイルに記録されます。フォールバックポイントは、リカバリを再開できるかどうかを示します。

エラー後のリカバリ実行

この図は、バックアップ管理システムの中止されたバックアップ再開エントリを強調表示するリカバリウィザードのインタフェースを示しています。

再開可能なリカバリも Backup Catalog に記録されます。SAP HANA コックピットでは、再開可能な部分的に完了したリカバリにバックアップ接頭辞 RESUME が指定されます。このバックアップからリカバリを再開するには、以下の手順に従ってください。

  1. SAP HANA コックピットからリカバリを開始します。
  2. リカバリダイアログボックスで、接頭辞 RESUME のバックアップを選択します。
  3. 画面上で説明されている手順に従って、リカバリを完了します。

追加情報

コマンドラインツールを使用したリカバリ

SAP HANA コックピットを使用して SYSTEMDB および/またはテナントデータベースをリカバリすることを強くお奨めします。ただし、SAP HANA コックピットを使用できない場合は、Python スクリプト recoverSys.py を使用して SYSTEMDB をリカバリすることができます。

リカバリ用の SQL 文は、などのhdbsql通常の SQL クライアントを使用して実行することはできず、データベースがオンラインである場合は実行できません。このため、Python スクリプトはrecoverSys.py SQL 文を SAP HANA に渡すために使用されます。

注意

コマンド行ツールを使用してテナントデータベースをリカバリすることはできません。テナントデータベースをリカバリするには、SAP HANA コックピットまたは recoverSys.py ツールを使用して、オンラインシステムデータベースで SQL 文を実行し、オフラインテナントデータベースをリカバリします。

コマンドラインツールを使用したリカバリ手順

コマンドラインツールを使用してリカバリを実行する手順は次のとおりです。

  1. 管理者は、リカバリターゲット時間、リカバリタイプ、その他のオプションを指定して、必要なパラメータを使用してスクリプトを呼び出します。

    HDBSettings.sh recoverSys.py [<parameters>]

  2. スクリプトによって SAP HANA データベースが停止し、リカバリの準備と実行が行われます。

  3. SAP HANA データベースのコーディネータネームサーバが正常に起動すると、スクリプトは終了します。

    この時点では、リカバリはまだ完了していないことに注意してください。オプションを使用してスクリプトを呼び出します。これは、スクリプトが--wait確実にリカバリが終了するまで待機するためです。

Code Snippet
12345678910111213141516171819
HDBSettings.sh recoverSys.py --wait [139669536070528, 0.007] >> starting recoverSys (at Thu Aug 17 19:07:04 2023) [139669536070528, 0.007] keys: {'wait': True} using logfile /usr/sap/H46/HDB00/wdflbmt7346/trace/backup.log recoverSys started: ============2023-08-17 19:07:04 ============ testing master: wdflbmt7346 wdflbmt7346 is master shutdown database, timeout is 120 stop system on: wdflbmt7346 stopping system: 2023-08-17 19:07:04 stopped system: 2023-08-17 19:07:18 creating file recoverInstance.sql restart database restart master nameserver: 2023-08-17 19:07:23 start system: wdflbmt7346 sapcontrol parameter: ['-function', 'Start'] sapcontrol returned successfully: recoverSys finished successfully: 2023-08-17 19:07:55

リカバリが正常に行われたことを確認するには、backup.log ファイルを参照してください。

追加情報

リカバリ不可能なシステムデータベースの再初期化

システム DB が破損しており、起動はできませんが、すべてのテナントはまだ機能しています。SYSTEMDB バックアップがないため、可能な唯一の解決策は、すべてのテナントを含む SAP HANA データベースシステム全体をリカバリするのではなく、SYSTEMDB を再初期化することです。

この図は、テナントデータベースとシステムリブートによる SAP HANA システムの初期化、データベースパーティショニング、および再初期化プロセスを示しています。

コマンドラインツール hdbmdcutil を使用すると、SAP HANA インスタンスのすべてのテナントデータベースに関する情報を使用してシステムデータベースを再初期化できます。

コマンドラインツール hdbmdcutil を使用したシステムデータベースの再初期化

  1. SAP HANA システムを停止します。このシステムに含まれているすべてのホストおよびサービスが停止されていることを確認してください。
  2. -restoreTopology オプションを使用して、hdbmdcutil ツールを起動します。
    Code Snippet
    12345
    hdbmdcutil -restoreTopology [--set_user_system_pw] [--force] initializes the topology with the content from the topology backup file Options: set_user_system_pw - open prompt to specify password for SYSTEM user force - force the operation even preconditions are not fulfilled
  3. SYSTEM ユーザのパスワードを入力します。
  4. SAP HANA システムを起動します。

注意

この機能では、システムデータベースに以前に保存されたその他のデータは復元されません。このデータ (ライセンス情報、ユーザ、デリバリユニット、セキュリティテンプレートなど) は、SQL インタフェースまたはその他のユーザインタフェースやツールを使用してマニュアルで復元する必要があります。

この制限があるため、システムデータベースは、hdbmdcutil ツールではなく、必ずバックアップからリカバリする必要があります。

追加情報

詳細については、次の SAP ノートを参照してください。

  • SAP Note 2588284 - リカバリ不可能なシステムデータベースの再初期化 (Re-initialize a not recoverable system database)
  • SAP Note 1925267 - SYSTEM パスワードのリセット方法 (How to reset SYSTEM password)
  • SAP Note 2274157 - テナントデータベースでの SYSTEM ユーザパスワードのリセット方法 (How to reset SYSTEM user password in a Tenant Database)