「スプリットブレイン」シナリオは、SAP HANAデータベースが実行され、複数のクラスターノードでSAP HANAのプライマリレプリケーションサイトとして構成されている場合に発生します。スプリットブレインが発生した場合、LifeKeeperは、データベース管理者が問題を手動で解決するまで、すべてのHANAデータベースの監視を一時停止します。
SAP HANAリソース階層で発生する可能性のある一般的なスプリットブレインシナリオは、2種類あります。
- LifeKeeper HANAリソースのスプリットブレイン: HANAリソースは、複数のクラスターノード上のLifeKeeperでアクティブ(ISP)です。この状態は通常、クラスターノード間のコミュニケーションパスに影響を与える一時的なネットワーク障害が原因です。
- SAP HANAシステムレプリケーションのスプリットブレイン: HANAリソースは、LifeKeeperのプライマリノードでアクティブ(ISP)、バックアップノードでスタンバイ(OSU)ですが、データベースは両方のノードでプライマリレプリケーションサイトとして実行および登録されています。この状態は通常、フェイルオーバー中に以前のプライマリノードでデータベースを停止できなかった、データベースのAutostartが有効になっている、またはLifeKeeperの外部のセカンダリレプリケーションサイトでデータベース管理者が "hdbnsutil -sr_takeover" を手動で実行したことが原因です。
各タイプのスプリットブレインシナリオを解決するための推奨事項を以下に示します。
LifeKeeper HANAリソースのスプリットブレインの解決
このスプリットブレインシナリオでは以下のようなメッセージがログに出力され、問題が解決されるまでquickCheckの間隔(デフォルトでは2分)ごとに、開いているすべてのコンソールに表示されます。
EMERG:hana:quickCheck:HANA-SPS_HDB00:136363:WARNING: A temporary communication failure has occurred between servers hana2-1 and hana2-2. Manual intervention is required in order to minimize the risk of data loss. To resolve this situation, please take one of the following resource hierarchies out of service: HANA-SPS_HDB00 on hana2-1 or HANA-SPS_HDB00 on hana2-2. The server that the resource hierarchy is taken out of service on will become the secondary SAP HANA System Replication site.
推奨される解決方法:
- 各クラスターノードでデータベースを調査し、どのインスタンスに最新のデータまたは関連データが含まれているかを確認します。この確認は、データに精通している適任なデータベース管理者が行う必要があります。
- 保持する必要があるデータを含むノードのHANAリソースはLifeKeeperでアクティブ(ISP)のままであり、セカンダリレプリケーションサイトとして再登録されるノードのHANAリソース階層は、LifeKeeperで完全にOut of Serviceになります。階層のサービスを停止するノード上のHANAリソース階層の各リーフリソースを右クリックし、 [Out of Service …] をクリックします。
- SAP HANAリソース階層のサービスがOut of Serviceになると、LifeKeeperは次のquickCheck間隔(デフォルトでは2分)の間にセカンダリノードをセカンダリレプリケーションサイトとして再登録します。レプリケーションが再開されると、アクティブノードに存在しないスタンバイノードのデータは失われます。スタンバイノードがセカンダリレプリケーションサイトとして再登録されると、SAP HANA階層は高い可用性が保たれた状態に戻ります。
SAP HANAシステムレプリケーションのスプリットブレインの解決
このスプリットブレインシナリオでは、次のようなメッセージがログに出力され、問題が解決されるまで、quickCheckの間隔(デフォルトでは2分)ごとに、開いているすべてのコンソールに表示されます。
EMERG:hana:quickCheck:HANA-SPS_HDB00:136234:WARNING: SAP HANA database HDB00 is running and registered as primary master on the following servers: hana2-2, hana2-1. Manual intervention is required in order to minimize the risk of data loss. To resolve this situation, please stop database HDB00 on the standby server by running the command ‘su – spsadm -c “sapcontrol -nr 00 -function StopWait 600 5”’ on that server, allow LifeKeeper to register the standby server as a secondary replication site, then use LifeKeeper to bring resource HANA-SPS_HDB00 in-service on the intended primary replication site.
推奨される解決方法:
- 各クラスターノードでデータベースを調査して、スタンバイノードにアクティブノードには存在しない重要なデータが存在するかどうかを確認します。スプリットブレイン状態の間に重要なデータがスタンバイノードのデータベースにコミットされた場合、データをアクティブノードに手動でコピーする必要があります。これは、データに精通している適任なデータベース管理者が行う必要があります。
- 不足しているデータがスタンバイノード上のデータベースからアクティブノードにコピーされたら、LifeKeeper警告メッセージに示されているコマンドを実行して、スタンバイノード上のデータベースを停止します。
su – <sid>adm -c “sapcontrol -nr <Inst#> -function StopWait 600 5”
<sid> はHANAインストール時の小文字のSAPシステムIDで、 <Inst#> はHDBインスタンスのインスタンス番号です(例:インスタンスHDB00のインスタンス番号は00)。
- データベースが正常に停止したら、LifeKeeperは次のquickCheck間隔(デフォルトでは2分)の間にスタンバイノードをセカンダリレプリケーションサイトとして再登録します。レプリケーションが再開されると、アクティブノードに存在しないスタンバイノードのデータは失われます。スタンバイノードがセカンダリレプリケーションサイトとして再登録されると、SAP HANA階層は高い可用性が保たれた状態に戻り、クラスター内の任意のサーバーでIn Service になります。
SAP HANA マルチターゲットスプリットブレインリカバリー
マルチターゲット構成でスプリットブレインが発生すると、HANA リソースが稼働中の 1 台のサーバーもスタンバイターゲットに接続され、同期される可能性があります。 スタンバイターゲットに接続され、同期しているサーバーがサービスを継続するように選択されている場合、LifeKeeper はサービスを停止したノードに自動的に接続して同期します。 これは推奨されるリカバリー方法です。
ただし、稼働状態を維持するように選択されたノードがスタンバイターゲットに接続されていない場合、LifeKeeper がスタンバイターゲット上のデータベースをリモート登録しようとすると失敗する可能性があります。 その場合、スタンバイターゲットではリモートレプリケーションサイトの登録を手動で解除することが必要になる場合があります。 これにより、LifeKeeper はデータベースを登録できるようになりますが、SAP HANA はターゲットへの全同期を開始する可能性があります。
次のコマンドは、HANA 接続を表示します。
su - spsadm -c "python /usr/sap/SPS/HDB00/exe/python_support/systemReplicationStatus.py --sapcontrol=1"
hana2-2 がスタンバイターゲットに接続されていない場合、結果は次のようになります。
hana2-2# su - spsadm -c "python /usr/sap/SPS/HDB00/exe/python_support/systemReplicationStatus.py --sapcontrol=1" SAPCONTROL-OK: <begin> site/2/REPLICATION_MODE=PRIMARY site/2/SITE_NAME=SiteA local_site_id=2 SAPCONTROL-OK: <end> hana2-2#
hana2-1 が hana2-3 に接続されている場合
hana2-1# su - spsadm -c "python /usr/sap/SPS/HDB00/exe/python_support/systemReplicationStatus.py --sapcontrol=1" SAPCONTROL-OK: <begin> service/ip-12-0-0-237/30001/DATABASE=SYSTEMDB service/ip-12-0-0-237/30001/HOST=hana2-1 service/ip-12-0-0-237/30001/PORT=30001 service/ip-12-0-0-237/30001/SERVICE_NAME=nameserver service/ip-12-0-0-237/30001/VOLUME_ID=1 service/ip-12-0-0-237/30001/SITE_ID=1 : : site/2/SITE_NAME=SiteD site/2/SOURCE_SITE_ID=1 site/2/REPLICATION_MODE=ASYNC site/2/REPLICATION_STATUS=UNKNOWN overall_replication_status=UNKNOWN site/1/REPLICATION_MODE=PRIMARY site/1/SITE_NAME=SiteC local_site_id=1 site/2/SECONDARY_FULLY_SYNCED=False overall_in_sync_status=SYSTEM_NOT_IN_SYNC SAPCONTROL-OK: <end> hana2-1#
hana2-3# su - spsadm -c "python /usr/sap/SPS/HDB00/exe/python_support/systemReplicationStatus.py --sapcontrol=1" SAPCONTROL-OK: <begin> site/2/REPLICATION_MODE=ASYNC site/2/SITE_NAME=SiteD site/2/SOURCE_SITE_ID=1 site/2/PRIMARY_MASTERS=hana2-1 local_site_id=2 SAPCONTROL-OK: <end> hana2-3#
上記のように hana2-2 がサービス停止になった場合、LifeKeeper はデータベースを登録できるようになり、部分的な再同期が発生します。 代わりに hana2-1 がサービス停止になった場合、hana2-2 は hana2-1 を登録できますが、hana2-3 を登録できない可能性があり、hana2-3 の登録を解除するには手動介入が必要になります。
GUI には、hana2-3 のステータスが “Standby – Unknown HSR Status” または “Standby – HSR Error” として表示され、上記の ReplicationStatus.py 出力には hana 2-2 の代わりに引き続き “site/2/PRIMARY_MASTERS=hana2-1” が表示されます。hana2-1 上の LifeKeeper が hana2-3 を登録できるようにするには、まずデータベースの登録を解除する必要があります。
hana2-3# su - spsadm -c "hdbnsutil -sr_unregister" unregistering site ... done. ana2-3#
hana2-3 のリソースの状態は、 “Standy – HSR Disabled”、次に “Standby – Initializing”、 “Standby – Syncing”、最後に “Standby – In Sync”に移行します。 これにより、hana2-3 への全同期が発生する可能性があります。
このトピックへフィードバック