Amazon Web Services ブログ

AWS Systems Manager で SAP HANA データベースのリストアを自動化する

はじめに

多くのお客様にとって、SAP システムのコピーは日常的な保守作業の1つです。SAP システムコピーは、SAP の本番データを非本番環境にコピーするために定義された一連のステップです。このブログ記事では、SAP HANA データベースのリストアを自動化することについて説明します。

Amazon Web Services (AWS) Backint Agent for SAP HANA は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス上で動作する SAP HANA ワークロード用の SAP 認定バックアップおよびリストアソリューションです。AWS Backint Agent は、 SAP HANA データベースを Amazon Simple Storage Service(Amazon S3) にバックアップし、SAP HANA Cockpit 、SAP HANA Studio 、または SQL コマンドなどのSAP 管理ツールを使用してリストアします。AWS Backint Agent は、SAP HANA のデータベースとカタログの Amazon S3 へのフルバックアップ、増分バックアップ、差分バックアップ、ログバックアップをサポートしています。AWS Backint Agent の使用は無料で、必要なのは使用する AWS サービスの利用料のみです。

SAP HANA データベースをリストアするプロセスには、いくつかのステップがあり、手作業もあります。このブログは、AWS Systems Manager(SSM)ドキュメントを使用して SAP HANA データベースの復元を自動化することにより、SAP サポートスタッフ(SAP 基盤チーム、データベース管理者等)の運用作業を削減することを目的としています。この SSM ドキュメントは、AWS CloudFormation のテンプレートを使って5分以内にデプロイすることができます。AWS Backint で作成した Amazon S3 バケットに保存されたバックアップから SAP HANA データベース(スケールインまたはスケールアウト)をリストアするためには、 SSM ドキュメントを実行する必要があります。お客様をサポートするために、 SAP HANA データベースをリストアする機能をここでオープンソース化しています。

AWS Systems Manager は、統一されたユーザーインターフェースを提供するため、複数の AWS サービスの運用データを確認したり、 AWS リソース全体の運用タスクを自動化したりすることができます。システム管理の経験があるオペレーターであれば、定義済みの自動化プレイブック、簡単な bash スクリプトを書くことができる RunCommand モジュール、および時折の決定ステップを組み合わせて、簡単に設定することができるはずです。

概要

次の図は、SSM ドキュメントを使用した SAP HANA データベース復元の自動化に関わる概要ステップを説明するものです。バックアップは、AWS Backint Agent for SAP を使用して Amazon S3 に保存されます。管理者は AWS Systems Manager(SSM)ドキュメントを使用してリストアを開始します。AWS Systems Manager は、ターゲットの SAP HANA データベースシステム上でリストアアクティビティを実行します。 AWS Systems Manager は、 Amazon CloudWatch にログを記録します。


前提条件

  • 次の表に示すように、インスタンスを有効化し、識別するためのタグを設定します。注:「ssmsap:」のような接頭語を使用すると、タグの目的が明確になり、関連性のない変更の可能性が低くなります。

ソース SAP HANA プライマリノード:

キー
ssmsap:enabled TRUE
ssmsap:role HANAPRIMARY
ssmsap:sid <<Source database SID>>

ターゲット SAP HANA プライマリノード:

キー
ssmsap:enabled TRUE
ssmsap:role HANAPRIMARY
ssmsap:sid <<Target database SID>>
  • HANA キー
    ターゲット SAP HANA インスタンスに、図のように root ユーザーで hdbuserstore キーを作成します。 SSM ドキュメントはこのキーを使用して、リストア手順を実行します。注:この例では、 System ユーザーを使用しています。リストア権限を持つカスタムユーザーを作成し、 SYSTEM ユーザーの代わりにそのユーザー用のキーを作成することができます。

解決策

このソリューションの一部として実行されるステップのシーケンスを次の図に示します。これは、要件に応じて特定のステップを削除したり置き換えたりすることで、簡単にカスタマイズすることができます。

各ステップは、単一のアクションまたはステップを実行するように設計されており、要素を構築、連鎖、再利用することができ、さらに可視性と操作性を向上させます。(これは後ほどフレームワークの重要な要素になります)。私たちが RunCommand と bash スクリプトを選んだのは、これが SAP 管理者が慣れ親しんでいる「コマンドライン」の使用に合致しているからです。また、必要な設定と入力を最小限に抑えようと、ホスト上のクエリーを使用して実行中のものを特定し、コマンドの発行に必要なパラメータを導き出しました。実行対象を集約してインスタンスを特定するために、 SSM オートメーションドキュメントパラメーター、アウトプット、インスタンスタグが使用されました。

このソリューションの各ステップで、何を行うかを見てみましょう。

ステップ 1 : バックアップ ルート キーのエクスポート (オプション)

これはオプションのステップで、ソースシステムのバックアップがバックアップルートキーによって保護されている場合にのみ必要です。 hdbnsutil コマンドを使用して、バックアップルートキーはローカルファイルシステムにエクスポートされ、ターゲットインスタンスにコピーされるか、 Amazon Simple Service Storage (Amazon S3) バケットにアップロードされます。この例では、暗号化された Amazon S3 バケットにアップロードしています。

以下のステップはすべて、リストア対象の SAP HANA インスタンスで実行されます。

ステップ2 :ログのバックアップを一時停止する

このステップでは、以下のコマンドを使用して、対象の SAP HANA データベースのログバックアップを一時停止します。

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j "ALTER SYSTEM ALTER CONFIGURATION (''global.ini'', ''SYSTEM'') SET (''persistence'', ''enable_auto_log_backup'') = ''no''"

ステップ3:ターゲットテナント・データベースを停止する

以下のコマンドを使用して、リストア作業を行う前に対象の SAP HANA データベースを停止します。

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j "ALTER SYSTEM STOP DATABASE {{ TARGETSID }}"

ステップ4:バックアップ・ルート・キーの検証およびインポート(オプション)

これはオプションのステップで、ソースシステムのバックアップがバックアップルートキーで保護されている場合のみ必要です。以下のように、ステップ1でエクスポートしたバックアップ・ルート・キーを Amazon S3 バケットからコピーして、検証し、インポートします。

su - ${SIDLower}adm -c "/usr/sap/{{ TARGETSID }}/SYS/exe/hdb/hdbnsutil -validateRootKeysBackup /hana/shared/{{ SOURCESID }}KEY.rkb --password=${rootkeypassword}"

su - ${SIDLower}adm -c "/usr/sap/{{ TARGETSID }}/SYS/exe/hdb/hdbnsutil -recoverRootKeys /hana/shared/{{ SOURCESID }}KEY.rkb --database_name={{ TARGETSID }} --password=${rootkeypassword}"

上記コマンドで指定したルートキーのパスワードは、 AWS Parameter Store に保存されており、以下のように取得します。

rootkeypassword=`aws --region={{ AWSREGION }} ssm get-parameter --name "{{ SOURCESID }}-ROOT-KEY-PASSWORD" --with-decryption --output text --query Parameter.Value`

ステップ5:ターゲットテナントデータベースをリストアする

Amazon S3 バケットに保存されているソースシステムのバックアップを使用して、ターゲットテナントのデータベースをリストアする手順です。ターゲットデータベースインスタンスに backint が設定され、インスタンスに割り当てられた IAM ロールがソースシステムのバックアップが保存されている Amazon S3 バケットにアクセスできる必要があることに注意してください。

オプション1: BACKUP_ID を使用したリストア

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j "RECOVER DATA FOR {{ TARGETSID }} USING SOURCE '{{ SOURCESID }}@{{ SOURCESID }}' USING BACKUP_ID {{ BACKUPID}} USING CATALOG BACKINT USING DATA PATH ('/usr/sap/{{ SOURCESID }}/SYS/global/hdb/backint/DB_{{ SOURCESID }}/') CLEAR LOG"

オプション2: BACKUP_ID とログバックアップを使ったリストア

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j " RECOVER DATABASE FOR {{ TARGETSID }} UNTIL TIMESTAMP '{{ DATEANDTIME }}' CLEAR LOG USING SOURCE '{{ SOURCESID }}@{{SOURCESID }}' USING CATALOG BACKINT USING LOG PATH ('/usr/sap/{{ SOURCESID }}/SYS/global/hdb/backint/DB_{{ SOURCESID }}') USING DATA PATH
('/usr/sap/{{ SOURCESID }}/SYS/global/hdb/backint/DB_{{ SOURCESID }}/')USING BACKUP_ID {{ BACKUPID }} CHECK ACCESS USING BACKINT "

ステップ6:バックアップのルートキーをリストアする(オプション)

このステップはオプションで、ソースシステムのバックアップがバックアップルートキーで保護されている場合のみ必要です。リストアが成功したら、以下のコマンドを使用してターゲット・データベース上でバックアップ・ルート・キーのパスワードを設定します。

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j "ALTER SYSTEM SET ENCRYPTION ROOT KEYS BACKUPPASSWORD "${rootkeypassword}""

上記コマンドで指定したルートキーのパスワードは、 AWS Parameter Store に保存され、以下のように取得されます。

rootkeypassword=`aws --region={{ AWSREGION }} ssm get-parameter --name "{{ TARGETSID }}-ROOT-KEY-PASSWORD" --with-decryption --output text --query Parameter.Value`

ステップ7:ログのバックアップを再開する

最後のステップとして、対象のテナントデータベースでログのバックアップを有効にします。

/usr/sap/{{ TARGETSID }}/HDB{{ TARGETDBSYSTEMNO }}/exe/hdbsql -U {{ TARGETDBSYSTEMKEY }} -j "ALTER SYSTEM ALTER CONFIGURATION (''global.ini'', ''SYSTEM'') SET (''persistence'', ''enable_auto_log_backup'') = ''yes''"

追加のリストアアクティビティがある場合、このソリューションは、上記のようにステップを追加することで簡単にカスタマイズできます。ドキュメントをデプロイしたら、マークアップ・テキストの説明を確認して、ステップの詳細を理解することができます。

実行

CloudFormation で、 Create Stack を選択し、必要なパラメータを入力するか、デフォルトのままにして、 Stack name がアカウントで一意であることを確認します。 Next を選択し、configure stack options で Next を選択し、入力内容を確認し、Create Stack を選択します。注:このテンプレートを再デプロイする場合、古いスタックを削除することを検討してください。

使用法

AWS Systems Manager > ドキュメント > 自己所有 の下にある、指定した名前のドキュメントを選択し、「オートメーションを実行」をクリックします。ドキュメントとステップの説明を読んで、よく理解してください。

復元を実行するために、以下の入力パラメータを提供します。

オプション1: BACKUP_ID を使用したリストア

オプション2: BACKUP_ID およびログバックアップを使用したリストア

「実行」をクリックすると、次の画面で実行状況を確認することができます。各ステップの開始時刻と終了時刻は、以下のように表示されます。

BACKUP_IDを使ったリストアの実行状況

BACKUP_ID とログバックアップリストアの実行状況

おわりに

このブログ記事では、AWS systems manager のドキュメントを使用して、SAP HANA データベースのリストアを自動化することについて学びました。この手順を使用して、システムのリフレッシュ時間を短縮し、手動での作業を減らすことができます。

より詳細な情報は、以下を参照してください。
AWS Backint Agent
AWS Systems Manager

SAP on AWS のイノベーションに関するご質問やお問い合わせは、SAP on AWS チームにご連絡いただくか、aws.com/sap で詳細をご確認ください。今日から AWS で楽しく構築しましょう。

翻訳は Partner SA 松本が担当しました。原文はこちらです。