SAP HANA データベースの Takeover with Handshake

“Takeover with handshake” は、SAP HANA 2.0 SPS04 以降に追加された機能で、新しいデータベースホスト上でSAP HANA システムレプリケーションの引き継ぎを行う前にプライマリーデータベースを (完全に停止するのではなく)一時停止することで、スイッチオーバー時のプライマリーデータベースのダウンタイムを抑えます。

“Takeover with handshake” が開始されると、SAP HANA Recovery Kit は以下の処理を実行します。:

  • データベースインスタンスを、旧プライマリーノードで起動したたままにする。
  • 新しいプライマリーノード(旧セカンダリーノード)でSAP HANA システムレプリケーションの “Takeover with handshake” を実行する 。新しいプリマリーシステムレプリケーションサイトを登録する前に、旧プライマリーノードのデータベースを一時停止のステータスにする。
  • 新しいセカンダリーノード (旧プライマリーノード) の一時停止されたデータベースを停止し、セカンダリーシステムレプリケーションサイトとして再登録する。
  • データベースインスタンスを新しいセカンダリーノードで起動する。

Takeover with Handshake の実行

要件

Takeover with handshake を実行する前に、以下の要件を満たしている必要があります。:

  1. 各サーバーに SAP HANA 2.0 SPS04 以降がインストールされている。
  2. クラスター内のサーバーで保護対象の SAP HANA データベースが In Service になっている。
  3. SAP HANA システムレプリケーションが同期中になっている。

LifeKeeper GUI でTakeover with Handshake を実行する

LifeKeeper GUI でTakeover with Handshake を実行するためには, スタンバイサーバーのリソース上で右クリックし、 “In Service – Takeover with Handshake…” を選択します。

Takeover with handshake の機能が説明された確認用ダイアログが表示されます。:

Perform Takeover をクリックしてTakeover with handshake を開始します。この処理が完了すると 各ノードの SAP HANA リソースのステータスが Standby – SuspendedActive へと切り替わります。

SAP HANA リソースがターゲットサーバーで In Service になったら、‘remoteregisterdb’ のイベントがバックグラウンドで自動的に実行され、セカンダリーデータベースインスタンスを停止、登録、再起動します。SAP HANA リソースを In Service にする間に、このセカンダリーデータベースの再起動のプロセスをフォアグラウンドで行いたい場合は、 /etc/default/LifeKeeper で、 HANA_REGISTER_SECONDARY_DURING_RESTORE=true と設定してください。

‘remoteregisterdb’ のイベントが正常にセカンダリーデータベースインスタンスを再起動できたら、リソースステータスが Standby – HDB Running へ切り替わります。LifeKeeper がその後発生するquickCheck サイクル中にHRS 監視プロセスを開始し、HSR が In sync であることを判断したあと、リソースステータスは、 Standby – In Sync に切り替わります。この時点でSAP HANA データベースは高可用性を提供します。

コマンドラインで Takeover with Handshake を実行する

以下のどちらかのコマンドを実行することによりTakeover with handshake をコマンドラインで実行することも可能です。:

  • /opt/LifeKeeper/bin/hana_takeover_with_handshake -t <HANA Tag> -s <Target Server> [-b]
  • lkcli resource config hana —tag <HANA Tag> —takeover_with_handshake <Target Server>

1番目のコマンドの -b パラメーターは、ターゲットサーバーでどの SAP HANA リソース階層を In Service にするかをコントロールします。-b オプションがない場合は、階層全体 (全ての親リソースと共有された依存関係をもつリソース)が In Service になります。 -b オプションを付けると、指定された SAP HANA リソースとその依存関係が In Service になります。

フェイルバックの動作を制御する

デフォルトでは SAP HANA リソースが、Takeover with handshake の実行中に In Service にならない場合はターゲットサーバーで Out of Service – Failed (OSF) の状態のままになり手動で In Service に戻すことが要求されます。このシナリオにおいて LifeKeeper は自動フェイルバックを行って、旧ホスト上でSAP HANA リソース階層を In Service に戻す設定をすることもできます。 自動フェイルバックは以下の設定を行うことで有効になります。/etc/default/LifeKeeper で HANA_HANDSHAKE_TAKEOVER_FAILBACK=true を設定してください。

一時停止したプライマリーデータベースを再開する

保護対象の SAP HANA データベースが、現在リソースが In Service になっているノードで一時停止される (例えば管理者が、LifeKeeper の外部で Takeover with handshake を手動で実施するためなどの理由で)と、 下記のようにリソースのステータスが、 Active – Suspended および Standby – Primary になります。



このステータスになっている間、すべての SAP HANA リソースの監視は一時停止され、下記のようなメッセージが記録され、問題が解決されるまでSAP HANA リソースが現在 In Service になっているシステムですべてのオープンになっているターミナルに対してブロードキャストされます。:

EMERG:hana:quickCheck:HANA-SHC_HDB00:136377:SAP HANA database HDB00 corresponding to resource HANA-SHC_HDB00 is currently suspended on server sap-rhel81-1 due to actions performed outside of LifeKeeper. Please take the SAP HANA resource out of service on server sap-rhel81-1 and bring it in-service on the server where the database should be registered as primary master. Bringing resource HANA-SHC_HDB00 back in-service on sap-rhel81-1 will resume the suspended database. Resource monitoring for HANA-SHC_HDB00 will be suspended until the issue is resolved.

必要に応じて以下のコマンドを一時停止されているサーバー上で実行することでデータベースを手動で再開することが可能です。:

su - <sid>adm -c “hdbnsutil -sr_resumeSuspendedPrimary”

sudo -iu <sid>adm hdbnsutil -sr_resumeSuspendedPrimary

このコマンドを使用してデータベースを再開した後、プライマリーとして登録されるスタンバイサーバーで以下のコマンドを実行して手動で停止する必要があります。:

su - <sid>adm -c “sapcontrol -nr <InstNum> -function StopWait 600 5”
sudo -iu <sid>adm sapcontrol -nr <InstNum> -function StopWait 600 5

スタンバイサーバーを新しいプライマリーサーバーにする場合は、SAP HANA リソースをSAP HANA リソースのステータスが Standby – Primary になっているサーバーへ切り替えることで解決できます。

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信