Red Hat Enterprise Linux High Availability Add-On クラスタにおける SAP HANA 多階層システムレプリケーションの構成
以下の情報では、多階層レプリケーション・シナリオで SAP HANA システム・レプリケーションを管理するための Red Hat Enterprise Linux (RHEL) High Availability Add-On クラスタの構成について説明します。 クラスタは IBM® Power® Virtual Server をクラスタノードとして使用します。
SAP HANA 多階層システム・レプリケーション・トポロジーで複数のシステムを接続し、より高いレベルの可用性を実現することができます。 三次 SAP HANA インスタンスは、別のワークスペースの IBM Power Virtual Server、三番目の仮想サーバーインスタンス上で実行される。 Red Hat Enterprise Linux 8 (RHEL) HAアドオンの SAP HANA のリソースエージェントは、3次 SAP HANA インスタンスを手動で管理する必要があります。 三次 SAP HANA システムは、クラスタ外の仮想サーバ・インスタンスにインストールされる。 クラスタ内の引き継ぎ後、3次 SAP HANA インスタンスを手動で再登録する必要があります。
多階層システムのレプリケーション・シナリオでは、第3の仮想サーバー・インスタンス上で第3の SAP HANA。 3つ目の仮想サーバーインスタンスは、別の地理的な場所またはゾーンにある別の IBM Power Virtual Server ワークスペースにデプロイされる。 SAP HANA システムのレプリケーション操作モードは、すべての多階層レプリケーション・レベルで同一でなければならない。 唯一の例外は、プライマリーとセカンダリーの間の logreplay_readaccessと、セカンダリーとターシャリーの間の logreplayの組み合わせである。
ディザスターリカバリー(DR) サイトの3次システムへのテイクオーバーは、手動でトリガーする必要がある。
この情報は、 SAP HANA on Power Virtual Server の高可用性配備を計画しているアーキテクトやスペシャリストを対象としています。
開始前に
IBM Power Virtual Server リファレンスでの SAP アプリケーションの高可用性の実装」 に記載されている一般要件、製品ドキュメント、サポート記事、および SAP ノートを確認してください。
前提条件
- Power Virtual Server の1つのワークスペースの2つの仮想サーバーインスタンスに、 Red Hat High Availabilityクラスタがデプロイされています。 以下の文書に記載されている指示を使用してください。
- 3つ目の仮想サーバー・インスタンスは、 Power Virtual Server の別のワークスペースにデプロイされる。
- SAP HANA は同じ と で3つ目の仮想サーバーインスタンスにインストールされます。
SID
Instance Number
- オプション - 仮想IPアドレスの予約で 説明するように、 NODE3、システムの仮想IPアドレスを予約することができます。 NODE3、この仮想IPアドレスの割り当てと割り当て解除は手動タスクであり、クラスタ操作の一部ではない。
多階層シナリオのセットアップ
この多階層シナリオは、 Red Hat Enterprise Linux High Availability Add-On クラスタにおける SAP HANA スケールアップシステムレプリケーションの構成で 説明されているセットアップの拡張です。 次の手順に進む前に、システム・レプリケーション・クラスターのセットアップを完了してください。
AUTOMATED_REGISTER
クラスタ属性が true
に設定されている場合、クラスタに障害が発生したノードを再統合すると、誤った SAP HANA システム・レプリケーション・モードまたは望ましくない SAP HANA システム・レプリケーション・トポロジでセットアップが行われる可能性があります。 このような問題を回避するには、自動登録を無効にし、障害が発生したノードでクラスタを起動する前に、 hdbnsutil
コマンドを使用して SAP HANA システムを手動で登録します。
クラスタ・ノードで以下のコマンドを実行して、自動登録を無効にします。
pcs resource update SAPHana_${SID}_${INSTNO} AUTOMATED_REGISTER=false
ワークスペース間のネットワーク接続の提供
-
ワークスペースの作成 」の情報を使用して、別の地理的な場所または地域に別のワークスペースを作成します。
-
サブネットを作成し、IP範囲がクラスタの仮想サーバ・インスタンスをホストするワークスペースのサブネットと重ならないようにします。 詳細については、 プライベートネットワークのサブネットの作成を 参照してください。
-
両方のワークスペースで IBM Cloud® 接続を設定し、 IBM Transit Gateway を有効にする。 詳しくは、Power Virtual Server クラウド接続の作成を参照してください。
-
IBM Cloud Transit Gateway を配置し、2つの IBM Power Virtual Server ワークスペースを相互接続する。
IBM Cloud Transit Gateway は、 IBM Power Virtual Server、 IBM Cloud classic、およびVirtual Private Cloud(VPC)インフラの相互接続を可能にし、データを IBM Cloud ネットワーク内に保持する。 IBM Cloud Transit Gateway の計画と展開の詳細については、 IBM Cloud Transit Gateway の計画と IBM Cloud Transit Gateway の注文を 参照してください。
-
トランジットゲートウェイに接続を追加して、 IBM Power Virtual Server 間のネットワーク接続を確立するには、次のページを開きます。 Transit Gateway ページを開いてください。
-
トランジットゲートウェイの名前を選択します。
-
**「接続の追加 (Add connection)」**をクリックします。
-
ネットワーク接続として Power Systems Virtual Serverkを選択し、ワークスペースの場所を選択します。
-
**「追加」**をクリックして、接続を作成します。
環境変数の準備 NODE3
セットアップを簡単にするため、 NODE3 のユーザーID root
、以下の環境変数を用意する。 これらの環境変数は、以降のコマンドで使用される。
NODE3 で、以下の環境変数を含むファイルを作成する。 そして、 SAP HANA システムの構成に応じて、それらを適合させる。
export SID=<SID> # SAP HANA System ID (uppercase)
export sid=<sid> # SAP HANA System ID (lowercase)
export INSTNO=<INSTNO> # SAP HANA Instance Number
export DC3=<Site3> # HANA System Replication Site Name 3
export NODE1=<Hostname 1> # Hostname of virtual server instance 1 (production primary)
export NODE2=<Hostname 2> # Hostname of virtual server instance 2 (production secondary)
export NODE3=<Hostname 3> # Hostname of virtual server instance 3 (production tertiary)
本書の残りの部分でサンプル・コマンドを使用する前に、このファイルをソースしておく必要があります。
例えば、 sap_tier3.sh
というファイルを作成した場合、 NODE3 で以下のコマンドを実行して環境変数を設定する。
source sap_tier3.sh
新しいターミナル・セッションを開始するたびに、前回の source
コマンドを実行しなければならない。 別の方法として、クラスタ構成中に環境変数ファイルを /etc/profile.d
ディレクトリに追加することもできます。 この例では、サーバーにログインするたびにファイルが自動的にソースされる。
仮想サーバーインスタンス間のネットワーク接続の確認
2つのクラスタ・ノード( NODE1 と NODE2 )と NODE3 の間のネットワーク接続を確認します。
-
NODE1 と NODE2 と
ping
NODE3 の両方にログインする。ping -c 3 ${NODE3}
出力例:
# ping -c 3 cl-hdb-3 PING cl-hdb-3 (10.40.20.70) 56(84) bytes of data. 64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=1 ttl=46 time=78.2 ms 64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=2 ttl=46 time=78.3 ms 64 bytes from 10.40.20.70 (10.40.20.70): icmp_seq=3 ttl=46 time=78.2 ms --- cl-hdb-3 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 78.197/78.233/78.264/0.027 ms
-
NODE3 と
ping
NODE1 にログインする。ping -c 3 ${NODE1}
出力例:
# ping -c 3 cl-hdb-1 PING cl-hdb-1 (10.40.10.60) 56(84) bytes of data. 64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=1 ttl=46 time=78.3 ms 64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=2 ttl=46 time=78.2 ms 64 bytes from cl-hdb-1 (10.40.10.60): icmp_seq=3 ttl=46 time=78.3 ms --- cl-hdb-1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 78.245/78.268/78.287/0.229 ms
-
NODE3 と
ping
NODE2 にログインする。ping -c 3 ${NODE2}
出力例:
# ping -c 3 cl-hdb-2 PING cl-hdb-2 (10.40.10.194) 56(84) bytes of data. 64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=1 ttl=46 time=77.6 ms 64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=2 ttl=46 time=79.1 ms 64 bytes from cl-hdb-2 (10.40.10.194): icmp_seq=3 ttl=46 time=77.7 ms --- cl-hdb-2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 77.649/78.129/79.071/0.703 ms
PKI SSFS ストレージ証明書ファイルのコピー先 NODE3
SAP HANA 2.0 レプリケーション・プロセスのデータおよびログ伝送チャネルには、システム PKI SSFS ストレージ証明書ファイルを使用した認証が必要である。
システム PKI SSFS ストレージ証明書ファイルは、 /usr/sap/${SID}/SYS/global/security/rsecssfs/
のサブディレクトリ data
および key
に格納される。
NODE3 で、以下のコマンドを実行して、 SSFS_${SID}.DAT
と SSFS_${SID}.KEY
のファイルを NODE2 からコピーする。
scp ${NODE2}:/usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT /usr/sap/${SID}/SYS/global/security/rsecssfs/data/SSFS_${SID}.DAT
scp ${NODE2}:/usr/sap/${SID}/SYS/global/security/rsecssfs/key/SSFS_${SID}.KEY /usr/sap/${SID}/SYS/global/security/rsecssfs/key/SSFS_${SID}.KEY
SAP HANA システムの起動時に、 NODE3 上のコピーされた PKI SSFS ストレージ証明書がアクティブになる。 したがって、 NODE3 の SAP HANA システムが停止しているときにファイルをコピーすることを推奨する。
NODE3 を三次 SAP HANA システムのレプリケーション・システムとして登録する
SAP HANA システムを三次システムのレプリケーション・インスタンスとして登録します。
-
NODE2 で、以下のコマンドを実行して、このサイトをシステム・レプリケーション・ソース・システムとして有効にします。
sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
出力例:
$ hdbnsutil -sr_enable nameserver is active, proceeding ... successfully enabled system as system replication source site done.
-
NODE3 で、 SAP HANA システムを停止する。
sudo -i -u ${sid}adm -- HDB stop
-
NODE3 で、3次システムを NODE2 に登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC3} \ --remoteHost=${NODE2} \ --remoteInstance=${INSTNO} \ --replicationMode=async \ --operationMode=logreplay \ --online
-
NODE3 で、3次 SAP HANA システムを起動する。
sudo -i -u ${sid}adm -- HDB start
SAP HANA システムのレプリケーション状況の確認
以下のツールを使用して、システムのレプリケーション状況を監視できます。
- SAP HANA コックピット
- SAP HANA スタジオ
hdbnsutil
コマンド行ツールsystemReplicationStatus.py
Python スクリプト- SQL 照会
ステータス情報の一部を取得するにはデータベース接続が必要なため、 systemReplicationStatus.py
スクリプトの完全な出力は、プライマリ・システムでのみ利用できる。
NODE1 では、 systemReplicationStatus.py
Python スクリプトを使用して、システムのレプリケーション ステータスを確認します。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 1
site name: SiteA
システムのレプリケーション・ステータスを表示するには、 hdbnsutil
コマンドを使用します。
すべてのノードで、以下のコマンドを実行してシステムのレプリケーション・ステータスを確認します。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
サンプル出力 NODE1:
# sudo -i -u hdbadm -- hdbnsutil -sr_state
System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~
online: true
mode: primary
operation mode: primary
site id: 1
site name: SiteA
is source system: true
is secondary/consumer system: false
has secondaries/consumers attached: true
is a takeover active: false
is primary suspended: false
Host Mappings:
~~~~~~~~~~~~~~
cl-hdb-1 -> [SiteC] cl-hdb-3
cl-hdb-1 -> [SiteB] cl-hdb-2
cl-hdb-1 -> [SiteA] cl-hdb-1
Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
|---SiteB (syncmem/logreplay)
| |---SiteC (async/logreplay)
Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3
Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async
Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay
Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC
Hint based routing site:
done.
サンプル出力 NODE2:
# sudo -i -u hdbadm -- hdbnsutil -sr_state
System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~
online: true
mode: syncmem
operation mode: logreplay
site id: 2
site name: SiteB
is source system: true
is secondary/consumer system: true
has secondaries/consumers attached: true
is a takeover active: false
is primary suspended: false
is timetravel enabled: false
replay mode: auto
active primary site: 1
primary masters: cl-hdb-1
Host Mappings:
~~~~~~~~~~~~~~
cl-hdb-2 -> [SiteC] cl-hdb-3
cl-hdb-2 -> [SiteB] cl-hdb-2
cl-hdb-2 -> [SiteA] cl-hdb-1
Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
|---SiteB (syncmem/logreplay)
| |---SiteC (async/logreplay)
Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3
Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async
Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay
Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC
Hint based routing site:
done.
サンプル出力 NODE3:
# sudo -i -u hdbadm -- hdbnsutil -sr_state
System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~
online: true
mode: async
operation mode: logreplay
site id: 3
site name: SiteC
is source system: false
is secondary/consumer system: true
has secondaries/consumers attached: false
is a takeover active: false
is primary suspended: false
is timetravel enabled: false
replay mode: auto
active primary site: 2
primary masters: cl-hdb-2
Host Mappings:
~~~~~~~~~~~~~~
cl-hdb-3 -> [SiteC] cl-hdb-3
cl-hdb-3 -> [SiteB] cl-hdb-2
cl-hdb-3 -> [SiteA] cl-hdb-1
Site Mappings:
~~~~~~~~~~~~~~
SiteA (primary/primary)
|---SiteB (syncmem/logreplay)
| |---SiteC (async/logreplay)
Tier of SiteA: 1
Tier of SiteB: 2
Tier of SiteC: 3
Replication mode of SiteA: primary
Replication mode of SiteB: syncmem
Replication mode of SiteC: async
Operation mode of SiteA: primary
Operation mode of SiteB: logreplay
Operation mode of SiteC: logreplay
Mapping: SiteA -> SiteB
Mapping: SiteB -> SiteC
Hint based routing site:
done.
SAP HANA システム・レプリケーション・クラスターのテスト
クラスタが正しく動作していることを確認するためには、クラスタ構成を徹底的にテストすることが不可欠である。 以下の情報は、フェイルオーバー・テスト・シナリオのサンプルをいくつか示していますが、テスト・シナリオの完全なリストではありません。
例えば、各テストケースの説明には以下の情報が含まれる。
- テストされるコンポーネント
- 試験内容
- フェイルオーバー・テスト前の前提条件と初期状態
- 試験手順
- 期待される行動と結果
- リカバリー手順
Test1- プライマリー・データベース・インスタンスの障害テスト
以下の情報を使用して、プライマリ・データベース・インスタンスの障害をテストする。
Test1- 説明
NODE1 上で動作するプライマリ SAP HANA データベースインスタンスのクラッシュをシミュレートする。
Test1- 前提条件
- HANAシステムレプリケーション用の機能的な2ノードRHEL HAアドオンクラスター。
- 両方のクラスタノードがアクティブである。
- クラスターは NODE1 と NODE2 で起動する。
- クラスタリソース
SAPHana_${SID}_${INSTNO}
はAUTOMATED_REGISTER=false
で設定されている。 - SAP HANA システムのレプリケーションステータスを確認する:
- SAP HANA 多階層システムのレプリケーションが有効化され、同期される。
- プライマリ SAP HANA システムは NODE1 で稼働している。
- セカンダリーの SAP HANA システムは NODE2 で稼働している。
- 三次 SAP HANA システムは NODE3 上で動作し、 NODE2 に登録されている。
NODE1 で現在のシステム・レプリケーション・ステータスを確認する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 1
site name: SiteA
Test1- 試験手順
ユーザー ${sid}adm
としてSIGKILLシグナルを送ることで、 SAP HANA プライマリーをクラッシュさせる。
NODE1 で、以下のコマンドを実行する。
sudo -i -u ${sid}adm -- HDB kill-9
Test1- 期待される行動
- SAP HANA NODE1、プライマリ・インスタンスがクラッシュした。
- クラスタは停止したプライマリを検出し、リソースを
undefined
としてマークします。 - クラスターは NODE2 上のセカンダリ SAP HANA システムを昇格させ、プライマリとして引き継ぐ。
- クラスタは NODE1 上の仮想IPアドレスを解放し、 NODE2 上のプライマリでそれを取得します。
- SAP NetWeaver などのアプリケーションが SAP HANA のテナント・データベースに接続されている場合、アプリケーションは自動的に新しいプライマリに再接続する。
NODE1 で、以下のコマンドを実行してクラスタの状態を確認する。
pcs status --full
出力例:
pcs status --full
Cluster name: HDB_cluster
Cluster Summary:
* Stack: corosync
* Current DC: cl-hdb-1 (1) (version 2.0.5-9.el8_4.5-ba59be7122) - partition with quorum
* Last updated: Mon Jul 10 16:00:38 2023
* Last change: Mon Jul 10 15:58:50 2023 by root via crm_attribute on cl-hdb-2
* 2 nodes configured
* 6 resource instances configured
Node List:
* Online: [ cl-hdb-1 (1) cl-hdb-2 (2) ]
Full List of Resources:
* res_fence_ibm_powervs (stonith:fence_ibm_powervs): Started cl-hdb-1
* vip_HDB_00_primary (ocf::heartbeat:IPaddr2): Started cl-hdb-2
* Clone Set: SAPHanaTopology_HDB_00-clone [SAPHanaTopology_HDB_00]:
* SAPHanaTopology_HDB_00 (ocf::heartbeat:SAPHanaTopology): Started cl-hdb-1
* SAPHanaTopology_HDB_00 (ocf::heartbeat:SAPHanaTopology): Started cl-hdb-2
* Clone Set: SAPHana_HDB_00-clone [SAPHana_HDB_00] (promotable):
* SAPHana_HDB_00 (ocf::heartbeat:SAPHana): Master cl-hdb-2
* SAPHana_HDB_00 (ocf::heartbeat:SAPHana): Stopped
Node Attributes:
* Node: cl-hdb-1 (1):
* hana_hdb_clone_state : UNDEFINED
* hana_hdb_op_mode : logreplay
* hana_hdb_remoteHost : cl-hdb-2
* hana_hdb_roles : 1:P:master1::worker:
* hana_hdb_site : SiteA
* hana_hdb_srah : -
* hana_hdb_srmode : sync
* hana_hdb_sync_state : SFAIL
* hana_hdb_version : 2.00.070.00.1679989823
* hana_hdb_vhost : cl-hdb-1
* lpa_hdb_lpt : 10
* master-SAPHana_HDB_00 : -9000
* Node: cl-hdb-2 (2):
* hana_hdb_clone_state : PROMOTED
* hana_hdb_op_mode : logreplay
* hana_hdb_remoteHost : cl-hdb-1
* hana_hdb_roles : 4:P:master1:master:worker:master
* hana_hdb_site : SiteB
* hana_hdb_sra : -
* hana_hdb_srah : -
* hana_hdb_srmode : sync
* hana_hdb_sync_state : PRIM
* hana_hdb_version : 2.00.070.00.1679989823
* hana_hdb_vhost : cl-hdb-2
* lpa_hdb_lpt : 1688997529
* master-SAPHana_HDB_00 : 150
Migration Summary:
* Node: cl-hdb-1 (1):
* SAPHana_HDB_00: migration-threshold=5000 fail-count=1000000 last-failure='Mon Jul 10 15:56:06 2023'
Failed Resource Actions:
* SAPHana_HDB_00_start_0 on cl-hdb-1 'not running' (7): call=51, status='complete', exitreason='', last-rc-change='2023-07-10 15:56:04 +02:00', queued=0ms, exec=1527ms
Tickets:
PCSD Status:
cl-hdb-1: Online
cl-hdb-2: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
NODE2 で、以下のコマンドを実行して、システムのレプリケーション・ステータスをチェックする。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
status system replication site "3": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 2
site name: SiteB
Test1- 回復手順
クラスタリソース SAPHana_${SID}_${INSTNO}
は AUTOMATED_REGISTER=false
で構成されているため、 NODE1 上の SAP HANA システムを NODE2 上のプライマリに手動で登録する必要があります。
NODE1 上の SAP HANA をセカンダリとして登録すると、 SAP HANA システムのレプリケーション・トポロジが変更されます。
SiteC
の NODE3 と SiteA
の NODE1 の両 SAP HANA システムは、 SiteB
の NODE2 で動作するプライマリ SAP HANA データベースのセカンダリとして登録される。
多階層のトポロジーを維持したい場合は、まず NODE3 の SiteC
の SAP HANA システムの登録を解除する必要がある。 そして、 NODE1 の SiteA
にある SAP HANA システムを、 NODE2 の SiteB
にあるプライマリに登録する。 最後に、 NODE3 の SiteC
に SAP HANA システムを登録し、 NODE1 の SiteA
にセカンダリを登録する。
NODE1 で、以下のコマンドを実行して、 NODE2 上のプライマリにシステムを登録する。
sudo -i -u ${sid}adm -- \
hdbnsutil -sr_register \
--name=${DC1} \
--remoteHost=${NODE2} \
--remoteInstance=${INSTNO} \
--replicationMode=syncmem \
--operationMode=logreplay \
--online
NODE1 で、以下のコマンドを実行して、リソースのステータスを確認する。
pcs resource status
クラスタリソース SAPHana_${SID}_${INSTNO}-clone
は、 NODE1 上のステータス Stopped
のままです。
出力例:
# pcs resource status
* vip_HDB_00_primary (ocf::heartbeat:IPaddr2): Started cl-hdb-2
* Clone Set: SAPHanaTopology_HDB_00-clone [SAPHanaTopology_HDB_00]:
* Started: [ cl-hdb-1 cl-hdb-2 ]
* Clone Set: SAPHana_HDB_00-clone [SAPHana_HDB_00] (promotable):
* Masters: [ cl-hdb-2 ]
* Stopped: [ cl-hdb-1 ]
クラスタ・ノードで以下のコマンドを実行して、リソースの障害ステータスをクリアします。
pcs resource cleanup SAPHana_${SID}_${INSTNO}-clone
出力例:
# pcs resource cleanup SAPHana_HDB_00-clone
Cleaned up SAPHana_HDB_00:0 on cl-hdb-2
Cleaned up SAPHana_HDB_00:0 on cl-hdb-1
Cleaned up SAPHana_HDB_00:1 on cl-hdb-2
Cleaned up SAPHana_HDB_00:1 on cl-hdb-1
Waiting for 1 reply from the controller
... got reply (done)
しばらくして、 NODE2 でシステム・レプリケーションのステータスを確認する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-1 | 30001 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-1 | 30007 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-1 | 30003 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True |
status system replication site "3": ACTIVE
status system replication site "1": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 2
site name: SiteB
SAP HANA マルチターゲット環境に変更されたシステムのレプリケーショントポロジー。 プライマリーは NODE2、 SiteB
。
SiteC
の NODE3 と SiteA
の NODE1 の両方がセカンダリーとして登録されている。 別の買収が起こり、 SiteA
の NODE1 が再びプライマリーに昇格した場合、 SiteC
の NODE3 は切り離される。
SiteC
の NODE3 を 3 次システムとして多階層ランドスケープを作成するには、 NODE3 を 3 次システムとして登録する SAP HANA システムレプリケーションシステムと 同様の手順を繰り返し、 NODE1 のセカンダリに NODE3 を登録します。
-
NODE1 で、以下のコマンドを実行して、このサイトをシステム・レプリケーション・ソース・システムとして有効にします。
sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
出力例:
# sudo -i -u hdbadm -- hdbnsutil -sr_enable nameserver is active, proceeding ... successfully enabled system as system replication source site done.
-
NODE3 で、 NODE1 のシステムを
SiteA
に登録する。sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC3} \ --remoteHost=${NODE1} \ --remoteInstance=${INSTNO} \ --replicationMode=async \ --operationMode=logreplay \ --online
# sudo -i -u hdbadm -- hdbnsutil -sr_register --name=SiteC --remoteHost=cl-hdb-1 --remoteInstance=00 --replicationMode=async --operationMode=logreplay --online adding site ... collecting information ... updating local ini files ... done.
-
SAP HANA システム・レプリケーション・ステータスの確認 」の説明に従って、3ノードすべてのシステム・レプリケーション・ステータスを確認します。
Test2- SAPHanaリソースの別のノードへの手動移動のテスト
以下の情報を使用して、SAPHanaリソースの別のノードへの手動移動をテストします。
Test2- 説明
クラスタコマンドを使用して、プライマリインスタンスを別のクラスタノードに移動します。
Test2- 前提条件
- HANAシステムレプリケーション用の機能的な2ノードRHEL HAアドオンクラスター。
- 両方のクラスタノードがアクティブである。
- クラスターは NODE1 と NODE2 で起動する。
- クラスタリソース
SAPHana_${SID}_${INSTNO}
はAUTOMATED_REGISTER=false
で設定されている。 - SAP HANA システムのレプリケーションステータスを確認する:
- HANAシステムのレプリケーションが有効化され、同期している。
- プライマリ SAP HANA システムは NODE2 で稼働している。
- セカンダリーの SAP HANA システムは NODE1 で稼働している。
- 三次 SAP HANA システムは NODE3 上で動作し、 NODE1 に登録されている。
Test2- 試験手順
-
NODE3 で、プライマリを NODE1 に制御移動する前に、三次 HANA システムを停止する。
sudo -i -u ${sid}adm -- HDB stop
-
クラスタ・ノードで以下のコマンドを実行して、プライマリを NODE1 に戻します。
pcs resource move SAPHana_${SID}_${INSTNO}-clone
-
NODE1 でプライマリーがアップされるまで待つ。 そして、 NODE1 で NODE2 をプライマリーに登録する。
NODE2 で、以下のコマンドを実行する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC2} \ --remoteHost=${NODE1} \ --remoteInstance=${INSTNO} \ --replicationMode=syncmem \ --operationMode=logreplay \ --online
-
クラスタ・ノード上で、以下のコマンドを実行してリソースをクリアする。
pcs resource clear SAPHana_${SID}_${INSTNO}-clone
このコマンドは、移動コマンドによって作成された位置の制約をクリアする。 クラスタは NODE2 で SAP HANA システムを起動する。
-
NODE2 で、以下のコマンドを実行して、このサイトをシステム・レプリケーション・ソース・システムとして有効にします。
sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
-
NODE3 で、以下のコマンドを実行し、システムを NODE2 に登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC3} \ --remoteHost=${NODE2} \ --remoteInstance=${INSTNO} \ --replicationMode=async \ --operationMode=logreplay \ --online
-
NODE3、3次HANAシステムを起動する。
sudo -i -u ${sid}adm -- HDB start
-
SAP HANA システム・レプリケーション・ステータスの確認 」の説明に従って、3ノードすべてのシステム・レプリケーション・ステータスを確認します。
Test2- 期待される行動
- クラスターはリソースを移動させるためのロケーション制約を作成する。
- クラスタは、 NODE1 上のセカンダリ HANA システムへのテイクオーバーをトリガーします。
- SAP NetWeaver などのアプリケーションが SAP HANA のテナント・データベースに接続されている場合、アプリケーションは自動的に新しいプライマリに再接続する。
- NODE1 で NODE2 をプライマリーに登録する。
pcs resource clear
コマンドを実行して場所の制約を取り除く。 このコマンドは、 NODE2 上のセカンダリーインスタンスの開始をトリガーする。- NODE3 上の HANA システムを
SiteC
に登録し起動すると、3 次 HANA システムは NODE2 に登録されます。
Test2- 回復手順
リカバリー処置は必要ない。 このテスト・シーケンスにより、 SAP HANA 多階層システムの初期レプリケーション・トポロジーが再構築された。
Test3- プライマリデータベースを実行するノードのテスト障害
以下の情報を使用して、プライマリ・データベースを実行するノードの障害をテストする。
Test3- 説明
プライマリHANAデータベースを実行するノードのクラッシュをシミュレートします。
Test3- 前提条件
- HANAシステムレプリケーション用の機能的な2ノードRHEL HAアドオンクラスター。
- 両方のクラスタノードがアクティブである。
- クラスターは NODE1 と NODE2 で起動する。
- クラスタリソース
SAPHana_${SID}_${INSTNO}
はAUTOMATED_REGISTER=false
で設定されている。 - SAP HANA システムのレプリケーションステータスを確認する:
- HANAシステムのレプリケーションが有効化され、同期している。
- プライマリ SAP HANA システムは NODE1 で稼働している。
- セカンダリーの SAP HANA システムは NODE2 で稼働している。
- セカンダリの SAP HANA システムは NODE3 上で動作し、 NODE2 に登録されている。
Test3- 試験手順
NODE1、 クラッシュシステムリクエストを送信してプライマリをクラッシュさせる。
NODE1 で、以下のコマンドを実行する。
sync; echo c > /proc/sysrq-trigger
Test3- 期待される行動
- NODE1 をシャットダウンする。
- クラスタは故障したノードを検出し、その状態を
OFFLINE
に設定します。 - クラスタは、 NODE2 上のセカンダリ HANA データベースを、新しいプライマリとして引き継ぐようにプロモートします。
- クラスタは NODE2 の仮想IPアドレスを取得します。
- SAP NetWeaver などのアプリケーションが SAP HANA のテナント・データベースに接続されている場合、アプリケーションは自動的に新しいプライマリに再接続する。
- NODE3 上で動作する三次 SAP HANA システムは、まだ NODE2 に登録されている。
NODE2 で SAP HANA システムのレプリケーション状況を確認する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
status system replication site "3": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 2
site name: SiteB
Test3- 回復手順
IBM Cloud コンソールにログインし、 NODE1 を起動する。
-
NODE1 で、以下のコマンドを実行して、 NODE2 上のプライマリにシステムを登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC1} \ --remoteHost=${NODE2} \ --remoteInstance=${INSTNO} \ --replicationMode=syncmem \ --operationMode=logreplay \ --online
-
NODE1 で、以下のコマンドを実行してクラスタ・サービスを開始する。
pcs cluster start
-
クラスタ・ノード上で、以下のコマンドを実行してクラスタの状態を確認します。
pcs status --full
-
NODE2 で、 SAP HANA システムのレプリケーション・ステータスを確認する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ | |SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True | |HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True | |HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True | |SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-1 | 30001 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True | |HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-1 | 30007 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True | |HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-1 | 30003 | 1 |SiteA |YES |SYNCMEM |ACTIVE | | True | status system replication site "3": ACTIVE status system replication site "1": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 2 site name: SiteB
-
Test1- リカバリ手順の 手順を実行して、 NODE3 の SAP HANA システム・レプリケーション多階層トポロジーを
SiteC
で再構築する。 -
Test2 2 の手順を実行し、SAPHana リソースを別のノードに手動で移動して、初期トポロジに戻します。
Test4- セカンダリデータベースインスタンスのテスト失敗
以下の情報を使用して、セカンダリ・データベース・インスタンスの障害をテストする。
Test4- 説明
セカンダリHANAデータベースのクラッシュをシミュレートします。
Test4- 前提条件
- HANAシステムレプリケーション用の機能的な2ノードRHEL HAアドオンクラスター。
- 両ノードともアクティブだ。
- クラスターは NODE1 と NODE2 で起動する。
- クラスタリソース
SAPHana_${SID}_${INSTNO}
はAUTOMATED_REGISTER=false
で設定されている。 - SAP HANA システムのレプリケーションステータスを確認する:
- HANAシステムのレプリケーションが有効で、同期している。
- プライマリ SAP HANA システムは NODE1 で稼働している。
- セカンダリーの SAP HANA システムは NODE2 で稼働している。
- 三次 SAP HANA システムは NODE3 上で動作し、 NODE2 に登録されている。
Test4- 試験手順
ユーザー ${sid}adm
として SIGKILL シグナルを送ることで、 SAP HANA セカンダリをクラッシュさせる。
NODE2 で、以下のコマンドを実行する。
sudo -i -u ${sid}adm -- HDB kill-9
Test4- 期待される行動
- SAP HANA NODE2 クラッシュに関する二次的なもの。
- クラスタは停止したセカンダリHANAシステムを検出し、リソースを
failed
。 - クラスタはセカンダリHANAシステムを再起動します。
- クラスターはシステムのレプリケーションが再び同期したことを検出する。
- NODE3、3次 SAP HANA システムが再び同期する。
NODE1 では、 SAP HANA システムのレプリケーション・ステータスを定期的にチェックし、復旧手順を観察する。
watch -n 5 sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------------ |----------- |----------- |--------------------------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |CONNECTION TIMEOUT |SYNCMEM |ERROR |Communication channel closed | False |
|HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |CONNECTION TIMEOUT |SYNCMEM |ERROR |Communication channel closed | False |
|HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |CONNECTION TIMEOUT |SYNCMEM |ERROR |Communication channel closed | False |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC | |UNKNOWN |UNKNOWN |Site with id '2' is not reachable | False |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC | |UNKNOWN |UNKNOWN |Site with id '2' is not reachable | False |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC | |UNKNOWN |UNKNOWN |Site with id '2' is not reachable | False |
status system replication site "2": ERROR
status system replication site "3": UNKNOWN
overall system replication status: ERROR
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 1
site name: SiteA
Test4- 回復手順
セカンダリHANAインスタンスが起動し、再び同期されるまで待ち(SOK
)、 pcs status
の出力に表示される失敗したリソースアクションをクリーンアップします。
-
クラスタ・ノードで以下のコマンドを実行する。
pcs resource refresh SAPHana_${SID}_${INSTNO}
-
クラスタの状態を確認する。
pcs status --full
Test5- 三次データベースを実行するノードでDR起動をテストする
以下の情報を使用して、プライマリ・ワークスペースの両方のノードの障害をテストする。
Test5- 説明
プライマリおよびセカンダリ SAP HANA データベースを実行するノードのクラッシュをシミュレートする。
Test5- 前提条件
- HANAシステムレプリケーション用の機能的な2ノードRHEL HAアドオンクラスター。
- 両方のクラスタノードがアクティブである。
- クラスターは NODE1 と NODE2 で起動する。
- クラスタリソース
SAPHana_${SID}_${INSTNO}
はAUTOMATED_REGISTER=false
で設定されている。 - SAP HANA システムのレプリケーションステータスを確認する:
- HANAシステムのレプリケーションが有効で、同期している。
- プライマリ SAP HANA システムは NODE1 で稼働している。
- セカンダリーの SAP HANA システムは NODE2 で稼働している。
- 三次 SAP HANA システムは NODE3 上で動作し、 NODE2 に登録されている。
Test5- 試験手順
NODE1、プライマリをクラッシュさせ、 NODE2、セカンダリをクラッシュさせる。両ノードにクラッシュシステムリクエストを送信する。
-
NODE1 で、以下のコマンドを実行する。
sync; echo c > /proc/sysrq-trigger
-
NODE2 で、以下のコマンドを実行する。
sync; echo c > /proc/sysrq-trigger
-
NODE3 で、以下のコマンドを実行し、HANAシステムを新しいプライマリとしてアクティベートする。
sudo -i -u ${sid}adm -- hdbnsutil -sr_takeover
出力例:
# sudo -i -u hdbadm -- hdbnsutil -sr_takeover done.
Test5- 期待される行動
- NODE1 と。 NODE2
- 手動での引き継ぎ後、 NODE3 はプライマリ SAP HANA システムを実行する。
- SAP NetWeaver のようなアプリケーションは、 NODE3 上の SAP HANA システムに接続できる。
NODE3 で、以下のコマンドを実行し、 SAP HANA システムがプライマリとして動作することを確認する。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
出力例:
# sudo -i -u hdbadm -- hdbnsutil -sr_state
System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~
online: true
mode: primary
operation mode: primary
site id: 3
site name: SiteC
is source system: true
is secondary/consumer system: false
has secondaries/consumers attached: false
is a takeover active: false
is primary suspended: false
Host Mappings:
~~~~~~~~~~~~~~
cl-hdb-3 -> [SiteC] cl-hdb-3
Site Mappings:
~~~~~~~~~~~~~~
SiteC (primary/primary)
Tier of SiteC: 1
Replication mode of SiteC: primary
Operation mode of SiteC: primary
Hint based routing site:
done.
Test5- 回復手順
三次システム( SAP HANA )へ移行した後の復旧手順は複雑であり、このセクションの別のテストとして文書化されている。 Test6 セクションで別のテストとして文書化されている。
Test6- 元の SAP HANA 多階層システム・レプリケーション・トポロジーの復元
三次 SAP HANA システムへのテイクオーバー後、元のシステム・レプリケーション・トポロジーに戻すには、以下の情報を使用します。
以下の SAP ドキュメントをチェックしてください。
Test6- 説明
プライマリ・ワークスペースでクラスタを再アクティブ化し、元のシステム・レプリケーション・トポロジを復元します。
Test6- 前提条件
- プライマリワークスペースのHANAシステムレプリケーション用の2ノードRHEL HAアドオンクラスター。
- クラスタの両方の仮想サーバーインスタンスが停止します。
- プライマリ SAP HANA システムは NODE3 で稼働している。
Test6- 試験手順
-
IBM Cloud コンソールにログインし、 NODE1 と NODE2 の両方を起動する。
-
両方のノードが再び利用可能になるまで待つ。
-
NODE1 と NODE2 の両方のクラスタノードで Red Hat HA Add-On クラスタサービスが停止していることを確認します。
-
NODE3 で、 SAP HANA システムのレプリケーションが有効になっていることを確認する。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
-
NODE1 で、以下のコマンドを実行して、ホスト名を NODE3 とする環境変数を設定する。
export NODE3=<Hostname 3> # Hostname of virtual server instance 3 (production tertiary)
-
NODE1 で、以下のコマンドを実行して、 SAP HANA システムを NODE3 のプライマリに登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC1} \ --remoteHost=${NODE3} \ --remoteInstance=${INSTNO} \ --replicationMode=async \ --operationMode=logreplay \ --online
-
NODE1 で、システムのレプリケーション構成を確認する。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
出力例:
System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: false mode: async operation mode: unknown site id: 1 site name: SiteA is source system: unknown is secondary/consumer system: true has secondaries/consumers attached: unknown is a takeover active: false is primary suspended: false is timetravel enabled: false replay mode: auto active primary site: 3 primary masters: cl-hdb-3 done.
-
NODE1 で、 SAP HANA システムを起動し、システムのレプリケーションを開始する。
sudo -i -u ${sid}adm -- HDB start
-
NODE3 で、システムのレプリケーション・ステータスを確認し、 NODE1 のセカンダリが完全に同期するまで待つ。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |-------- |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ | |SYSTEMDB |cl-hdb-3 |30001 |nameserver | 1 | 3 |SiteC |cl-hdb-1 | 30001 | 1 |SiteA |YES |ASYNC |ACTIVE | | True | |HDB |cl-hdb-3 |30007 |xsengine | 2 | 3 |SiteC |cl-hdb-1 | 30007 | 1 |SiteA |YES |ASYNC |ACTIVE | | True | |HDB |cl-hdb-3 |30003 |indexserver | 3 | 3 |SiteC |cl-hdb-1 | 30003 | 1 |SiteA |YES |ASYNC |ACTIVE | | True | status system replication site "1": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 3 site name: SiteC
プライマリロールを NODE1 に戻すには、ダウンタイムウィンドウが必要です。 NODE3 に接続されているすべてのアプリケーションサーバーを停止しなければならない。
ハンドシェイクを伴うテイクオーバーは、 NODE3 上のプライマリ・システム上の全トランザクションを一時停止し、テイクオーバーは、 NODE1 上で残りのすべてのREDOログが利用可能な場合にのみ実行される。
-
NODE1 で以下のコマンドを実行し、プライマリ・ロールを引き継ぐ。
sudo -i -u ${sid}adm -- hdbnsutil -sr_takeover --suspendPrimary
-
NODE1 で、HANAシステムがプライマリとして実行されていることを確認する。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
-
NODE3 で、以下のコマンドを実行して、システムのレプリケーション・ステータスを確認する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------------------------- |------------ | |SYSTEMDB |cl-hdb-3 |30001 |nameserver | 1 | 3 |SiteC |cl-hdb-1 | 30001 | 1 | |PRIMARY | | |IS PRIMARY (e.g. after takeover) | False | |HDB |cl-hdb-3 |30007 |xsengine | 2 | 3 |SiteC |cl-hdb-1 | 30007 | 1 | |PRIMARY | | |IS PRIMARY (e.g. after takeover) | False | |HDB |cl-hdb-3 |30003 |indexserver | 3 | 3 |SiteC |cl-hdb-1 | 30003 | 1 | |PRIMARY | | |IS PRIMARY (e.g. after takeover) | False | status system replication site "1": ERROR overall system replication status: ERROR Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 3 site name: SiteC
以下の要約は、これらの手順の後のステータスを示している。
- NODE1 はプライマリとして実行されるが、アプリケーションは接続されていない。
- NODE2 は起動しているが、 は起動していない。 SAP HANA
- NODE3 が立ち上がり、 SAP HANA suspendPrimary モードでブロックされています。
- Red Hat HA Add-On クラスタサービスが と で停止している。 NODE1 NODE2
-
NODE2 で、以下のコマンドを実行し、 NODE1 のプライマリに登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC2} \ --remoteHost=${NODE1} \ --remoteInstance=${INSTNO} \ --replicationMode=syncmem \ --operationMode=logreplay \ --online
-
NODE2 で、 SAP HANA を起動してレプリケーションを開始する。
sudo -i -u ${sid}adm -- HDB start
-
NODE1 で、システムのレプリケーション・ステータスを確認し、 NODE2 のセカンダリが完全に同期するまで待つ。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |-------- |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ | |SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |YES |SYNC |ACTIVE | | True | |HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |YES |SYNC |ACTIVE | | True | |HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |YES |SYNC |ACTIVE | | True | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: SiteA
以下の要約は、これらの手順の後のステータスを示している。
- NODE1 はプライマリとして実行されるが、アプリケーションは接続されていない。
- NODE2 がセカンダリーとして走る。
- NODE3 が立ち上がり、 SAP HANA suspendPrimary モードでブロックされています。
- Red Hat HA Add-On クラスタサービスが と で停止している。 NODE1 NODE2
-
クラスタ・ノードで以下のコマンドを実行してクラスタを起動する。
pcs cluster start --all
-
クラスタの状態を確認し、再び完全に動作可能であることを確認する。
pcs status --full
以下の要約は、これらの手順の後のステータスを示している。
- NODE1 がプライマリーとして走る。
- NODE2 がセカンダリーとして走る。
- Red Hat HA Add-On クラスタサービスが開始され、クラスタは および 上の システムレプリケーションを管理します。 NODE1 NODE2 SAP HANA
- NODE3 が立ち上がり、 SAP HANA suspendPrimary モードでブロックされています。
-
NODE2 で、以下のコマンドを実行して、システム・レプリケーション・ソース・サイトとして有効にする。
sudo -i -u ${sid}adm -- hdbnsutil -sr_enable
出力例:
# sudo -i -u hdbadm -- hdbnsutil -sr_enable nameserver is active, proceeding ... successfully enabled system as system replication source site done.
-
NODE2 で、システムのレプリケーション構成を確認する。
sudo -i -u ${sid}adm -- hdbnsutil -sr_state
出力例:
# sudo -i -u hdbadm -- hdbnsutil -sr_state System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: true mode: sync operation mode: logreplay site id: 2 site name: SiteB is source system: true is secondary/consumer system: true has secondaries/consumers attached: false is a takeover active: false is primary suspended: false is timetravel enabled: false replay mode: auto active primary site: 1 primary masters: cl-hdb-1 Host Mappings: ~~~~~~~~~~~~~~ cl-hdb-2 -> [SiteB] cl-hdb-2 cl-hdb-2 -> [SiteA] cl-hdb-1 Site Mappings: ~~~~~~~~~~~~~~ SiteA (primary/primary) |---SiteB (sync/logreplay) Tier of SiteA: 1 Tier of SiteB: 2 Replication mode of SiteA: primary Replication mode of SiteB: sync Operation mode of SiteA: primary Operation mode of SiteB: logreplay Mapping: SiteA -> SiteB Hint based routing site: done.
-
NODE3 で、以下のコマンドを実行し、システムを NODE2 に登録する。
sudo -i -u ${sid}adm -- \ hdbnsutil -sr_register \ --name=${DC3} \ --remoteHost=${NODE2} \ --remoteInstance=${INSTNO} \ --replicationMode=async \ --operationMode=logreplay \ --online
-
NODE1 で、以下のコマンドを実行して、新しい SAP HANA システム・レプリケーション・トポロジーを検証する。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
SiteC、 NODE3 上の SAP HANA システムが、 SAP HANA システムのレプリケーション・トポロジーに再表示される。
hdbnsutil -sr_register
コマンドを実行すると、システムは停止し、CONNECTION TIMEOUT
が出力に表示される。出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary|Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |-------- |----- |------------ |--------- |------- |--------- |-------- |--------- |--------- |--------- |------------------ |----------- |----------- |-------------- |------------ | |SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True | |HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True | |HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |YES |SYNCMEM |ACTIVE | | True | |SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |CONNECTION TIMEOUT |ASYNC |UNKNOWN | | False | |HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |CONNECTION TIMEOUT |ASYNC |UNKNOWN | | False | |HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |CONNECTION TIMEOUT |ASYNC |UNKNOWN | | False | status system replication site "2": ACTIVE status system replication site "3": UNKNOWN overall system replication status: UNKNOWN Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: SiteA
-
NODE3 で、以下のコマンドを実行し、三次 HANA システムを起動します。
sudo -i -u ${sid}adm -- HDB start
以下の要約は、これらのステップの後の最終的なステータスを示している。
- NODE1 がプライマリーとして走る。
- NODE2 がセカンダリーとして走る。
- Red Hat HA Add-On クラスタサービスが開始され、クラスタは および 上の システムレプリケーションを管理します。 NODE1 NODE2 SAP HANA
- NODE3 は3次リーグとして走る。
NODE1 で、以下のコマンドを実行して、 SAP HANA システムのレプリケーション・トポロジーを確認します。
sudo -i -u ${sid}adm -- HDBSettings.sh systemReplicationStatus.py
出力例:
# sudo -i -u hdbadm -- HDBSettings.sh systemReplicationStatus.py
|Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary |
| | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced |
|-------- |---------|----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- |------------ |
|SYSTEMDB |cl-hdb-1 |30001 |nameserver | 1 | 1 |SiteA |cl-hdb-2 | 30001 | 2 |SiteB |YES |SYNC |ACTIVE | | True |
|HDB |cl-hdb-1 |30007 |xsengine | 2 | 1 |SiteA |cl-hdb-2 | 30007 | 2 |SiteB |YES |SYNC |ACTIVE | | True |
|HDB |cl-hdb-1 |30003 |indexserver | 3 | 1 |SiteA |cl-hdb-2 | 30003 | 2 |SiteB |YES |SYNC |ACTIVE | | True |
|SYSTEMDB |cl-hdb-2 |30001 |nameserver | 1 | 2 |SiteB |cl-hdb-3 | 30001 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30007 |xsengine | 2 | 2 |SiteB |cl-hdb-3 | 30007 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
|HDB |cl-hdb-2 |30003 |indexserver | 3 | 2 |SiteB |cl-hdb-3 | 30003 | 3 |SiteC |YES |ASYNC |ACTIVE | | True |
status system replication site "2": ACTIVE
status system replication site "3": ACTIVE
overall system replication status: ACTIVE
Local System Replication State
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mode: PRIMARY
site id: 1
site name: SiteA