SAP HANAリソースのスイッチオーバー
プライマリデータベースインスタンスのスイッチオーバーが開始されると、SAP HANA Recovery Kitは次の手順を実行します。
- データベースインスタンスを以前のプライマリノードで停止する
- 新しいプライマリノード(以前のセカンダリノード)でSAP HANAシステムレプリケーションのテイクオーバーを実行する
- 新しいセカンダリノード(以前のプライマリノード)を、セカンダリSAP HANAシステムレプリケーションサイトとして再登録する
- データベースインスタンスを新しいセカンダリノードで起動する
SAP HANAリソースをIn Serviceにする際に以下のようなメッセージが表示された場合は、プライマリデータベースインスタンスが停止したときにSAP HANAシステムレプリケーションが同期していなかったことを意味します。
ERROR:hana:restore:HANA-SPS_HDB00:136266:The resource HANA-SPS_HDB00 protecting SAP HANA database HDB00 is not in sync. To protect the data LifeKeeper will not restore the resource on $me. Please restore the resource on the previous source server to allow the resync to complete.
したがって、セカンダリデータベースサーバーにまだ複製されていないデータがプライマリデータベースサーバーに存在する可能性があります。このため、LifeKeeperはセカンダリサーバーがプライマリレプリケーションの役割を引き継ぐことを許可しません。この場合、SAP HANAリソース階層を以前のプライマリサーバーでIn Serviceに戻し、再同期を完了することを推奨します。
以前のプライマリサーバーがダウンして回復できない場合、データが同期されていないサーバーでSAP HANAリソースを強制的にオンラインにすることができます。しかし これにより、以前のプライマリサーバーからまだ複製されていないすべてのデータが失われます 。データベース管理者が、このデータの損失が許容可能または不可避であると判断した場合、次のコマンドを使用して非同期データフラグを手動で削除できます。
/opt/LifeKeeper/bin/flg_remove -f '!HANA_DATA_OUT_OF_SYNC_<Tag>'
<Tag> は、LifeKeeperのSAP HANAリソースタグ名です(例:HANA-SPS_HDB00)。非同期データフラグを削除した後、HANAリソースのIn Service操作を再試行します。In Serviceになると、データベースはプライマリSAP HANAシステムレプリケーションの役割を引き継ぎ、以前のプライマリサーバー上の複製されていないデータはすべて失われます。以前のプライマリサーバーが修復されてオンラインに戻るとセカンダリシステムのレプリケーションサイトとして登録され、データベースがレプリケーションターゲットとして再起動されます。
SAP HANA データベースのTakeover with Handshake
“Takeover with handshake” は、SAP HANA 2.0 SPS04 以降に追加された機能で、新しいデータベースホスト上でSAP HANA システムレプリケーションの引き継ぎを行う前にプライマリデータベースを (完全に停止するのではなく)一時停止することで、スイッチオーバー時のプライマリデータベースのダウンタイムを抑えます。SAP HANA Recovery Kit で“Takeover with handshake” を実施する場合は、 Takeover with Handshake を参照してください。
SAP HANAデータベースの停止
LifeKeeperでSAP HANAリソースがOut of Serviceになると、プライマリデータベースインスタンスのみが停止します。セカンダリデータベースインスタンスは、HANAリソース階層のスイッチオーバーまたはフェイルオーバー中のダウンタイムを最小限に抑えるために引き続き実行されます。
例外的な動作を引き起こす2つの特別なケースがあります。
- SAP HANA リソースが Out of Service になっているシステム上において、LifeKeeper フラグ !volatile!hana_leave_db_running_<HANA Tag> が設定されている場合は、LifeKeeper は Out of Service の操作中にデータベースインスタンスを停止しません。このフラグが意図せず設定されている場合は、下記のコマンドを使用して削除することができます。:
/opt/LifeKeeper/bin/flg_remove -f ‘!volatile!hana_leave_db_running_<HANA Tag>’
- SAP HANA リソースが Out of Service になっているシステムにおいてデータベースが一時停止している場合、LifeKeeper は Out of Service の操作中にデータベースインスタンスを停止しません。一時停止されたデータベースインスタンスを起動し続けることで、必要に応じて再開するオプションを残しておくことができます。このシナリオは、LifeKeeper の外部でデータベース管理者による“Takeover with handshake”が手動で行われた際に最も発生しやくなります。必要に応じて一時停止されたデータベースインスタンスは下記のコマンドを使用して手動で停止することが可能です。:
su – <sid>adm -c “sapcontrol -nr <InstNum> -function StopWait 600 5”
<sid> はHANAインストール時に使用した小文字のSAPシステムID、<InstNum> はHDBインスタンス番号です。
すべてのSAP HANAデータベースの停止(メンテナンスモード)
このオプションを選択すると、プライマリHANAリソースがOut of Serviceになり、HANAリソースクラスター内のすべてのHANAデータベースインスタンスが停止します。このオプションにより、バックアップマシンにすぐにフェイルオーバー/スイッチオーバーされる可能性があるため、細心の注意を払って実行する必要があります。 注記: このオプションは、メンテナンス期間中など、セカンダリデータベースインスタンスも停止する必要がある場合にのみ選択してください。
このオプションを使用するには、HANAリソース階層で次の手順を実行します
- 左パネルの下のHANAリソースまたはIn Serviceのサーバーのいずれかを右クリックして、 [Out of Service – Stop HDB on All Nodes] オプションを選択します。
- HANAリソースを確認し、ダイアログボックスに表示される指示に従います。 [Stop All SAP HANA DBs] をクリックしてプロセスを開始します。
- プロセスが終了したら、 [Finish] をクリックしてプロセスを完了します。
- SAP HANAリソースの最終状態は次のように表示されます。
- すべてのメンテナンス作業が完了したら、最後のプライマリシステムでSAP HANAリソース階層をIn Serviceにしてください。
保護対象の SAP HANA データーベースは、SAP HANA リソースが現在 In Service (ISP) になっているサーバー上で次のコマンドを実行することで クラスター内の全てのサーバー上で停止することもできます。
/opt/LifeKeeper/bin/hana_stop_all_dbs -t <HANA Resource Tag>
このトピックへフィードバック