SAP HANA リソースのスイッチオーバ
プライマリデータベースインスタンスのスイッチオーバが開始されると、Recovery Kit は次の手順を実行します。
- 前のプライマリノード上のデータベースインスタンスを停止
- システムレプリケーションのテイクオーバを前のセカンダリノードで実行
- 新しいセカンダリノード上のデータベースインスタンスを、新しいプライマリノードへのシステムレプリケーション時に再有効化
- 新しいセカンダリノードのデータベースを起動
SAP HANA リソースの停止
SAP HANA リソースの停止が実行されると、プライマリデータベースのインスタンスのみが終了します。セカンダリデータベースのインスタンスは実行中のままです。
プライマリおよびセカンダリデータベースのインスタンスを停止する場合は、まず “!volatile!noHANAremove_<tag>” フラグを削除する必要があります。これは次のコマンドで行います。
例:
vmlx-sha1:~ # flg_list
!volatile!noHANAremove_HANA-DB_HN1_00
vmlx-sha1:~ # flg_remove -f ‘!volatile!noHANAremove_HANA-DB_HN1_00’
vmlx-sha1:~ # flg_list
これで、プライマリとセカンダリのデータベースインスタンスを停止できます。SAP HANA リソースが再起動されると、“!volatile!noHANAremove_<tag>” フラグが自動的に作成されます。
テストシナリオ
Recovery Kit の動作を理解するには、次のテストを実行します。また、次の要件を満たす必要があります。LifeKeeper および SAP HANA データベースは、インストール手順に従ってインストールと設定を行う必要があります。SAP HANA データベースのリソースはアクティブで、可能なレプリケーションモードの 1 つで実行されています。アクティブレプリケーションモードは、HANA DB リソースのプロパティに正しく入力する必要があります。詳細については、「SAP HANA リソースの作成」セクションのポイント 8 とポイント 17 を参照してください。また、事前に生成済みの保護された IP アドレスに対する依存関係を作成する必要があります。
SAP ホストエージェントのリカバリテスト
以下のように、SAP ホストエージェントのプロセスの状態およびプロセス数を定義します。
vlmx-sha1:~ # /usr/sap/hostctrl/exe/saphostexec –status
saphostexec running (pid = 3818)
sapstartsrv running (pid = 3867)
11:30:49 17.11.2016 LOG: Using PerfDir (DIR_PERF) = /usr/sap/tmp
saposcol running (pid = 3965)
いずれかのプロセスを終了するか、次のコマンド
/usr/sap/hostctrl/exe/saphostexec –stop
を実行して、SAP ホストエージェントの機能に反映します。SAP HANA Recovery Kit は、SAP ホストエージェントが正常に動作していないことを認識し、そのノード上で SAP ホストエージェントを再起動します。この動作は、次のコマンドで確認できます。
tail -f /var/log/lifekeeper.log
SAP HANA リソースはステータスを変更しません。リカバリが正常に終了すると、SAP ホストエージェントは再び完全に機能するようになります。Recovery Kit が SAP ホストエージェントを再起動できない場合、HANA データベースとリソースは以前の状態のままとなります。 SAP ホストエージェントが再度チェックされ、可能な場合は後ほど再起動されます。
SAP HANA インスタンスの sapstartsrv のリカバリテスト
sapstartsrv のリカバリをテストするには、サービスを停止する必要があります。サービスを停止するための方法の 1 つは、ユーザ <sid>adm として次のコマンドを実行して sapstartsrv を終了することです。
sapcontrol -nr <ID> -function Stop
もう 1 つの方法は、sapstartsrv プロセスを強制終了することです。この場合、sapstartsrv は SAP HANA Recovery Kit によって再起動されます。リソースの状態は変わりません。
SAP HANA セカンダリ DB(レプリケーションターゲット)のリカバリテスト
セカンダリデータベースインスタンス(レプリケーションターゲット)に障害が発生した場合、そのノード上のデータベースインスタンスのレプリケーションモードが決定されます。レプリケーションモードが正しく設定されていると、データベースインスタンスが再び起動します。モードがプライマリに設定されている場合、 Recovery Kit は正しいレプリケーションモードを有効にし、データベースインタンスを起動します。
この動作は、ログファイル /var/log/lifekeeper.log を見ることで確認できます。リカバリ後、データベースとレプリケーションの状態は、ユーザ <sid>adm として次のコマンドを使用してテストできます。
sapcontrol -nr 0 -function GetProcessList
hdbnsutil -sr_state
Recovery Kit でセカンダリデータベースのインスタンスを起動できない場合、対応するノードで SAPHANA リソースに障害(OSF)のフラグが立てられます。
起動に失敗した原因が解消されると、SAP HANA Recovery Kit は後続のチェックサイクルでデータベースインスタンスを起動します。リソースは、対応するノードでスタンバイのフラグが立てられます。
SAP HANA プライマリ DB のリカバリテスト
プライマリデータベースインスタンス(レプリケーションソース)で障害が発生した場合、プライマリノード上のデータベースインスタンスのレプリケーションモードが決定されます。レプリケーションモードがプライマリに設定されていると、データベースインスタンスが再び起動します。モードがプライマリに設定されていない場合、Recovery Kit はレプリケーションモードをテイクオーバし、データベースインタンスを起動します。この動作は、ログファイル /var/log/lifekeeper.log を見ることで確認できます。リカバリ後、データベースとレプリケーションの状態は、ユーザ adm として次のコマンドを使用してテストできます。
sapcontrol -nr 0 -function GetProcessList
hdbnsutil -sr_state
プライマリデータベースのインスタンスがそのノードの Recovery Kit によって起動できない場合、LifeKeeper は階層全体を元のセカンダリノードにフェイルオーバします。このノード上で、HANA Recovery Kit はレプリケーションモードのテイクオーバを実行します。このノードはレプリケーションのプライマリノードになります。 障害ノードの場合、プライマリレプリケーションノードへの再有効化が開始されます。これが成功すると、セカンダリデータベースも再起動されます。レプリケーションモードの再有効化に失敗した場合、またはセカンダリノード上のデータベースインスタンスの再起動に失敗した場合、対応するノードで SAP HANA リソースに障害(OSF)というフラグが立てられます。原因を取り除くためには、手動での対応が必要です。プライマリデータベースインスタンスのフェイルオーバに失敗すると、リソースには障害(OSF)のフラグが立てられ、この状態のままとなります。
セカンダリノード障害のテスト(reboot -f, power off)
エラーによりセカンダリノードで障害が発生するとリソースはアクティブノードに残り、レプリケーションは中断されます。セカンダリが再起動され LifeKeeper がアクティブな場合、データベースインスタンスはレプリケーションターゲットとして再起動されます。
プライマリノード障害の場合のフェイルオーバのテスト(reboot -f, power off)
エラーによりプライマリノードで障害が発生すると、他のノードはリソースのテイクオーバを開始します。HANA Recovery Kit も、レプリケーションのプライマリソースとしての役割を担います。障害ノードが再起動されて LifeKeeper がアクティブな場合、データベースインスタンスはそのノード上でレプリケーションターゲットとして再起動されます。
このトピックへフィードバック