재해 복구를 위해 SAP HANA scale-Up Multitarget 시스템 복제 구성
초록
보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드 및 문서에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 사항은 향후 릴리스에 걸쳐 점진적으로 구현될 예정입니다. 언어를 보다 포괄적으로 만드는 방법에 대한 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.
Red Hat 문서에 관한 피드백 제공
문서 개선을 위한 의견에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (등록 필요)
1장. 개요
가용성에 대한 수요가 증가함에 따라 하나의 데이터 사본으로는 충분하지 않습니다.
비즈니스 연속성을 보장하기 위해 안정적이고 가용성이 높은 아키텍처는 하나 이상의 복제 사이트에서 데이터를 복제해야 합니다. 다중 대상 시스템 복제를 사용하면 기본 사이트에서 두 개 이상의 보조 사이트에 데이터 변경 사항을 복제할 수 있습니다. 자세한 내용은 SAP HANA Multitarget System Replication 을 참조하십시오.
이 문서에서는 RHEL HA 애드온을 사용하여 SAP HANA scale-Up 시스템 복제 자동화에 설명된 대로 설치된 2-노드 클러스터에서 SAP HANA Multitarget System Replication을 사용하여 재해 복구를 위해 추가 복제 사이트를 구성하는 방법을 설명합니다.
샘플 구성은 다음과 같습니다.
초기 설정은 다음과 같습니다.
- 기본 사이트 1(DC1)을 두 번째 사이트 2(DC2)로 복제
- 기본 사이트 1 (DC1)을 두 번째 사이트 3 (DC3)으로 복제합니다.
기본 사이트에 실패하면 기본 사이트는 보조 사이트 2(DC2)로 전환되고 이전 기본 사이트 1(DC1)은 보조 웹사이트가 됩니다.
장애 조치가 발생하면 이 솔루션을 통해 구성된 기본 사이트도 세 번째 사이트에서 전환됩니다. 장애 조치 후 구성은 다음과 같습니다.
- DC2에서 기본 실행
- DC1에서 2차 실행(DC2에서 동기화됨)
- DC3에서 2차 실행(DC2에서 동기화됨)
장애 조치(failover) 중에 이 인스턴스가 실행 중인 한 remotehost3의 SAP HANA 인스턴스가 새 기본 인스턴스에 자동으로 다시 등록됩니다.
이 문서에서는 주 데이터베이스를 세 번째 사이트로 전환하는 예제도 설명합니다.
데이터베이스에 클라이언트를 연결하려면 추가 네트워크 구성이 필요합니다. 이 문서의 범위에 포함되지 않습니다.
자세한 내용은 다음을 확인하십시오.
2장. 매개 변수
기존의 2-노드 클러스터의 매개 변수는 세 번째 사이트를 설정하는 데 사용됩니다.
매개변수 | 예제 | 설명 |
---|---|---|
SID | RH2 | HANA 데이터베이스의 시스템 ID |
첫 번째 SITE | DC1 | 첫 번째 데이터 센터 이름 / 사이트 |
두 번째 SITE | DC2 | 두 번째 데이터 센터 이름 / 사이트 |
세 번째 SITE | DC3 | 세 번째 데이터 센터 이름 / 사이트 |
InstanceNr | 02 | HANA 인스턴스 번호 |
<Sid>adm uid | 1000 | SAP HANA 관리자 사용자의 사용자 ID(rh2adm) |
sapsys gid | 980 | sapsys의 그룹 ID |
세 개의 HANA 인스턴스는 모두 다음과 같은 값을 사용해야 합니다.
- SID
- InstanceNr
- <Sid>adm uid
- sapsys gid
3장. 사전 요구 사항
솔루션이 작동하려면 다음 요구 사항을 충족해야 합니다.
모든 노드는 동일해야 합니다.
- CPU 및 RAM 수
- 소프트웨어 구성
- RHEL 릴리스(최소 RHEL 8.6 필요)
- 방화벽 설정
- SAP HANA 릴리스 (SAP HANA 2.0 SPS04 이상)
pacemaker 패키지는 클러스터 노드에만 설치되고 resource-agents-sap-hana (0.162.1 이상)의 동일한 버전을 사용해야 합니다.
SAP HANA Multitarget System Replication 을 지원할 수 있으려면 SAP HANA Multitarget 시스템 복제 추가 지원을 참조하십시오. 또한 다음을 설정합니다.
-
use
register_secondaries_on_takeover=true
-
use
log_mode=normal
초기 설정은 RHEL HA 애드온을 사용하여 SAP HANA 스케일업 시스템 복제를 자동화하는 설치 가이드를 기반으로 합니다.
모든 SAP HANA 인스턴스의 시스템 복제 구성은 SAP 요구 사항을 기반으로 합니다. 자세한 내용은 SAP HANA 관리 가이드 를 기반으로 SAP 의 지침을 참조하십시오.
4장. 설치
이 장에서는 추가 SAP HANA 인스턴스 설치에 대해 설명합니다.
4.1. 장애 조치 테스트를 사용하여 2-노드 기본 설치 확인
RHEL HA 애드온을 사용하여 SAP HANA 스케일업 시스템 복제 자동화에 따라 설치가 완료되었는지 확인합니다.
SAP HANA Multitarget System Replication 을 사용하려면 resource-agents-sap-hana 버전이 0.162.1 이상이어야 합니다. 아래 표시된 대로 이를 확인할 수 있습니다.
# rpm -q resource-agents-sap-hana
장애 조치 테스트를 실행하여 환경이 작동하는지 확인할 수 있습니다. SAPHana 리소스를 이동할 수 있습니다. 이 리소스는 Go를 사용하여 Cryostat the SAPHana Resource에도 설명되어 있습니다.
4.2. 세 번째 사이트에 SAP HANA 설치
세 번째 사이트에서는 다음과 같이 두 노드 Pacemaker 클러스터에서 SAP HANA 인스턴스와 동일한 버전 및 매개 변수를 사용하여 SAP HANA를 설치해야 합니다.
매개변수 | 현재의 |
---|---|
SID | RH2 |
InstanceNumber | 02 |
<Sid>adm 사용자 ID | rh2adm 999 |
sapsys 그룹 ID | sapsys 999 |
SAP HANA 설치는 hdblcm
를 사용하여 수행됩니다. 자세한 내용은 hdbclm을 사용한 SAP HANA 설치를 참조하십시오. 선택적으로 Ansible을 사용하여 설치를 수행할 수도 있습니다.
이 장의 예제에서는 다음을 사용합니다.
- 호스트: 사이트 DC1, 사이트 DC2의 clusternode2 및 사이트 DC3의 remotehost3의 clusternode1
- SID RH2
- adminuser rh2adm
4.3. 세 번째 사이트에 SAP HANA 시스템 복제 설정
기존 설치에는 이미 두 노드 클러스터의 기본 및 보조 SAP HANA 인스턴스 간에 SAP HANA 시스템 복제가 구성되어 있습니다. SAP HANA 시스템 복제는 기본 SAP HANA 데이터베이스 인스턴스에서 사용할 수 있습니다.
이 장에서는 사이트 DC3의 remotehost3 노드의 보조 HANA 시스템 복제 사이트로 세 번째 SAP HANA 인스턴스를 등록하는 방법을 설명합니다. 이 단계는 노드 clusternode2에서 원래의 HANA 인스턴스(DC2) 등록과 유사합니다. 자세한 내용은 다음 장에서 설명합니다. 추가 정보가 필요한 경우 SAP HANA 시스템 복제 구성에 대한 일반 사전 요구 사항 도 확인할 수 있습니다.
4.3.1. 주 데이터베이스 확인
다른 데이터베이스가 실행 중이고 시스템 복제가 제대로 작동하는지 확인해야 합니다. 다음 사항에 유의하십시오.
다음을 사용하여 기본 HANA 인스턴스를 검색할 수 있습니다.
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode"
mode: primary
4.3.2. 데이터베이스 키 복사
새 보조 HANA 인스턴스를 등록하려면 기본 HANA 인스턴스의 데이터베이스 키를 새 추가 HANA 복제 사이트에 복사해야 합니다. 이 예제에서 세 번째 사이트의 호스트 이름은 remotehost3입니다.
예를 들어 기본 노드 clusternode1에서 다음을 실행합니다.
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY
4.3.3. 추가 HANA 인스턴스를 보조 HANA 복제 사이트로 등록합니다.
기본 데이터베이스 를 실행 중인 노드의 호스트 이름을 알아야 합니다.
등록을 모니터링하려면 기본 노드의 별도의 터미널에서 다음 명령을 실행할 수 있습니다.
clusternode1:rh2adm> watch python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/python_support/systemReplicationStatus.py
그러면 진행 상황 및 오류가 발생하면 표시됩니다.
세 번째 사이트(DC3)에 HANA 인스턴스를 추가 보조 SAP HANA 인스턴스로 등록하려면 세 번째 사이트 호스트 remotehost3에서 다음 명령을 실행합니다.
remotehost3:rh2adm> hdbnsutil -sr_register --name=DC3 --remoteHost=clusternode1 --remoteInstance=${TINSTANCE} --replicationMode=async --operationMode=logreplay --online
이 예에서 DC3는 세 번째 사이트의 이름이며 clusternode1은 기본 노드의 호스트 이름입니다.
데이터베이스 인스턴스가 이미 실행 중인 경우 중지할 필요가 없습니다. --online
옵션을 사용하면 온라인 상태의 인스턴스를 등록합니다. 그런 다음 인스턴스의 필요한 재시작(중지 및 시작)이 hdbnsutil
자체에 의해 시작됩니다.
옵션 --online
은 HANA 인스턴스가 온라인 및 오프라인일 때(이 옵션은 SAP HANA 2.0 SPS04 이상에서 사용할 수 있음) 모든 경우에 작동합니다.
HANA 인스턴스가 오프라인 상태이면 세 번째 노드가 등록된 후 이를 시작해야 합니다. SAP HANA 시스템 복제 에서 추가 정보를 찾을 수 있습니다.
4.3.4. SAP HANA Multitarget 시스템 복제 자동 등록 지원 추가
register_secondaries_on_takeover = true
라는 SAP HANA 시스템 복제 옵션을 사용하고 있습니다. 이렇게 하면 이전 기본 사이트와 다른 보조 사이트 간의 장애 조치(failover)가 있는 경우 보조 HANA 인스턴스를 새 기본 사이트로 자동으로 다시 등록합니다. 이 옵션은 모든 잠재적인 기본 사이트의 global.ini
파일에 추가해야 합니다.
모든 HANA 인스턴스는 global.ini
에 이 항목이 있어야 합니다.
[system_replication] register_secondaries_on_takeover = true
다음 두 장에서는 global.ini
구성에 대해 자세히 설명합니다.
매개 변수에도 장애 조치가 시작될 때 세 번째 노드의 보조 HANA 인스턴스가 다운 된 경우 이 HANA 인스턴스를 수동으로 다시 등록해야 합니다.
4.3.5. pacemaker 노드에서 global.ini
구성
register_secondaries_on_takeover = true
옵션을 pacemaker 클러스터에서 관리하는 SAP HANA 인스턴스의 글로벌.ini
에 추가해야 합니다. 해당 노드에서 항상 global.ini
파일을 편집하고 다른 노드에서 파일을 복사하지 마십시오.
global.ini
파일은 사이트의 HANA 인스턴스가 처리를 중지한 경우에만 편집해야 합니다.
rh2adm
사용자로 global.ini
를 편집합니다.
clusternode1:rh2adm> vim /usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.ini
예제:
# global.ini last modified 2023-07-14 16:31:14.120444 by hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=02 --replicationMode=syncmem --operationMode=logreplay --name=DC2 [multidb] mode = multidb database_isolation = low singletenant = yes [ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /hana/shared/myHooks execution_order = 1 [persistence] basepath_datavolumes = /hana/data/RH2 basepath_logvolumes = /hana/log/RH2 log_mode = normal enable_auto_log_backup = true [system_replication] register_secondaries_on_takeover = true timetravel_logreplay_mode = auto operation_mode = logreplay mode = primary actual_mode = syncmem site_id = 1 site_name = DC2 [system_replication_site_masters] 2 = clusternode1:30201 [trace] ha_dr_saphanasr = info
이 옵션은 SAP HANA 데이터베이스 인스턴스가 시작된 즉시 활성화됩니다.
4.3.6. 세 번째 사이트에서 global.ini
구성
< sid>adm
사용자로 global.ini
를 편집합니다.
remotehost3:rh2adm> vim /usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.ini
remotehost3에서는 ha_dr_provider_SAPHanaSR
섹션이 사용되지 않습니다.
remotehost3의 global.ini
예:
# global.ini last modified 2023-06-22 17:22:54.154508 by hdbnameserver [multidb] mode = multidb database_isolation = low singletenant = yes [persistence] basepath_datavolumes = /hana/data/RH2 basepath_logvolumes = /hana/log/RH2 log_mode = normal enable_auto_log_backup = true [system_replication] operation_mode = logreplay register_secondaries_on_takeover = true reconnect_time_interval = 5 timetravel_logreplay_mode = auto site_id = 3 mode = syncmem actual_mode = syncmem site_name = DC3 [system_replication_site_masters] 2 = clusternode1:30201
4.3.7. 설치 확인
설치 후 모든 HANA 인스턴스가 실행 중인지와 HANA 시스템 복제가 작동하는지 확인해야 합니다. 가장 쉬운 방법은 시스템 복제 상태 확인에서 자세히 설명된 대로 systemReplicationStatus
를 확인하는 것입니다.
자세한 내용은 데이터베이스 상태 확인 도 참조하십시오.
HANA 시스템 복제가 올바르게 작동하려면 "log_mode" 매개변수가 "normal"로 설정되어 있는지 확인하십시오. 자세한 내용은 SAP HANA 데이터베이스의 log_mode 를 참조하십시오.
설정이 예상대로 작동하는지 확인하려면 다음 장에서 설명하는 테스트 사례를 실행하십시오.
5장. 테스트 사례
설치가 완료되면 몇 가지 기본 테스트를 실행하여 설치를 확인하고 SAP HANA Multitarget System Replication이 작동하는 방법과 실패에서 복구하는 방법을 확인하는 것이 좋습니다. 프로덕션을 시작하기 전에 이러한 테스트 사례를 실행하는 것이 항상 좋습니다. 가능한 경우 프로덕션을 시작하기 전에 변경 사항을 확인하기 위해 테스트 환경을 준비할 수도 있습니다. 가능한 경우 프로덕션에서 적용하기 전에 변경 사항을 확인하기 위해 테스트 환경을 준비할 수도 있습니다.
모든 사례는 다음을 설명합니다.
- 테스트 제목
- 테스트 사전 조건
- 테스트 단계
- 테스트 모니터링
- 테스트 시작
- 예상 결과
- 초기 상태로 돌아가는 방법
클러스터에서 관리하는 새 보조 HANA 복제 사이트로 이전 기본 HANA 복제 사이트를 자동으로 등록하려면 SAPHana 리소스에서 AUTOMATED_REGISTER=true
옵션을 사용할 수 있습니다. 자세한 내용은 AUTOMATED_REGISTER 를 참조하십시오.
예제에 사용되는 HA 클러스터 노드의 이름 및 HANA 복제 사이트(대괄호)는 다음과 같습니다.
- clusternode1 (DC1)
- clusternode2 (DC2)
- remotehost3 (DC3)
다음 매개 변수는 HANA 인스턴스 및 클러스터를 구성하는 데 사용됩니다.
- SID=RH2
- INSTANCENUMBER=02
- CLUSTERNAME=cluster1
테스트 환경의 /etc/hosts
에서 clusternode1-2, remotehost3을 별칭으로 사용할 수도 있습니다.
테스트는 예제 및 사전 조건의 추가 검사를 포함하여 더 자세히 설명합니다. 결국 추가 테스트를 위해 환경을 정리하는 방법의 예가 있습니다.
경우에 따라 clusternode1-2와 remotehost3 간의 거리가 너무 길면 -replicationMode=syncmem
대신 -replcationMode=async
를 사용해야 합니다. 또한 올바른 옵션을 선택하기 전에 SAP HANA 관리자에게 문의하십시오.
5.1. 테스트 준비
테스트를 실행하기 전에 전체 환경이 정확하고 정상적이어야 합니다.
다음을 통해 클러스터와 데이터베이스를 확인해야 합니다.
-
pcs status --full
-
python $DIR_EXECUTABLE/python_support/systemReplicationStatus.py
-
df -h
pcs status --full
의 예는 pcs status를 사용하여 Check cluster status 에서 확인할 수 있습니다. "Migration Summary"에 경고 또는 이전 오류가 있는 경우 테스트를 시작하기 전에 클러스터를 정리해야 합니다.
[root@clusternode1]# pcs resource clear SAPHana_RH2_02-clone
ClusterClean up은 더 많은 방법을 설명합니다. 클러스터 및 모든 리소스를 시작하는 것이 중요합니다.
클러스터 외에도 데이터베이스도 가동 및 실행 중이어야 합니다. 데이터베이스의 적절한 상태를 확인하는 가장 쉬운 방법은 시스템 복제 상태를 확인하는 것입니다. 복제 상태 도 참조하십시오. 이는 주 데이터베이스에서 확인해야 합니다.
기본 노드를 검색하려면 기본 데이터베이스 검색을 선택하거나 다음을 사용합니다.
[root@clusternode1]# pcs status | grep -E "Promoted|Master" [root@clusternode1]# hdbnsutil -sr_stateConfiguration
다음을 실행하여 파일 시스템에 충분한 공간이 있는지 확인합니다.
[root@clusternode1]# df -h
계속하기 전에 시스템 점검 지침을 따르십시오. 환경이 정리되면 테스트를 실행할 준비가 된 것입니다.
5.2. 환경 모니터링
이 섹션에서는 테스트 중 환경을 모니터링하는 데 중점을 두고 있습니다. 이 섹션에서는 변경 사항을 확인하는 데 필요한 모니터만 다룹니다. 전용 터미널에서 이러한 모니터를 실행하는 것이 좋습니다. 테스트 중에 변경 사항을 감지하려면 테스트를 시작하기 전에 모니터링을 시작하는 것이 좋습니다.
Useful Commands 섹션에는 더 많은 예제가 표시됩니다.
5.2.1. 기본 노드 검색
기본 노드를 검색하여 장애 조치를 모니터링하거나 기본 노드에서 실행될 때 복제 상태에 대한 정보만 제공하는 특정 명령을 실행해야 합니다.
기본 노드를 검색하려면 다음 명령을 < sid>adm
사용자로 실행할 수 있습니다.
clusternode1:rh2adm> watch -n 5 'hdbnsutil -sr_stateConfiguration | egrep -e "primary masters|^mode"'
출력 예: clusternode2가 기본 데이터베이스인 경우:
mode: syncmem primary masters: clusternode2
기본 데이터베이스를 실행하는 노드의 출력은 다음과 같습니다.
mode: primary
5.2.2. 복제 상태 확인
복제 상태에는 주 데이터베이스 노드와 복제의 현재 상태 간의 관계가 표시됩니다.
복제 상태를 검색하려면 < sid>adm
사용자로 실행할 수 있습니다.
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration
시스템 복제 상태의 변경 사항을 영구적으로 모니터링하려면 다음 명령을 실행하십시오.
clusternode1:rh2adm> watch -n 5 'python /usr/sap/${SAPSYSTEMNAME}/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'
이 예제에서는 현재 반환 코드를 결정합니다.
반환 코드(상태)가 15이면 복제 상태가 정상입니다. 다른 반환 코드는 다음과 같습니다.
- 10: NoHSR
- 11: 오류
- 12: 알 수 없음
- 13: 초기화
- 14: 동기화
- 15: active
새 보조를 등록하는 경우 기본 노드의 별도의 창에서 실행할 수 있으며 복제 진행 상황을 확인할 수 있습니다. 장애 조치(failover)를 모니터링하려는 경우 이전 주 데이터베이스 서버는 물론 새 주 데이터베이스 서버에서 병렬로 실행할 수 있습니다.If you want to monitor a failover, you can run it in parallel on the old primary as well as on the new primary database server. 자세한 내용은 Check SAP HANA System Replication Status 를 참조하십시오.
5.2.3. /var/log/messages
항목 확인
Pacemaker에서 /var/log/messages
파일에 많은 정보를 쓰고 있습니다. 장애 조치 중에 이 메시지 파일에 많은 수의 메시지가 기록됩니다. SAP HANA 리소스 에이전트에 따라 중요한 메시지만 팔로우하려면 pacemaker SAP 리소스의 자세한 활동을 필터링하는 것이 좋습니다. 단일 클러스터 노드에서 메시지 파일을 확인하는 것으로 충분합니다.
예를 들어 다음 별칭을 사용할 수 있습니다.
[root@clusternode1]# tmsl='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register|WAITING4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT"'
별도의 창에서 tmsl
을 실행하여 테스트 진행 상황을 모니터링합니다. 모니터 장애 조치 및 동기화 상태 예제도 확인하십시오.
5.2.4. 클러스터 상태
클러스터 상태를 확인하는 방법은 여러 가지가 있습니다.
클러스터가 실행 중인지 확인합니다.
-
pcs 클러스터 상태
-
클러스터 및 모든 리소스를 확인합니다.
-
pcs status
-
클러스터, 모든 리소스 및 모든 노드 속성을 확인합니다.
-
pcs status --full
-
리소스만 확인합니다.
-
pcs 리소스
-
pcs status --full
명령은 필요한 모든 정보를 제공합니다. 변경 사항을 모니터링하려면 watch를 사용하여 이 명령을 실행할 수 있습니다.
[root@clusternode1]# watch pcs status --full
출력 예 및 추가 옵션은 클러스터 상태 확인 에서 확인할 수 있습니다.
5.2.5. leftovers 검색
다음 테스트를 실행할 준비가 되었는지 확인하려면 이전 테스트의 남은 기간을 수정하거나 제거해야 합니다.
STONITH
는 클러스터의 노드를 펜싱하는 데 사용됩니다.-
detect:
[root@clusternode1]# pcs stonith history
-
수정:
[root@clusternode1]# pcs stonith cleanup
-
detect:
여러 기본 데이터베이스:
detect:
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration | grep -i primary
동일한 기본 노드를 식별해야 합니다.
-
수정:
--force_full_replica
옵션을 사용하여 잘못된 기본 사항을 다시 등록합니다.
이동으로 인한 위치 제한:
detect:
[root@clusternode1]# pcs constraint location
warning 섹션을 확인합니다.
-
수정:
[root@clusternode1]# pcs resource clear <clone-resource-which was moved>
보조 복제 관계:
-
detect: 기본 데이터베이스에서
clusternode1:rh2adm> python $DIR_EXECU Cryostat/python_support/systemReplicationStatus.py를 실행합니다.
- 수정: 보조 데이터베이스를 등록 취소하고 다시 등록합니다.
-
detect: 기본 데이터베이스에서
Check siteReplicationMode (모든 SAP HANA 노드에서 동일한 출력)
-
clusternode1:rh2adm> hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode
-
pcs 속성:
-
detect:
[root@clusternode1]# pcs property config
-
수정:
[root@clusternode1]# pcs 속성 설정 <key=value>
-
detect:
명확한
유지 관리 모드
.-
[root@clusternode1]# pcs property set maintenance-mode=false
-
log_mode:
detect:
clusternode1:rh2adm> python systemReplicationStatus.py
는 일반적으로
log_mode
가 필요한 복제 상태에 응답합니다.log_mode
는 hdbsql을 사용하여 Inifile 내용을 확인하는 데 설명된 대로 감지할 수 있습니다.-
수정:
log_mode
를 normal로 변경하고 주 데이터베이스를 다시 시작합니다.
CIB 항목:
detect: 클러스터 정보 베이스의 SFAIL 항목입니다.
CIB 항목을 찾아서 제거하려면 클러스터 일관성 확인을 참조하십시오.
cleanup/clear:
detect:
[root@clusternode1]# pcs status --full
종종 오류 또는 경고를 표시합니다. 리소스를 정리/삭제할 수 있으며 모든 것이 정상이면 아무 일도 발생하지 않습니다. 다음 테스트를 실행하기 전에 환경을 정리할 수 있습니다.
수정할 예제:
[root@clusternode1]# pcs resource clear <name-of-the-clone-resource
>[root@clusternode1]# pcs resource cleanup <name-of-the-clone-resource
>
이 기능은 기존 환경에 문제가 있는지 확인하려는 경우에도 유용합니다.
자세한 내용은 Useful 명령을 참조하십시오.
5.3. 테스트 1: 활성 세 번째 사이트와 함께 기본 노드의 Cryostat
테스트 제목 | 세 번째 사이트를 자동으로 다시 등록합니다. 삭제 후 SOK에 동기화 상태가 변경됩니다. |
테스트 사전 조건 |
|
테스트 단계 |
|
테스트 모니터링 |
세 번째 사이트에서
보조 노드에서 root: |
테스트 시작 | 클러스터 명령을 실행합니다.
|
예상 결과 | 사이트 3의 모니터 명령에서 기본 마스터가 clusternode1에서 clusternode2로 변경됩니다.
리소스를 지우면 동기화 상태가 |
초기 상태로 돌아가는 방법 | 테스트를 두 번 실행합니다. |
(*)
remotehost3:rh2adm> watch hdbnsutil -sr_state [root@clusternode1]# tail -1000f /var/log/messages |egrep -e ‘SOK|SWAIT|SFAIL’
자세한 설명
clusternode1 또는 clusternode2에서 root로 클러스터의 초기 상태를 확인합니다.
[root@clusternode1]# pcs status --full Cluster name: cluster1 Cluster Summary: * Stack: corosync * Current DC: clusternode1 (1) (version 2.1.2-4.el8_6.6-ada5c3b36e2) - partition with quorum * Last updated: Mon Sep 4 06:34:46 2023 * Last change: Mon Sep 4 06:33:04 2023 by root via crm_attribute on clusternode1 * 2 nodes configured * 6 resource instances configured Node List: * Online: [ clusternode1 (1) clusternode2 (2) ] Full List of Resources: * auto_rhevm_fence1 (stonith:fence_rhevm): Started clusternode1 * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode2 * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode1 * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Started clusternode1 Node Attributes: * Node: clusternode1 (1): * hana_rh2_clone_state : PROMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode2 * hana_rh2_roles : 4:P:master1:master:worker:master * hana_rh2_site : DC1 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : PRIM * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode1 * lpa_rh2_lpt : 1693809184 * master-SAPHana_RH2_02 : 150 * Node: clusternode2 (2): * hana_rh2_clone_state : DEMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode1 * hana_rh2_roles : 4:S:master1:master:worker:master * hana_rh2_site : DC2 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : SOK * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode2 * lpa_rh2_lpt : 30 * master-SAPHana_RH2_02 : 100 Migration Summary: Tickets: PCSD Status: clusternode1: Online clusternode2: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
이 출력은 HANA가 기본 SAP HANA 서버인 clusternode1에서 승격되고 복제 리소스의 이름은 승격 가능한 SAPHana_RH2_02-clone임을 보여줍니다.
테스트 중에 이를 별도의 창에서 실행하여 변경 사항을 확인할 수 있습니다.[root@clusternode1]# watch pcs status --full
SAP HANA 복제 리소스의 이름을 식별하는 또 다른 방법은 다음과 같습니다.
[root@clusternode2]# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * Started: [ clusternode1 clusternode2 ] * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * Promoted: [ clusternode2 ] * Unpromoted: [ clusternode1 ]
테스트를 시작하기 전에 별도의 터미널 창의 remotehost3에서 기본 서버 시작 모니터링을 보려면 다음을 수행합니다.
remotehost3:rh2adm> watch 'hdbnsutil -sr_state | grep "primary masters"
출력은 다음과 같습니다.
Every 2.0s: hdbnsutil -sr_state | grep "primary masters" remotehost3: Mon Sep 4 08:47:21 2023 primary masters: clusternode1
테스트 중에 예상되는 출력은 clusternode2로 변경됩니다.
위에서 검색한 복제 리소스를 clusternode2로 이동하여 테스트를 시작합니다.
[root@clusternode1]# pcs resource move SAPhana_RH2_02-clone clusternode2
remotehost3의 모니터 출력은 다음과 같이 변경됩니다.
Every 2.0s: hdbnsutil -sr_state | grep "primary masters" remotehost3: Mon Sep 4 08:50:31 2023 primary masters: clusternode2
Pacemaker는 복제 리소스를 이동하기 위한 위치 제약 조건을 생성합니다. 이 작업은 수동으로 제거해야 합니다. 다음을 사용하여 제약 조건을 확인할 수 있습니다.
[root@clusternode1]# pcs constraint location
이 제약 조건을 제거해야 합니다.
복제 리소스를 지워 위치 제약 조건을 제거합니다.
[root@clusternode1]# pcs resource clear SAPhana_RH2_02-clone Removing constraint: cli-prefer-SAPHana_RH2_02-clone
리소스를 정리합니다.
[root@clusternode1]# pcs resource cleanup SAPHana_RH2_02-clone Cleaned up SAPHana_RH2_02:0 on clusternode2 Cleaned up SAPHana_RH2_02:1 on clusternode1 Waiting for 1 reply from the controller ... got reply (done)
테스트 결과
- remotehost3의 "기본 마스터" 모니터에 새 기본 노드로 즉시 전환해야 합니다.
-
클러스터 상태를 확인하면 이전 보조가 승격되고 이전 주가 다시 등록되고
Clone_State
는Promoted
에서Undefined
에서WAITINGFORLPA
에서DEMOTED
로 변경됩니다. -
보조 서버는
SAPHana
모니터가 장애 조치 후 처음으로 시작될 때sync_state
를SFAIL
로 변경합니다. 기존 위치 제약 조건으로 인해 리소스를 지우고 짧은 시간 후에 보조 보조의sync_state
가SOK
로 다시 변경됩니다. - 보조가 승격됩니다.
초기 상태를 복원하려면 다음 테스트를 실행하면 됩니다. 테스트를 완료한 후 정리 를 실행하십시오.
5.4. 테스트 2: 기본 노드가 수동 세 번째 사이트를 사용하는 경우
테스트 제목 | 중지된 세 번째 사이트에 대한 재등록이 없습니다. 세 번째 위치가 다운된 경우에도 페일오버가 작동합니다. |
테스트 사전 조건 |
|
테스트 단계 |
|
테스트 시작 |
클러스터 명령 실행: |
예상 결과 | DC3에서는 변경되지 않습니다. SAP HANA 시스템 복제는 오래된 관계를 유지합니다. |
초기 상태로 돌아가는 방법 | DC3를 새로 등록하고 SAP HANA를 시작합니다. |
자세한 설명
clusternode1 또는 clusternode2에서 root로 클러스터의 초기 상태를 확인합니다.
[root@clusternode1]# pcs status --full Cluster name: cluster1 Cluster Summary: * Stack: corosync * Current DC: clusternode1 (1) (version 2.1.2-4.el8_6.6-ada5c3b36e2) - partition with quorum * Last updated: Mon Sep 4 06:34:46 2023 * Last change: Mon Sep 4 06:33:04 2023 by root via crm_attribute on clusternode1 * 2 nodes configured * 6 resource instances configured Node List: * Online: [ clusternode1 (1) clusternode2 (2) ] Full List of Resources: * auto_rhevm_fence1 (stonith:fence_rhevm): Started clusternode1 * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode2 * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode1 * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Started clusternode1 Node Attributes: * Node: clusternode1 (1): * hana_rh2_clone_state : PROMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode2 * hana_rh2_roles : 4:P:master1:master:worker:master * hana_rh2_site : DC1 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : PRIM * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode1 * lpa_rh2_lpt : 1693809184 * master-SAPHana_RH2_02 : 150 * Node: clusternode2 (2): * hana_rh2_clone_state : DEMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode1 * hana_rh2_roles : 4:S:master1:master:worker:master * hana_rh2_site : DC2 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : SOK * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode2 * lpa_rh2_lpt : 30 * master-SAPHana_RH2_02 : 100 Migration Summary: Tickets: PCSD Status: clusternode1: Online clusternode2: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
이 예제의 출력은 HANA가 기본 SAP HANA 서버인 clusternode1에서 승격되고 복제 리소스 이름은
SAPHana_RH2_02-clone
임을 보여줍니다. HANA 전에 테스트 3을 실행하는 경우 clusternode2에서 승격될 수 있습니다.remotehost3에서 데이터베이스를 중지합니다.
remotehost3:rh2adm> HDB stop hdbdaemon will wait maximal 300 seconds for NewDB services finishing. Stopping instance using: /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function Stop 400 12.07.2023 11:33:14 Stop OK Waiting for stopped instance using: /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function WaitforStopped 600 2 12.07.2023 11:33:30 WaitforStopped OK hdbdaemon is stopped.
remotehost3의 기본 데이터베이스를 확인합니다.
remotehost3:rh2adm> hdbnsutil -sr_stateConfiguration| grep -i "primary masters" primary masters: clusterclusternode2
클러스터 노드의 클러스터의 현재 기본 사항을 확인합니다.
[root@clusterclusternode1]# pcs resource | grep Masters * Masters: [ clusternode2 ]
sr_state
를 확인하여 SAP HANA 시스템 복제 관계를 확인합니다.clusternode2:rh2adm> hdbnsutil -sr_state System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: true mode: primary operation mode: primary site id: 2 site name: DC1 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: ~~~~~~~~~~~~~~ clusternode1 -> [DC3] remotehost3 clusternode1 -> [DC1] clusternode1 clusternode1 -> [DC2] clusternode2 Site Mappings: ~~~~~~~~~~~~~~ DC1 (primary/primary) |---DC3 (syncmem/logreplay) |---DC2 (syncmem/logreplay) Tier of DC1: 1 Tier of DC3: 2 Tier of DC2: 2 Replication mode of DC1: primary Replication mode of DC3: syncmem Replication mode of DC2: syncmem Operation mode of DC1: primary Operation mode of DC3: logreplay Operation mode of DC2: logreplay Mapping: DC1 -> DC3 Mapping: DC1 -> DC2 done.
SAP HANA 시스템 복제 관계에는 여전히 DC2 및 DC3에 복제되는 하나의 기본(DC1)이 있습니다. 아래 remotehost3의 복제 관계는 다음을 사용하여 표시할 수 있습니다.
remothost3:rh2adm> hdbnsutil -sr_stateConfiguration System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ mode: syncmem site id: 3 site name: DC3 active primary site: 1 primary masters: clusternode1 done.
오프라인 상태인 remotehost3의 데이터베이스는 global.ini
파일의 항목을 확인합니다.
테스트 시작: 클러스터에서 장애 조치(failover)를 시작하여
SAPHana-clone-resource
예제를 이동합니다.[root@clusternode1]# pcs resource move SAPHana_RH2_02-clone clusternode2
참고SAPHana가 clusternode2에서 승격된 경우 복제 리소스를 clusternode1로 이동해야 합니다. 이 예제에서는 SAPHana가 clusternode1에서 승격될 것으로 예상합니다.
출력이 없습니다. 이전 테스트와 유사하게 위치 제약 조건이 생성되고 다음과 같이 표시할 수 있습니다.
[root@clusternode1]# pcs constraint location Location Constraints: Resource: SAPHana_RH2_02-clone Enabled on: Node: clusternode1 (score:INFINITY) (role:Started)
클러스터가 제대로 보이는 경우에도 이 제약 조건은 제약 조건을 제거하지 않는 한 다른 장애 조치를 방지합니다. 한 가지 방법은 리소스를 지우는 것입니다.
리소스를 지웁니다.
[root@clusternode1]# pcs constraint location Location Constraints: Resource: SAPHana_RH2_02-clone Enabled on: Node: clusternode1 (score:INFINITY) (role:Started) [root@clusternode1]# pcs resource clear SAPHana_RH2_02-clone Removing constraint: cli-prefer-SAPHana_RH2_02-clone
리소스를 정리합니다.
[root@clusternode1]# pcs resource cleanup SAPHana_RH2_02-clone Cleaned up SAPHana_RH2_02:0 on clusternode2 Cleaned up SAPHana_RH2_02:1 on clusternode1 Waiting for 1 reply from the controller ... got reply (done)
현재 상태를 확인합니다. 동기화 중이어야 하는 복제 상태를 표시하는 세 가지 방법이 있습니다. remotehost3에서 기본부터 시작합니다.
remotehost3:rh2adm> hdbnsutil -sr_stateConfiguration| grep -i primary active primary site: 1 primary masters: clusternode1
출력에 기본을 clusternode2로 이동하기 전에 먼저 시작된 사이트 1 또는 clusternode1이 표시됩니다. 다음으로 새 주에서 시스템 복제 상태를 확인합니다. 먼저 새 기본 설정을 감지합니다.
[root@clusternode1]# pcs resource | grep Master * Masters: [ clusternode2 ]
여기서는 remotehost3을 다시 등록해야 하는 불일치가 있습니다. 테스트를 다시 실행하면 기본 설정을 원래 clusternode1로 다시 전환할 수 있습니다. 이 경우 시스템 복제가 작동하는지 확인하는 세 번째 방법이 있습니다. 기본 노드에서는 clusternode2를 실행합니다.
clusternode2:rh2adm> cdpy clusternode2:rh2adm> python $DIR_EXECUTABLE/python_support/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 |clusternode2 |30201 |nameserver | 1 | 2 |DC2 |clusternode1 | 30201 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode2 |30207 |xsengine | 2 | 2 |DC2 |clusternode1 | 30207 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode2 |30203 |indexserver | 3 | 2 |DC2 |clusternode1 | 30203 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | status system replication site "1": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 2 site name: DC2
이 출력에 remotehost3이 표시되지 않으면 remotehost3을 다시 등록해야 합니다. 등록하기 전에 기본 노드에서 다음을 실행하여 등록 진행 상황을 확인하십시오.
clusternode2:rh2adm> watch python $DIR_EXECUTABLE/python_support/systemReplicationStatus.py
이제 다음 명령을 사용하여 remotehost3을 다시 등록할 수 있습니다.
remotehost3:rh2adm> hdbnsutil -sr_register --remoteHost=clusternode2 --remoteInstance=${TINSTANCE} --replicationMode=async --name=DC3 --remoteName=DC2 --operation Mode=logreplay --online adding site ... collecting information ... updating local ini files ... done.
remotehost3의 데이터베이스가 아직 시작되지 않더라도 시스템 복제 상태 출력에서 세 번째 사이트를 볼 수 있습니다.
remotehost3에서 데이터베이스를 시작하여 등록을 완료할 수 있습니다.remotehost3:rh2adm> HDB start StartService Impromptu CCC initialization by 'rscpCInit'. See SAP note 1266393. OK OK Starting instance using: /usr/sap/RH2/SYS/exe/hdb/sapcontrol -prot NI_HTTP -nr 02 -function StartWait 2700 2 04.09.2023 11:36:47 Start OK
위에서 시작한 모니터에 remotehost3의 동기화가 즉시 표시됩니다.
- 다시 전환하려면 테스트를 다시 실행합니다. 선택적 테스트 중 하나는 primary를 remotehost3의 global.ini에 구성한 노드로 전환한 다음 데이터베이스를 시작하는 것입니다. 데이터베이스가 표시될 수 있지만 다시 등록하지 않는 한 시스템 복제 상태의 출력에 표시되지 않습니다.
자세한 내용은 Check SAP HANA System Replication status 에서도 참조하십시오.
5.5. 테스트 3: 기본 노드의 third site
테스트 제목 | 세 번째 사이트로 기본을 장애 조치합니다. 보조 부분은 세 번째 사이트에 다시 등록됩니다. |
테스트 사전 조건 |
|
테스트 단계 |
클러스터를
HANA 데이터베이스는 |
테스트 시작 |
SAP HANA commandon remotehost3: |
테스트 모니터링 |
세 번째 사이트에서 run: |
예상 결과 |
|
초기 상태로 돌아가는 방법 |
자세한 설명
Check database 를 사용하여 데이터베이스가 실행 중인지 확인하고 복제 상태를 확인합니다.
clusternode2:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters"
출력은 예를 들면 다음과 같습니다.
mode: syncmem primary masters: clusternode1
이 경우 기본 데이터베이스는 clusternode1입니다. clusternode1에서 이 명령을 실행하면 다음을 얻을 수 있습니다.
mode: primary
이 기본 노드에서는 시스템 복제 상태를 표시할 수도 있습니다. 다음과 같이 표시됩니다.
clusternode1:rh2adm> cdpy clusternode1:rh2adm> python 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 |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |remotehost3 | 30201 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |remotehost3 | 30207 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |remotehost3 | 30203 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | True | |SYSTEMDB |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | status system replication site "3": ACTIVE status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1
- 이제 적절한 환경이 있고 별도의 창에서 모든 3개의 노드에서 시스템 복제 상태를 모니터링할 수 있습니다.
테스트를 시작하기 전에 3개의 모니터를 시작해야 합니다. 테스트가 실행되면 출력이 변경됩니다. 테스트가 완료되지 않는 한 계속 실행하십시오.
기존 기본 노드에서 clusternode1은 테스트 중에 별도의 창에서 실행되었습니다.
clusternode1:rh2adm> watch -n 5 'python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?`
clusternode1의 출력은 다음과 같습니다.
Every 5.0s: python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicati... clusternode1: Tue XXX XX HH:MM:SS 2023 |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 |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |remotehost3 | 30201 | 3 |DC3 |YES | ASYNC |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |remotehost3 | 30207 | 3 |DC3 |YES | ASYNC |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |remotehost3 | 30203 | 3 |DC3 |YES | ASYNC |ACTIVE | | True | |SYSTEMDB |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |clusternode2 | 30201 | 2 |DC2 |YES | SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |clusternode2 | 30207 | 2 |DC2 |YES | SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |clusternode2 | 30203 | 2 |DC2 |YES | SYNCMEM |ACTIVE | | True | status system replication site "3": ACTIVE status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 Status 15
remotehost3에서 동일한 명령을 실행합니다.
remotehost3:rh2adm> watch -n 5 'python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'
응답은 다음과 같습니다.
this system is either not running or not primary system replication site
테스트가 장애 조치(failover)를 시작한 후 출력이 변경됩니다. 출력은 테스트를 시작하기 전에 기본 노드의 예와 유사합니다.
두 번째 노드에서 다음을 시작합니다.
clusternode2:rh2adm> watch -n 10 'hdbnsutil -sr_state | grep masters'
그러면 현재 마스터 clusternode1이 표시되고 페일오버가 시작된 후 즉시 전환됩니다.
-
모든 것이 올바르게 구성되었는지 확인하려면
global.ini
도 확인하십시오. -
DC1, DC2 및 DC3에서
global.ini
를 확인합니다.
세 개의 노드 모두에서 global.ini
는 다음을 포함해야 합니다.
[persistent] log_mode=normal [system_replication] register_secondaries_on_takeover=true
예를 들면 다음과 같이 global.ini를 편집할 수 있습니다.
clusternode1:rh2adm>vim /usr/sap/$SAPSYSTEMNAME/SYS/global/hdb/custom/config/global.ini
[선택 사항] 클러스터를
유지 관리 모드로 전환합니다
.[root@clusternode1]# pcs property set maintenance-mode=true
테스트 중에 페일오버가
유지 관리 모드를
설정하지 않고 작동하는지 확인할 수 있습니다. 따라서 첫 번째 테스트 없이 실행할 수 있습니다. 복구하는 동안이 작업을 수행하는 동안, 난 단지 당신에게 보여주고 싶습니다, 그리고 함께 작동합니다. 다음 중 기본 옵션과 관련하여 액세스할 수 없는 것은 무엇입니까.test: Cryostat를 DC3로 시작합니다. remotehost3에서 다음을 실행하십시오.
remotehost3:rh2adm> hdbnsutil -sr_takeover done.
테스트가 시작되었으므로 이전에 시작한 모니터의 출력을 확인하십시오.
clusternode1에서 시스템 복제 상태는 remotehost3 및 clusternode2(DC2)와의 관계가 손실됩니다.
Every 5.0s: python /usr/sap/RH2/HDB02/exe/python_support/systemReplicationStatus.py ; echo Status $? clusternode1: Mon Sep 4 11:52:16 2023 |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replic ation |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |------ |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |------ ---------------------- |------------ | |SYSTEMDB |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ERROR |Commun ication channel closed | False | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ERROR |Commun ication channel closed | False | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ERROR |Commun ication channel closed | False | status system replication site "2": ERROR overall system replication status: ERROR Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 Status 11
클러스터는 여전히 이 동작을 인식하지 못합니다. 시스템 복제 상태의 반환 코드를 확인하는 경우 반환 코드 11은 오류가 있음을 의미합니다. 액세스 권한이 있는 경우 지금 유지 관리 모드로
전환하는 것이 좋습니다.
remotehost3은 새로운 기본이 되고 clusternode2(DC2)가 remotehost3의 새 기본 설정으로 자동으로 등록됩니다.
remotehost3의 시스템 복제 상태 출력 예:
Every 5.0s: python /usr/sap/RH2/HDB02/exe/python_support/systemReplicationStatus.py ; echo Status $? remotehost3: Mon Sep 4 13:55:29 2023 |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replic ation |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |------ |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |------ -------- |------------ | |SYSTEMDB |remotehost3 |30201 |nameserver | 1 | 3 |DC3 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30207 |xsengine | 2 | 3 |DC3 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30203 |indexserver | 3 | 3 |DC3 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 3 site name: DC3 Status 15
반환 코드 15는 모든 것이 정상이지만 clusternode1이 누락되었음을 나타냅니다. 수동으로 다시 등록해야 합니다. 이전 기본 clusternode1이 나열되지 않으므로 복제 관계가 손실됩니다.
-
유지 관리 모드를
설정합니다.
명령을 사용하여 클러스터의 한 노드에 있는 클러스터에서 maintenance-mode
를 설정하기 전에 아직 수행하지 않은 경우:
[root@clusternode1]# pcs property set maintenance-mode=true
다음 명령을 실행하여 maintenance-mode
가 활성화되어 있는지 확인할 수 있습니다.
[root@clusternode1]# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged): * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 (unmanaged) * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 (unmanaged) * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode2 (unmanaged) * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode1 (unmanaged) * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Started clusternode1 (unmanaged)
관리되지 않는 리소스가 표시되고 있습니다. 이는 클러스터가 maintenance-mode=true
임을 나타냅니다. 가상 IP 주소는 clusternode1에서 계속 시작됩니다. 다른 노드에서 이 IP를 사용하려면 maintanence-mode=true
를 설정하기 전에 vip_RH2_02_MASTER를 비활성화하십시오.
[root@clusternode1]# pcs resource disable vip_RH2_02_MASTER
clusternode1에서 sr_state를 확인할 때 DC2와의 관계만 표시됩니다.
clusternode1:rh2adm> hdbnsutil -sr_state System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: true mode: primary operation mode: primary site id: 1 site name: DC1 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: ~~~~~~~~~~~~~~ clusternode1 -> [DC2] clusternode2 clusternode1 -> [DC1] clusternode1 Site Mappings: ~~~~~~~~~~~~~~ DC1 (primary/primary) |---DC2 (syncmem/logreplay) Tier of DC1: 1 Tier of DC2: 2 Replication mode of DC1: primary Replication mode of DC2: syncmem Operation mode of DC1: primary Operation mode of DC2: logreplay Mapping: DC1 -> DC2 done.
그러나 DC2를 확인할 때 기본 데이터베이스 서버는 DC3입니다. 따라서 DC1의 정보가 정확하지 않습니다.
clusternode2:rh2adm> hdbnsutil -sr_state
DC1에서 시스템 복제 상태를 확인하면 반환 코드는 12이며 알 수 없습니다. 따라서 DC1을 다시 등록해야 합니다.
이 명령을 사용하여 이전 기본 clusternode1을 remotehost3의 새 보조로 등록할 수 있습니다.
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=async --name=DC1 --remoteName=DC3 --operationMode=logreplay --online
등록이 완료되면 remotehost3에서 복제된 세 개의 사이트 모두 표시되고 상태(반복 코드)가 15로 변경됩니다. 이 오류가 발생하면 DC1 및 DC3에서 복제 관계를 수동으로 제거해야 합니다. Register Secondary 에 설명된 지침을 따르십시오. 예를 들어 다음과 같은 기존 관계가 나열됩니다.
hdbnsutil -sr_state
사용할 수 있는 기존 관계를 제거하는 예:
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC2
이는 일반적으로 필요하지 않을 수 있습니다.
테스트 4는 테스트 3 후에 수행됩니다. 따라서 복구 단계는 테스트 4를 실행하는 것입니다.
5.6. 테스트 4: 기본 노드를 첫 번째 사이트로 장애 조치
테스트 제목 | 기본 전환은 클러스터 노드로 돌아갑니다. 장애 조치(Failback) 및 클러스터를 다시 활성화합니다. 세 번째 사이트를 보조로 다시 등록합니다. |
테스트 사전 조건 |
|
테스트 단계 | 클러스터의 예상 기본 사항을 확인합니다. DC3 노드에서 DC1 노드로의 페일오버. 이전 보조가 새 기본 설정으로 전환되었는지 확인합니다. remotehost3을 새 보조 서버로 다시 등록합니다.
클러스터 |
테스트 모니터링 | 새 기본 시작에서 다음을 수행합니다.
|
테스트 시작 |
클러스터의 예상 기본 사항 확인: VIP 및 승격된 SAP HANA 리소스는 잠재적인 새로운 기본 노드인 동일한 노드에서 실행해야 합니다.
이 잠재적인 기본 실행에서 이전 기본 사항을 새 보조로 다시 등록합니다.
|
예상 결과 | 새로운 기본은 SAP HANA를 시작하는 것입니다. 복제 상태는 복제된 모든 3개의 사이트를 표시합니다. 두 번째 클러스터 사이트는 자동으로 새 기본 항목에 다시 등록됩니다. Disaster Recovery (DR) 사이트에서는 데이터베이스의 추가 복제본이 됩니다. |
초기 상태로 돌아가는 방법 | 테스트 3을 실행합니다. |
자세한 설명
클러스터가
maintenance-mode
로 설정되어 있는지 확인합니다.[root@clusternode1]# pcs property config maintenance-mode Cluster Properties: maintenance-mode: true
maintenance-mode
가 true가 아닌 경우 다음을 사용하여 설정할 수 있습니다.[root@clusternode1]# pcs property set maintenance-mode=true
시스템 복제 상태를 확인하고 모든 노드에서 기본 데이터베이스를 검색합니다. 먼저 다음을 사용하여 주 데이터베이스를 검색합니다.
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters"
출력은 다음과 같아야 합니다.
clusternode1에서 다음을 수행합니다.
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters" mode: syncmem primary masters: remotehost3
clusternode2에서 다음을 수행합니다.
clusternode2:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters" mode: syncmem primary masters: remotehost3
remotehost3에서 다음을 수행합니다.
remotehost3:rh2adm> hdbnsutil -sr_state | egrep -e "^mode:|primary masters" mode: primary
세 개의 노드 모두에서 기본 데이터베이스는 remotehost3입니다. 이 기본 데이터베이스에서는 세 개의 노드 모두에 대해 시스템 복제 상태가 활성이고 반환 코드는 15여야 합니다.
remotehost3:rh2adm> python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/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 |remotehost3 |30201 |nameserver | 1 | 3 |DC3 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30207 |xsengine | 2 | 3 |DC3 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30203 |indexserver | 3 | 3 |DC3 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |SYSTEMDB |remotehost3 |30201 |nameserver | 1 | 3 |DC3 |clusternode1 | 30201 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30207 |xsengine | 2 | 3 |DC3 |clusternode1 | 30207 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | |RH2 |remotehost3 |30203 |indexserver | 3 | 3 |DC3 |clusternode1 | 30203 | 1 |DC1 |YES |SYNCMEM |ACTIVE | | True | status system replication site "2": ACTIVE status system replication site "1": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 3 site name: DC3 [rh2adm@remotehost3: python_support]# echo $? 15
-
세 가지
sr_states
가 모두 일관되게 일치하는지 확인합니다.
세 개의 노드 hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode
:
clusternode1:rh2adm>hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode
clusternode2:rh2adm>hsbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
remotehost3:rh2adm>hsbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
출력은 모든 노드에서 동일해야 합니다.
siteReplicationMode/DC1=primary siteReplicationMode/DC3=async siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC3=logreplay siteOperationMode/DC2=logreplay
- 별도의 창에서 모니터링을 시작합니다.
clusternode1 시작 시 다음을 실행합니다.
clusternode1:rh2adm> watch "python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py; echo \$?"
remotehost3에서 다음을 시작합니다.
remotehost3:rh2adm> watch "python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py; echo \$?"
clusternode2 start에서 다음을 시작합니다.
clusternode2:rh2adm> watch "hdbnsutil -sr_state --sapcontrol=1 |grep siteReplicationMode"
- 테스트 시작
clusternode1로 장애 조치하려면 clusternode1에서 시작합니다.
clusternode1:rh2adm> hdbnsutil -sr_takeover done.
- 모니터의 출력을 확인합니다.
clusternode1의 모니터가 다음과 같이 변경됩니다.
Every 2.0s: python systemReplicationStatus.py; echo $? clusternode1: Mon Sep 4 23:34:30 2023 |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 |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 15
반환 코드 15도 중요합니다. clusternode2의 모니터가 다음과 같이 변경됩니다.
Every 2.0s: hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode clusternode2: Mon Sep 4 23:35:18 2023 siteReplicationMode/DC1=primary siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC2=logreplay
DC3는 사라졌으며 다시 등록해야 합니다. remotehost3에서 systemReplicationStatus는 오류를 보고하고 반환 코드가 11로 변경되었습니다.
클러스터 노드가 다시 등록되는지 확인합니다.
clusternode1:rh2adm> hdbnsutil -sr_state System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: true mode: primary operation mode: primary site id: 1 site name: DC1 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: ~~~~~~~~~~~~~~ clusternode1 -> [DC2] clusternode2 clusternode1 -> [DC1] clusternode1 Site Mappings: ~~~~~~~~~~~~~~ DC1 (primary/primary) |---DC2 (syncmem/logreplay) Tier of DC1: 1 Tier of DC2: 2 Replication mode of DC1: primary Replication mode of DC2: syncmem Operation mode of DC1: primary Operation mode of DC2: logreplay Mapping: DC1 -> DC2 done.
사이트 매핑 쇼, clusternode2 (DC2)가 다시 등록되었습니다.
vip 리소스를 확인하거나 활성화합니다.
[root@clusternode1]# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged): * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 (unmanaged) * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 (unmanaged) * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode2 (unmanaged) * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode1 (unmanaged) * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Stopped (disabled, unmanaged)
vip_RH2_02_MASTER
가 중지되었습니다. 다시 시작하려면 다음을 실행합니다.
[root@clusternode1]# pcs resource enable vip_RH2_02_MASTER Warning: 'vip_RH2_02_MASTER' is unmanaged
maintenance-mode=false
를 제외하고 클러스터가 리소스를 시작하지 않기 때문에 경고가 적합합니다.
-
클러스터
유지 관리 모드를 중지합니다
.
유지 관리 모드를
중지하기 전에 별도의 창에서 두 개의 모니터를 시작하여 변경 사항을 확인해야 합니다. clusternode2에서 다음을 실행합니다.
[root@clusternode2]# watch pcs status --full
clusternode1에서 다음을 실행합니다.
clusternode1:rh2adm> watch "python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py; echo $?"
이제 다음을 실행하여 clusternode1에서 maintenance-mode
를 설정할 수 있습니다.
[root@clusternode1]# pcs property set maintenance-mode=false
clusternode2의 모니터에 모든 것이 예상대로 실행 중임을 표시해야 합니다.
Every 2.0s: pcs status --full clusternode1: Tue Sep 5 00:01:17 2023 Cluster name: cluster1 Cluster Summary: * Stack: corosync * Current DC: clusternode1 (1) (version 2.1.2-4.el8_6.6-ada5c3b36e2) - partition with quorum * Last updated: Tue Sep 5 00:01:17 2023 * Last change: Tue Sep 5 00:00:30 2023 by root via crm_attribute on clusternode1 * 2 nodes configured * 6 resource instances configured Node List: * Online: [ clusternode1 (1) clusternode2 (2) ] Full List of Resources: * auto_rhevm_fence1 (stonith:fence_rhevm): Started clusternode1 * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode2 * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode1 * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Started clusternode1 Node Attributes: * Node: clusternode1 (1): * hana_rh2_clone_state : PROMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode2 * hana_rh2_roles : 4:P:master1:master:worker:master * hana_rh2_site : DC1 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : PRIM * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode1 * lpa_rh2_lpt : 1693872030 * master-SAPHana_RH2_02 : 150 * Node: clusternode2 (2): * hana_rh2_clone_state : DEMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode1 * hana_rh2_roles : 4:S:master1:master:worker:master * hana_rh2_site : DC2 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : SOK * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode2 * lpa_rh2_lpt : 30 * master-SAPHana_RH2_02 : 100 Migration Summary: Tickets: PCSD Status: clusternode1 : Online clusternode2: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
수동 상호 작용 후 ClusterCleanup에 설명된 대로 클러스터를 정리하는 것이 좋습니다.
- remotehost3을 clusternode1의 새 기본 버전으로 다시 등록합니다.
Remotehost3을 다시 등록해야 합니다. 진행 상황을 모니터링하려면 clusternode1에서 시작하십시오.
clusternode1:rh2adm> watch -n 5 'python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $?'
remotehost3에서 다음을 시작하십시오.
remotehost3:rh2adm> watch 'hdbnsutil -sr_state --sapcontrol=1 |grep siteReplicationMode'
이제 다음 명령을 사용하여 remotehost3을 다시 등록할 수 있습니다.
remotehost3:rh2adm> hdbnsutil -sr_register --remoteHost=clusternode1 --remoteInstance=${TINSTANCE} --replicationMode=async --name=DC3 --remoteName=DC1 --operationMode=logreplay --online
clusternode1의 모니터가 다음과 같이 변경됩니다.
Every 5.0s: python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status $? clusternode1: Tue Sep 5 00:14:40 2023 |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 |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |remotehost3 | 30201 | 3 |DC3 |YES |ASYNC |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |remotehost3 | 30207 | 3 |DC3 |YES |ASYNC |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |remotehost3 | 30203 | 3 |DC3 |YES |ASYNC |ACTIVE | | True | |SYSTEMDB |clusternode1 |30201 |nameserver | 1 | 1 |DC1 |clusternode2 | 30201 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30207 |xsengine | 2 | 1 |DC1 |clusternode2 | 30207 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | |RH2 |clusternode1 |30203 |indexserver | 3 | 1 |DC1 |clusternode2 | 30203 | 2 |DC2 |YES |SYNCMEM |ACTIVE | | True | status system replication site "3": ACTIVE status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC1 Status 15
remotehost3의 모니터가 다음과 같이 변경됩니다.
Every 2.0s: hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode remotehost3: Tue Sep 5 02:15:28 2023 siteReplicationMode/DC1=primary siteReplicationMode/DC3=syncmem siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC3=logreplay siteOperationMode/DC2=logreplay
이제 3개의 항목이 다시 있고 remotehost3(DC3)이 clusternode1(DC1)에서 복제된 보조 사이트입니다.
- 모든 노드가 clusternode1의 시스템 복제 상태에 있는지 확인합니다.
세 개의 노드 hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode
:
clusternode1:rh2adm> hdbnsutil -sr_state --sapcontrol=1 |grep site.*ModesiteReplicationMode
clusternode2:rh2adm> hsbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
remotehost3:rh2adm> hsbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
모든 노드에서 동일한 출력을 얻을 수 있어야 합니다.
siteReplicationMode/DC1=primary siteReplicationMode/DC3=syncmem siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC3=logreplay siteOperationMode/DC2=logreplay
-
pcs status --full
및SOK
를 확인합니다. 다음을 실행합니다.
[root@clusternode1]# pcs status --full| grep sync_state
출력은 PRIM
또는 SOK
여야 합니다.
* hana_rh2_sync_state : PRIM * hana_rh2_sync_state : SOK
마지막으로, sync_state
PRIM
및 SOK
를 포함하여 클러스터 상태가 다음과 같아야 합니다.
[root@clusternode1]# pcs status --full Cluster name: cluster1 Cluster Summary: * Stack: corosync * Current DC: clusternode1 (1) (version 2.1.2-4.el8_6.6-ada5c3b36e2) - partition with quorum * Last updated: Tue Sep 5 00:18:52 2023 * Last change: Tue Sep 5 00:16:54 2023 by root via crm_attribute on clusternode1 * 2 nodes configured * 6 resource instances configured Node List: * Online: [ clusternode1 (1) clusternode2 (2) ] Full List of Resources: * auto_rhevm_fence1 (stonith:fence_rhevm): Started clusternode1 * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode2 * SAPHanaTopology_RH2_02 (ocf::heartbeat:SAPHanaTopology): Started clusternode1 * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Slave clusternode2 * SAPHana_RH2_02 (ocf::heartbeat:SAPHana): Master clusternode1 * vip_RH2_02_MASTER (ocf::heartbeat:IPaddr2): Started clusternode1 Node Attributes: * Node: clusternode1 (1): * hana_rh2_clone_state : PROMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode2 * hana_rh2_roles : 4:P:master1:master:worker:master * hana_rh2_site : DC1 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : PRIM * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode1 * lpa_rh2_lpt : 1693873014 * master-SAPHana_RH2_02 : 150 * Node: clusternode2 (2): * hana_rh2_clone_state : DEMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode1 * hana_rh2_roles : 4:S:master1:master:worker:master * hana_rh2_site : DC2 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : SOK * hana_rh2_version : 2.00.062.00 * hana_rh2_vhost : clusternode2 * lpa_rh2_lpt : 30 * master-SAPHana_RH2_02 : 100 Migration Summary: Tickets: PCSD Status: clusternode1 : Online clusternode2: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
클러스터 상태 확인 및 데이터베이스 확인 을 참조하여 모든 작업이 제대로 작동하는지 확인합니다.
6장. 유용한 명령
다음은 유용한 명령의 세 가지 섹션입니다. 대부분의 경우 작업 또는 구성을 확인하는 데 도움이 됩니다. 예제는 응답과 함께 나열됩니다. 형식 지정 이유로 출력이 조정되는 경우도 있습니다.
-
<
sid>adm
사용자가 실행할 때 이 문서에 나열된 모든 명령은 > 로시작합니다
. -
root 사용자가
실행하는 모든 명령은#
로 시작합니다. -
명령을 실행하려면 접두사 > 또는
#
6.1. SAP HANA 명령
SAP HANA 명령은 < sid>adm
사용자가 실행합니다. 예제:
[root@clusternode1]# su - rh2adm clusternode1:rh2adm> cdpy clusternode1:rh2adm> pwd /usr/sap/RH2/HDB02/exe/python_support clusternode1:rh2adm> python systemReplicationStatus.py -h systemReplicationStatus.py [-h|--help] [-a|--all] [-l|--localhost] [-m|--multiTaget] [-s|--site=<site name>] [-t|--printLandscapeTree] [--omitSecondaryActiveStatus] [--sapcontrol=1] clusternode1:rh2adm> python landscapeHostConfiguration.py -h landscapeHostConfiguration.py [-h|--help] [--localhost] [--sapcontrol=1] clusternode1:rh2adm> hdbnsutil # run hdbnsutil without parameters to get help
6.1.1. hdbclm
을 사용한 SAP HANA 설치
세 번째 사이트의 설치는 두 번째 사이트의 설치와 유사합니다. root 사용자로 hdblcm
를 사용하여 설치를 수행할 수 있습니다. 이전에 아무것도 설치하지 않았는지 확인하려면 hdbuninst
를 실행하여 SAP HANA가 이 노드에 설치되어 있지 않은지 확인합니다.
HANA 제거의 출력 예:
[root@remotehost3]# cd /software/DATA_UNITS/HDB_SERVER_LINUX_X86_64 root@DC3/software/DATA_UNITS/HDB_SERVER_LINUX_X86_64# ./hdbuninst Option 0 will remove an already existing HANA Installation No SAP HANA Installation found is the expected answer
DC3에 HANA 설치 출력 예:
----[root@remotehost3]# cd /software/DATA_UNITS/HDB_SERVER_LINUX_X86_64 # ./hdbuninst Option 0 will remove an already existing HANA Installation No SAP HANA Installation found is the expected answer ---- Example output of HANA installation: [source,text] ---- [root@remotehost3]# ./hdblcm 1 install 2 server /hana/shared is default directory Enter Local Hostname [remotehost3]: use the default name additional hosts only during Scale-Out Installation y default is n ENTER SAP HANA System ID: RH2 Enter Instance Number [02]: Enter Local Host Worker Group [default]: Select System Usage / Enter Index [4]: Choose encryption Enter Location of Data Volumes [/hana/data/RH2]: Enter Location of Log Volumes [/hana/log/RH2]: Restrict maximum memory allocation? [n]: Enter Certificate Host Name Enter System Administrator (rh2adm) Password: <Y0urPasswd> Confirm System Administrator (rh2adm) Password: <Y0urPasswd> Enter System Administrator Home Directory [/usr/sap/RH2/home]: Enter System Administrator Login Shell [/bin/sh]: Enter System Administrator User ID [1000]: Enter System Database User (SYSTEM) Password: <Y0urPasswd> Confirm System Database User (SYSTEM) Password: <Y0urPasswd> Restart system after machine reboot? [n]: ----
설치가 시작되기 전에 요약이 나열됩니다.
SAP HANA Database System Installation Installation Parameters Remote Execution: ssh Database Isolation: low Install Execution Mode: standard Installation Path: /hana/shared Local Host Name: dc3host SAP HANA System ID: RH2 Instance Number: 02 Local Host Worker Group: default System Usage: custom Location of Data Volumes: /hana/data/RH2 Location of Log Volumes: /hana/log/RH2 SAP HANA Database secure store: ssfs Certificate Host Names: remotehost3 -> remotehost3 System Administrator Home Directory: /usr/sap/RH2/home System Administrator Login Shell: /bin/sh System Administrator User ID: 1000 ID of User Group (sapsys): 1010 Software Components SAP HANA Database Install version 2.00.052.00.1599235305 Location: /software/DATA_UNITS/HDB_SERVER_LINUX_X86_64/server SAP HANA Local Secure Store Do not install SAP HANA AFL (incl.PAL,BFL,OFL) Do not install SAP HANA EML AFL Do not install SAP HANA EPM-MDS Do not install SAP HANA Database Client Do not install SAP HANA Studio Do not install SAP HANA Smart Data Access Do not install SAP HANA XS Advanced Runtime Do not install Log File Locations Log directory: /var/tmp/hdb_RH2_hdblcm_install_2021-06-09_18.48.13 Trace location: /var/tmp/hdblcm_2021-06-09_18.48.13_31307.trc Do you want to continue? (y/n):
설치를 시작하려면 y를 입력합니다.
6.1.2. hdbsql
을 사용하여 Inifile
콘텐츠 확인
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -p Y0urP8ssw0rd Welcome to the SAP HANA Database interactive terminal. Type: \h for help with commands \q to quit hdbsql RH2=> select * from M_INIFILE_CONTENTS where section='system_replication' FILE_NAME,LAYER_NAME,TENANT_NAME,HOST,SECTION,KEY,VALUE "global.ini","DEFAULT","","","system_replication","actual_mode","primary" "global.ini","DEFAULT","","","system_replication","mode","primary" "global.ini","DEFAULT","","","system_replication","operation_mode","logreplay" "global.ini","DEFAULT","","","system_replication","register_secondaries_on_takeover ","true" "global.ini","DEFAULT","","","system_replication","site_id","1" "global.ini","DEFAULT","","","system_replication","site_name","DC2" "global.ini","DEFAULT","","","system_replication","timetravel_logreplay_mode","auto " "global.ini","DEFAULT","","","system_replication","alternative_sources","" "global.ini","DEFAULT","","","system_replication","datashipping_logsize_threshold", "5368709120" "global.ini","DEFAULT","","","system_replication","datashipping_min_time_interval", "600" "global.ini","DEFAULT","","","system_replication","datashipping_parallel_channels", "4" "global.ini","DEFAULT","","","system_replication","datashipping_parallel_processing ","true" "global.ini","DEFAULT","","","system_replication","datashipping_snapshot_max_retent ion_time","300" "global.ini","DEFAULT","","","system_replication","enable_data_compression","false" "global.ini","DEFAULT","","","system_replication","enable_full_sync","false" "global.ini","DEFAULT","","","system_replication","enable_log_compression","false" "global.ini","DEFAULT","","","system_replication","enable_log_retention","auto" "global.ini","DEFAULT","","","system_replication","full_replica_on_failed_delta_syn c_check","false" "global.ini","DEFAULT","","","system_replication","hint_based_routing_site_name","" "global.ini","DEFAULT","","","system_replication","keep_old_style_alert","false" "global.ini","DEFAULT","","","system_replication","logshipping_async_buffer_size"," 67108864" "global.ini","DEFAULT","","","system_replication","logshipping_async_wait_on_buffer _full","true" "global.ini","DEFAULT","","","system_replication","logshipping_max_retention_size", "1048576" "global.ini","DEFAULT","","","system_replication","logshipping_replay_logbuffer_cac he_size","1073741824" "global.ini","DEFAULT","","","system_replication","logshipping_replay_push_persiste nt_segment_count","5" "global.ini","DEFAULT","","","system_replication","logshipping_snapshot_logsize_thr eshold","3221225472" "global.ini","DEFAULT","","","system_replication","logshipping_snapshot_min_time_in terval","900" "global.ini","DEFAULT","","","system_replication","logshipping_timeout","30" "global.ini","DEFAULT","","","system_replication","preload_column_tables","true" "global.ini","DEFAULT","","","system_replication","propagate_log_retention","off" "global.ini","DEFAULT","","","system_replication","reconnect_time_interval","30" "global.ini","DEFAULT","","","system_replication","retries_before_register_to_alter native_source","20" "global.ini","DEFAULT","","","system_replication","takeover_esserver_without_log_ba ckup","false" "global.ini","DEFAULT","","","system_replication","takeover_wait_until_esserver_res tart","true" "global.ini","DEFAULT","","","system_replication","timetravel_call_takeover_hooks", "off" "global.ini","DEFAULT","","","system_replication","timetravel_log_retention_policy" ,"none" "global.ini","DEFAULT","","","system_replication","timetravel_max_retention_time"," 0" "global.ini","DEFAULT","","","system_replication","timetravel_snapshot_creation_int erval","1440" "indexserver.ini","DEFAULT","","","system_replication","logshipping_async_buffer_si ze","268435456" "indexserver.ini","DEFAULT","","","system_replication","logshipping_replay_logbuffe r_cache_size","4294967296" "indexserver.ini","DEFAULT","","","system_replication","logshipping_replay_push_per sistent_segment_count","20" 41 rows selected (overall time 1971.958 msec; server time 31.359 msec)
6.1.3. 데이터베이스 확인
데이터베이스가 실행 중인지 확인하고 현재 기본 노드를 검색합니다.
데이터베이스 인스턴스 나열
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList 23.06.2023 12:08:17 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus node1, 2, 50213, 50214, 0.3, HDB|HDB_WORKER, GREEN
출력이 녹색이면 인스턴스가 실행 중입니다.
데이터베이스 프로세스 나열
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetProcessList GetProcessList OK name, description, dispstatus, textstatus, starttime, elapsedtime, pid hdbdaemon, HDB Daemon, GREEN, Running, 2023 09 04 14:34:01, 18:41:33, 3788067 hdbcompileserver, HDB Compileserver, GREEN, Running, 2023 09 04 22:35:40, 10:39:54, 445299 hdbindexserver, HDB Indexserver-RH2, GREEN, Running, 2023 09 04 22:35:40, 10:39:54, 445391 hdbnameserver, HDB Nameserver, GREEN, Running, 2023 09 04 22:35:34, 10:40:00, 445178 hdbpreprocessor, HDB Preprocessor, GREEN, Running, 2023 09 04 22:35:40, 10:39:54, 445306 hdbwebdispatcher, HDB Web Dispatcher, GREEN, Running, 2023 09 04 22:35:53, 10:39:41, 445955 hdbxsengine, HDB XSEngine-RH2, GREEN, Running, 2023 09 04 22:35:40, 10:39:54, 445394
일반적으로 모든 데이터베이스 프로세스의 상태는 GREEN
입니다.
SAP HANA 프로세스 나열
clusternode1:rh2adm> HDB info USER PID PPID %CPU VSZ RSS COMMAND rh2adm 1560 1559 0.0 6420 3136 watch -n 5 sapcontrol -nr 02 -functi rh2adm 1316 1315 0.0 8884 5676 -sh rh2adm 2549 1316 0.0 7516 4072 \_ /bin/sh /usr/sap/RH2/HDB02/HDB i rh2adm 2579 2549 0.0 10144 3576 \_ ps fx -U rh2adm -o user:8,pi rh2adm 2388 1 0.0 679536 55520 hdbrsutil --start --port 30203 --vo rh2adm 1921 1 0.0 679196 55312 hdbrsutil --start --port 30201 --vo rh2adm 1469 1 0.0 8852 3260 sapstart pf=/usr/sap/RH2/SYS/profile rh2adm 1476 1469 0.7 438316 86288 \_ /usr/sap/RH2/HDB02/remotehost3/trace/ rh2adm 1501 1476 11.7 9690172 1574796 \_ hdbnameserver rh2adm 1845 1476 0.8 410696 122988 \_ hdbcompileserver rh2adm 1848 1476 1.0 659464 154072 \_ hdbpreprocessor rh2adm 1899 1476 14.7 9848276 1765208 \_ hdbindexserver -port 30203 rh2adm 1902 1476 8.4 5023288 1052768 \_ hdbxsengine -port 30207 rh2adm 2265 1476 5.2 2340284 405016 \_ hdbwebdispatcher rh2adm 1117 1 1.1 543532 30676 /usr/sap/RH2/HDB02/exe/sapstartsrv p rh2adm 1029 1 0.0 20324 11572 /usr/lib/systemd/systemd --user rh2adm 1030 1029 0.0 23256 3536 \_ (sd-pam)
SAP HANA 환경 구성 표시
clusternode1:rh2adm> /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/landscapeHostConfiguration.py;echo $? | Host | Host | Host | Failover | Remove | Storage | Storage | Failover | Failover | NameServer | NameServer | IndexServer | IndexServer | Host | Host | Worker | Worker | | | Active | Status | Status | Status | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | Config | Actual | | | | | | | Partition | Partition | Group | Group | Role | Role | Role | Role | Roles | Roles | Groups | Groups | | ------ | ------ | ------ | -------- | ------ | --------- | --------- | -------- | -------- | ---------- | ---------- | ----------- | ----------- | ------ | ------ | ------- | ------- | | clusternode1 | yes | ok | | | 1 | 1 | default | default | master 1 | master | worker | master | worker | worker | default | default | overall host status: ok 4
반환 코드:
- 0: fatal
- 1: 오류
- 2: 경고
- 3 : 정보
- 4: OK
기본 데이터베이스 검색
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode"
보조 서버에서 확인의 예:
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode" mode: syncmem primary masters: clusternode1
현재 주에서 검사의 예:
clusternode1:rh2adm> hdbnsutil -sr_state | egrep -e "primary masters|^mode" mode: primary clusternode1:rh2adm>hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode siteReplicationMode/DC1=primary siteReplicationMode/DC3=async siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC3=logreplay siteOperationMode/DC2=logreplay
데이터베이스 버전 표시
SQL 쿼리 사용 예:
hdbsql RH2=> select * from m_database SYSTEM_ID,DATABASE_NAME,HOST,START_TIME,VERSION,USAGE "RH2","RH2","node1","2023-06-22 15:33:05.235000000","2.00.059.02.1647435895","CUSTOM" 1 row selected (overall time 29.107 msec; server time 927 usec)
systemOverview.py
사용 예:
clusternode1:rh2adm> python ./systemOverview.py | Section | Name | Status | Value | | ---------- | --------------- | ------- | --------------------------------------------------- | | System | Instance ID | | RH2 | | System | Instance Number | | 02 | | System | Distributed | | No | | System | Version | | 2.00.059.02.1647435895 (fa/hana2sp05) | | System | Platform | | Red Hat Enterprise Linux 9.2 Beta (Plow) 9.2 (Plow) | | Services | All Started | OK | Yes | | Services | Min Start Time | | 2023-07-14 16:31:19.000 | | Services | Max Start Time | | 2023-07-26 11:23:17.324 | | Memory | Memory | OK | Physical 31.09 GB, Swap 10.00 GB, Used 26.38 | | CPU | CPU | OK | Available 4, Used 1.04 | | Disk | Data | OK | Size 89.0 GB, Used 59.3 GB, Free 33 % | | Disk | Log | OK | Size 89.0 GB, Used 59.3 GB, Free 33 % | | Disk | Trace | OK | Size 89.0 GB, Used 59.3 GB, Free 33 % | | Statistics | Alerts | WARNING | cannot check statistics w/o SQL connection |
6.1.4. SAP HANA 시작 및 중지
옵션 1:HDB 명령
clusternode1:rh2adm> HDB help Usage: /usr/sap/RH2/HDB02/HDB { start|stop|reconf|restart|version|info|proc|admin|kill|kill-<sig>|term } kill or kill-9 should never be used in a productive environment!
데이터베이스 시작
clusternode1:rh2adm> HDB start
데이터베이스를 중지
clusternode1:rh2adm> HDB stop
옵션 2 (권장): sapcontrol
사용
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StartSystem HDB 03.07.2023 14:08:30 StartSystem OK
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function StopSystem HDB 03.07.2023 14:09:33 StopSystem OK
GetProcessList 를 사용하여 HANA 서비스의 시작 및 중지를 모니터링합니다.
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetProcessList
6.1.5. SAP HANA 시스템 복제 상태 확인
SAP HANA 시스템 복제 상태를 확인하는 방법은 여러 가지가 있습니다.
- 'clusternode1:rh2adm> python systemReplicationStatus.py ' 기본 노드의
-
clusternode1:rh2adm> echo $? #
(systemReplicationStatus의 코드 반환) -
clusternode1:rh2adm> hdbnsutil -sr_state
-
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration
모니터로 실행되는 systemReplicationStatus.py
출력의 예:
clusternode1:rh2adm> watch -n 5 "python /usr/sap/${SAPSYSTEMNAME}/HDB{TINSTACE}/exe/python_support/systemReplicationStatus.py;echo \$?" concurrent-fencing: true Every 5.0s: python systemReplicationStatus.py;echo $? hana08: Fri Jul 28 17:01:05 2023 |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details | |-------- |------ |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |--------- |------------- |----------- |----------- |-------------- | |SYSTEMDB |hana08 |30201 |nameserver | 1 | 1 |DC2 |hana09 | 30201 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | |RH2 |hana08 |30207 |xsengine | 2 | 1 |DC2 |hana09 | 30207 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | |RH2 |hana08 |30203 |indexserver | 3 | 1 |DC2 |hana09 | 30203 | 3 |DC3 |YES |SYNCMEM |ACTIVE | | |SYSTEMDB |hana08 |30201 |nameserver | 1 | 1 |DC2 |remotehost3 | 30201 | 2 |DC1 |YES |SYNCMEM |ACTIVE | | |RH2 |hana08 |30207 |xsengine | 2 | 1 |DC2 |remotehost3 | 30207 | 2 |DC1 |YES |SYNCMEM |ACTIVE | | |RH2 |hana08 |30203 |indexserver | 3 | 1 |DC2 |remotehost3 | 30203 | 2 |DC1 |YES |SYNCMEM |ACTIVE | | status system replication site "3": ACTIVE status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: DC2 15
반환 코드에 대한 예상 결과는 다음과 같습니다.
- 10: NoHSR
- 11: 오류
- 12: 알 수 없음
- 13: 초기화
- 14: 동기화
- 15: active
대부분의 경우 시스템 복제 검사는 반환 코드 15
와 함께 반환됩니다. 또 다른 디스플레이 옵션은 -t
(printLandscapeTree)를 사용하는 것입니다.
현재 기본 기본 출력의 예는 다음과 같습니다.
clusternode1:rh2adm> python systemReplicationStatus.py -t HANA System Replication landscape: DC1 ( primary ) | --- DC3 ( syncmem ) | --- DC2 ( syncmem )
hdbnsutil -sr_state
의 예:
[root@clusternode1]# su - rh2adm clusternode1:rh2adm> watch -n 10 hdbnsutil -sr_state Every 10.0s: hdbnsutil -sr_state clusternode1: Thu Jun 22 08:42:00 2023 System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ online: true mode: syncmem operation mode: logreplay site id: 2 site name: DC1 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: 1 primary masters: clusternode2 Host Mappings: ~~~~~~~~~~~~~~ clusternode1 -> [DC3] remotehost3 clusternode1 -> [DC1] clusternode1 clusternode1 -> [DC2] clusternode2 Site Mappings: ~~~~~~~~~~~~~~ DC2 (primary/primary) |---DC3 (syncmem/logreplay) |---DC1 (syncmem/logreplay) Tier of DC2: 1 Tier of DC3: 2 Tier of DC1: 2 Replication mode of DC2: primary [2] 0:ssh*
기본 설정의 sr_stateConfiguation
예:
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ mode: primary site id: 2 site name: DC1 done.
보조에 대한 sr_stateConfiguration
의 예:
clusternode1:rh2adm> hdbnsutil -sr_stateConfiguration System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~ mode: syncmem site id: 1 site name: DC2 active primary site: 2 primary masters: clusternode1 done.
보조 데이터베이스에서 현재 기본 노드가 무엇인지 확인할 수도 있습니다. 장애 조치 중에 두 개의 기본 데이터베이스가 있으며 이 정보는 잠재적인 기본 데이터베이스가 잘못된지 결정하고 보조 데이터베이스로 다시 등록해야 합니다.During the failover it happens to have two primary databases and this information is needed to decide which potential primary database is wrong and needs to be re-registered as secondary.
자세한 내용은 예를 참조하십시오 . 기본 및 보조 시스템의 상태 점검을 참조하십시오.
6.1.6. 보조 노드 등록
SAP HANA 시스템 복제 환경에 대한 보조 데이터베이스를 등록하는 사전 조건:
등록 예:
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=clusternode2 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC1 --online --operationMode not set; using default from global.ini/[system_replication]/operation_mode: logreplay adding site ... collecting information ... updating local ini files ... done.
등록하면 global.ini
파일이 자동으로 업데이트됩니다.
… 에서 다음을 수행합니다.
# global.ini last modified 2023-06-15 09:55:05.665341 by /usr/sap/RH2/HDB02/exe/hdbnsutil -initTopology --workergroup=default --set_user_system_pw [multidb] mode = multidb database_isolation = low singletenant = yes [persistence] basepath_datavolumes = /hana/data/RH2 basepath_logvolumes = /hana/log/RH2
…:
# global.ini last modified 2023-06-15 11:25:44.516946 by hdbnsutil -sr_register --remoteHost=node2 --remoteInstance=02 --replicationMode=syncmem --name=DC1 --online [multidb] mode = multidb database_isolation = low singletenant = yes [persistence] basepath_datavolumes = /hana/data/RH2 basepath_logvolumes = /hana/log/RH2 [system_replication] timetravel_logreplay_mode = auto site_id = 3 mode = syncmem actual_mode = syncmem site_name = DC1 operation_mode = logreplay [system_replication_site_masters] 1 = clusternode2:30201
6.1.7. sapcontrol
GetProcessList
활성 SAP HANA 데이터베이스의 프로세스 확인
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetProcessList clusternode1: Wed Jun 7 08:23:03 2023 07.06.2023 08:23:03 GetProcessList OK name, description, dispstatus, textstatus, starttime, elapsedtime, pid hdbdaemon, HDB Daemon, GREEN, Running, 2023 06 02 16:59:42, 111:23:21, 4245 hdbcompileserver, HDB Compileserver, GREEN, Running, 2023 06 02 17:01:35, 111:21:28, 7888 hdbindexserver, HDB Indexserver-RH2, GREEN, Running, 2023 06 02 17:01:36, 111:21:27, 7941 hdbnameserver, HDB Nameserver, GREEN, Running, 2023 06 02 17:01:29, 111:21:34, 7594 hdbpreprocessor, HDB Preprocessor, GREEN, Running, 2023 06 02 17:01:35, 111:21:28, 7891 hdbwebdispatcher, HDB Web Dispatcher, GREEN, Running, 2023 06 02 17:01:42, 111:21:21, 8339 hdbxsengine, HDB XSEngine-RH2, GREEN, Running, 2023 06 02 17:01:36, 111:21:27, 7944
6.1.8. sapcontrol
GetInstanceList
이렇게 하면 SAP HANA 데이터베이스의 인스턴스 상태가 나열됩니다. 포트도 표시됩니다. 상태 이름은 다음 세 가지가 있습니다.
- GREEN(실행 중)
- GRAY(중지됨)
- YELLOW(현재 상태 변경)
활성 인스턴스의 예:
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList clusternode1: Wed Jun 7 08:24:13 2023 07.06.2023 08:24:13 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus remotehost3, 2, 50213, 50214, 0.3, HDB|HDB_WORKER, GREEN
중지된 인스턴스의 예:
clusternode1:rh2adm> sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList 22.06.2023 09:14:55 GetSystemInstanceList OK hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus remotehost3, 2, 50213, 50214, 0.3, HDB|HDB_WORKER, GRAY
6.1.9. hdbcons
예
또한HDB 콘솔을 사용하여 데이터베이스에 대한 정보를 표시할 수도 있습니다.
-
hdbcons -e hdbindexserver 'replication info'
-
hdbcons -e hdbindexserver 도움말
더 많은 옵션
'replication info'의 예:
clusternode1:rh2adm> hdbcons -e hdbindexserver 'replication info' hdbcons -p `pgrep hdbindex` 'replication info' SAP HANA DB Management Client Console (type '\?' to get help for client commands) Try to open connection to server process with PID 451925 SAP HANA DB Management Server Console (type 'help' to get help for server commands) Executable: hdbindexserver (PID: 451925) [OK] -- ## Start command at: 2023-06-22 09:05:25.211 listing default statistics for volume 3 System Replication Primary Information ====================================== System Replication Primary Configuration [system_replication] logshipping_timeout = 30 [system_replication] enable_full_sync = false [system_replication] preload_column_tables = true [system_replication] ensure_backup_history = true [system_replication_communication] enable_ssl = off [system_replication] keep_old_style_alert = false [system_replication] enable_log_retention = auto [system_replication] logshipping_max_retention_size = 1048576 [system_replication] logshipping_async_buffer_size = 268435456 - lastLogPos : 0x4ab2700 - lastLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - lastConfirmedLogPos : 0x4ab2700 - lastConfirmedLogPosTimestamp: 22.06.2023-07.05.25 (1687417525193952) - lastSavepointVersion : 1286 - lastSavepointLogPos : 0x4ab0602 - lastSavepointTimestamp : 22.06.2023-07.02.42 (1687417362853007) 2 session registered. Session index 0 - SiteID : 3 - RemoteHost : 192.168.5.137 Log Connection - ptr : 0x00007ff04c0a1000 - channel : {<NetworkChannelSSLFilter>={<NetworkChannelBase>={this=140671686293528, fd=70, refCnt=2, idx=5, local=192.168.5.134/40203_tcp, remote=192.168.5.137/40406_tcp, state=Connected, pending=[r---]}}} - SSLActive : false - mode : syncmem Data Connection - ptr : 0x00007ff08b730000 - channel : {<NetworkChannelSSLFilter>={<NetworkChannelBase>={this=140671436247064, fd=68, refCnt=2, idx=6, local=192.168.5.134/40203_tcp, remote=192.168.5.137/40408_tcp, state=Connected, pending=[r---]}}} - SSLActive : false Primary Statistics - Creation Timestamp : 20.06.2023-13.55.07 (1687269307772532) - Last Reset Timestamp : 20.06.2023-13.55.07 (1687269307772532) - Statistic Reset Count : 0 - ReplicationMode : syncmem - OperationMode : logreplay - ReplicationStatus : ReplicationStatus_Active - ReplicationStatusDetails : - ReplicationFullSync : DISABLED - shippedLogPos : 0x4ab2700 - shippedLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - sentLogPos : 0x4ab2700 - sentLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - sentMaxLogWriteEndPosition : 0x4ab2700 - sentMaxLogWriteEndPositionReqCnt: 0x1f6b8 - shippedLogBuffersCount : 142439 - shippedLogBuffersSize : 805855232 bytes - shippedLogBuffersSizeUsed : 449305792 bytes (55.76clusternode1:rh2adm>) - shippedLogBuffersSizeNet : 449013696 bytes (55.72clusternode1:rh2adm>) - shippedLogBufferDuration : 83898615 microseconds - shippedLogBufferDurationMin : 152 microseconds - shippedLogBufferDurationMax : 18879 microseconds - shippedLogBufferDurationSend : 7301067 microseconds - shippedLogBufferDurationComp : 0 microseconds - shippedLogBufferThroughput : 9709099.18 bytes/s - shippedLogBufferPendingDuration : 80583785 microseconds - shippedLogBufferRealThrougput : 10073190.40 bytes/s - replayLogPos : 0x4ab2700 - replayLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - replayBacklog : 0 microseconds - replayBacklogSize : 0 bytes - replayBacklogMax : 822130896 microseconds - replayBacklogSizeMax : 49455104 bytes - shippedSavepointVersion : 0 - shippedSavepointLogPos : 0x0 - shippedSavepointTimestamp : not set - shippedFullBackupCount : 0 - shippedFullBackupSize : 0 bytes - shippedFullBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedFullBackupDuration : 0 microseconds - shippedFullBackupDurationComp : 0 microseconds - shippedFullBackupThroughput : 0.00 bytes/s - shippedFullBackupStreamCount : 0 - shippedFullBackupResumeCount : 0 - shippedLastFullBackupSize : 0 bytes - shippedLastFullBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedLastFullBackupStart : not set - shippedLastFullBackupEnd : not set - shippedLastFullBackupDuration : 0 microseconds - shippedLastFullBackupStreamCount : 0 - shippedLastFullBackupResumeCount : 0 - shippedDeltaBackupCount : 0 - shippedDeltaBackupSize : 0 bytes - shippedDeltaBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedDeltaBackupDuration : 0 microseconds - shippedDeltaBackupDurationComp : 0 microseconds - shippedDeltaBackupThroughput : 0.00 bytes/s - shippedDeltaBackupStreamCount : 0 - shippedDeltaBackupResumeCount : 0 - shippedLastDeltaBackupSize : 0 bytes - shippedLastDeltaBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedLastDeltaBackupStart : not set - shippedLastDeltaBackupEnd : not set - shippedLastDeltaBackupDuration : 0 microseconds - shippedLastDeltaBackupStreamCount : 0 - shippedLastDeltaBackupResumeCount : 0 - currentTransferType : None - currentTransferSize : 0 bytes - currentTransferPosition : 0 bytes (0clusternode1:rh2adm>) - currentTransferStartTime : not set - currentTransferThroughput : 0.00 MB/s - currentTransferStreamCount : 0 - currentTransferResumeCount : 0 - currentTransferResumeStartTime : not set - Secondary sync'ed via Log Count : 1 - syncLogCount : 3 - syncLogSize : 62840832 bytes - backupHistoryComplete : 1 - backupLogPosition : 0x4a99980 - backupLogPositionUpdTimestamp : 22.06.2023-06.56.27 (0x5feb26227e7af) - shippedMissingLogCount : 0 - shippedMissingLogSize : 0 bytes - backlogSize : 0 bytes - backlogTime : 0 microseconds - backlogSizeMax : 0 bytes - backlogTimeMax : 0 microseconds - Secondary Log Connect time : 20.06.2023-13.55.31 (1687269331361049) - Secondary Data Connect time : 20.06.2023-13.55.33 (1687269333768341) - Secondary Log Close time : not set - Secondary Data Close time : 20.06.2023-13.55.31 (1687269331290050) - Secondary Log Reconnect Count : 0 - Secondary Log Failover Count : 0 - Secondary Data Reconnect Count : 1 - Secondary Data Failover Count : 0 ---------------------------------------------------------------- Session index 1 - SiteID : 2 - RemoteHost : 192.168.5.133 Log Connection - ptr : 0x00007ff0963e4000 - channel : {<NetworkChannelSSLFilter>={<NetworkChannelBase>={this=140671506282520, fd=74, refCnt=2, idx=0, local=192.168.5.134/40203_tcp, remote=192.168.5.133/40404_tcp, state=Connected, pending=[r---]}}} - SSLActive : false - mode : syncmem Data Connection - ptr : 0x00007ff072c04000 - channel : {<NetworkChannelSSLFilter>={<NetworkChannelBase>={this=140671463146520, fd=75, refCnt=2, idx=1, local=192.168.5.134/40203_tcp, remote=192.168.5.133/40406_tcp, state=Connected, pending=[r---]}}} - SSLActive : false Primary Statistics - Creation Timestamp : 20.06.2023-13.55.49 (1687269349892111) - Last Reset Timestamp : 20.06.2023-13.55.49 (1687269349892111) - Statistic Reset Count : 0 - ReplicationMode : syncmem - OperationMode : logreplay - ReplicationStatus : ReplicationStatus_Active - ReplicationStatusDetails : - ReplicationFullSync : DISABLED - shippedLogPos : 0x4ab2700 - shippedLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - sentLogPos : 0x4ab2700 - sentLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - sentMaxLogWriteEndPosition : 0x4ab2700 - sentMaxLogWriteEndPositionReqCnt: 0x1f377 - shippedLogBuffersCount : 142326 - shippedLogBuffersSize : 793939968 bytes - shippedLogBuffersSizeUsed : 437675200 bytes (55.13clusternode1:rh2adm>) - shippedLogBuffersSizeNet : 437565760 bytes (55.11clusternode1:rh2adm>) - shippedLogBufferDuration : 76954026 microseconds - shippedLogBufferDurationMin : 115 microseconds - shippedLogBufferDurationMax : 19285 microseconds - shippedLogBufferDurationSend : 2951495 microseconds - shippedLogBufferDurationComp : 0 microseconds - shippedLogBufferThroughput : 10446578.53 bytes/s - shippedLogBufferPendingDuration : 73848247 microseconds - shippedLogBufferRealThrougput : 10875889.97 bytes/s - replayLogPos : 0x4ab2700 - replayLogPosTimestamp : 22.06.2023-07.05.25 (1687417525193952) - replayBacklog : 0 microseconds - replayBacklogSize : 0 bytes - replayBacklogMax : 113119944 microseconds - replayBacklogSizeMax : 30171136 bytes - shippedSavepointVersion : 0 - shippedSavepointLogPos : 0x0 - shippedSavepointTimestamp : not set - shippedFullBackupCount : 0 - shippedFullBackupSize : 0 bytes - shippedFullBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedFullBackupDuration : 0 microseconds - shippedFullBackupDurationComp : 0 microseconds - shippedFullBackupThroughput : 0.00 bytes/s - shippedFullBackupStreamCount : 0 - shippedFullBackupResumeCount : 0 - shippedLastFullBackupSize : 0 bytes - shippedLastFullBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedLastFullBackupStart : not set - shippedLastFullBackupEnd : not set - shippedLastFullBackupDuration : 0 microseconds - shippedLastFullBackupStreamCount : 0 - shippedLastFullBackupResumeCount : 0 - shippedDeltaBackupCount : 0 - shippedDeltaBackupSize : 0 bytes - shippedDeltaBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedDeltaBackupDuration : 0 microseconds - shippedDeltaBackupDurationComp : 0 microseconds - shippedDeltaBackupThroughput : 0.00 bytes/s - shippedDeltaBackupStreamCount : 0 - shippedDeltaBackupResumeCount : 0 - shippedLastDeltaBackupSize : 0 bytes - shippedLastDeltaBackupSizeNet : 0 bytes (-nanclusternode1:rh2adm>) - shippedLastDeltaBackupStart : not set - shippedLastDeltaBackupEnd : not set - shippedLastDeltaBackupDuration : 0 microseconds - shippedLastDeltaBackupStreamCount : 0 - shippedLastDeltaBackupResumeCount : 0 - currentTransferType : None - currentTransferSize : 0 bytes - currentTransferPosition : 0 bytes (0clusternode1:rh2adm>) - currentTransferStartTime : not set - currentTransferThroughput : 0.00 MB/s - currentTransferStreamCount : 0 - currentTransferResumeCount : 0 - currentTransferResumeStartTime : not set - Secondary sync'ed via Log Count : 1 - syncLogCount : 3 - syncLogSize : 61341696 bytes - backupHistoryComplete : 1 - backupLogPosition : 0x4a99980 - backupLogPositionUpdTimestamp : 22.06.2023-06.56.27 (0x5feb26227e670) - shippedMissingLogCount : 0 - shippedMissingLogSize : 0 bytes - backlogSize : 0 bytes - backlogTime : 0 microseconds - backlogSizeMax : 0 bytes - backlogTimeMax : 0 microseconds - Secondary Log Connect time : 20.06.2023-13.56.21 (1687269381053599) - Secondary Data Connect time : 20.06.2023-13.56.27 (1687269387399610) - Secondary Log Close time : not set - Secondary Data Close time : 20.06.2023-13.56.21 (1687269381017244) - Secondary Log Reconnect Count : 0 - Secondary Log Failover Count : 0 - Secondary Data Reconnect Count : 1 - Secondary Data Failover Count : 0 ---------------------------------------------------------------- [OK] ## Finish command at: 2023-06-22 09:05:25.212 command took: 572.000 usec -- [EXIT] -- [BYE]
도움말 예:
clusternode1:rh2adm> hdbcons -e hdbindexserver help SAP HANA DB Management Client Console (type '\?' to get help for client commands) Try to open connection to server process with PID 451925 SAP HANA DB Management Server Console (type 'help' to get help for server commands) Executable: hdbindexserver (PID: 451925) [OK] -- ## Start command at: 2023-06-22 09:07:16.784 Synopsis: help [<command name>]: Print command help - <command name> - Command name for which to display help Available commands: ae_tableload - Handle loading of column store tables and columns all - Print help and other info for all hdbcons commands authentication - Authentication management. binarysemaphore - BinarySemaphore management bye - Exit console client cd - ContainerDirectory management cfgreg - Basis Configurator checktopic - CheckTopic management cnd - ContainerNameDirectory management conditionalvariable - ConditionalVariable management connection - Connection management context - Execution context management (i.e., threads) converter - Converter management cpuresctrl - Manage cpu resources such as last-level cache allocation crash - Crash management crypto - Cryptography management (SSL/SAML/X509/Encryption). csaccessor - Display diagnostics related to the CSAccessor library ddlcontextstore - Get DdlContextStore information deadlockdetector - Deadlock detector. debug - Debug management distribute - Handling distributed systems dvol - DataVolume management ELF - ELF symbol resolution management encryption - Persistence encryption management eslog - Manipulate logger on extended storage event - Event management exit - Exit console client flightrecorder - Flight Recorder hananet - HANA-Net command interface help - Display help for a command or command list hkt - HANA Kernal Tracer (HKT) management indexmanager - Get IndexManager information, especially for IndexHandles itab - Internaltable diagnostics jexec - Information and actions for Job Executor/Scheduler licensing - Licensing management. log - Show information about logger and manipulate logger machine - Information about the machine topology mm - Memory management monitor - Monitor view command mproxy - Malloc proxy management msl - Mid size LOB management mutex - Mutex management numa - Provides NUMA statistics for all columns of a given table, broken down by column constituents like dictionary, data vector and index. nvmprovider - NVM Provider output - Command for managing output from the hdbcons page - Page management pageaccess - PageAccess management profiler - Profiler quit - Exit console client readwritelock - ReadWriteLock management replication - Monitor data and log replication resman - ResourceManager management rowstore - Row Store runtimedump - Generate a runtime dump. savepoint - Savepoint management semaphore - Semaphore management servicethreads - Thread information M_SERVICE_THREADS snapshot - Snapshot management stat - Statistics management statisticsservercontroller - StatisticsServer internals statreg - Statistics registry command syncprimi - Syncprimitive management (Mutex, CondVariable, Semaphore, BinarySemaphore, ReadWriteLock) table - Table Management tablepreload - Manage and monitor table preload trace - Trace management tracetopic - TraceTopic management transaction - Transaction management ut - UnifiedTable Management version - Version management vf - VirtualFile management x2 - get X2 info [OK] ## Finish command at: 2023-06-22 09:07:16.785 command took: 209.000 usec -- [EXIT] -- [BYE]
6.1.10. SAP HANA 백업 만들기
SAP HANA 시스템 복제를 사용하려면 먼저 기본 시스템에 백업을 만들어야 합니다.
이 작업을 수행하는 방법의 예는 사용자 < sid>adm
:입니다.
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d SYSTEMDB "BACKUP DATA USING FILE ('/hana/backup/')" clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -u system -d ${SAPSYSTEMNAME} "BACKUP DATA USING FILE ('/hana/backup/')"
6.1.11. 기본 데이터베이스에서 SAP HANA 시스템 복제 활성화
SAP HANA 시스템 복제를 기본 노드에서 활성화해야 합니다. 먼저 백업을 수행해야 합니다.
clusternode1:rh2adm> hdbnsutil -sr_enable --name=DC1 nameserver is active, proceeding ... successfully enabled system as system replication source site done.
6.1.12. 보조 노드에 데이터베이스 키 복사
데이터베이스 키를 보조 데이터베이스로 등록하려면 먼저 주 데이터베이스에서 보조 데이터베이스로 복사해야 합니다.
예를 들면 다음과 같습니다.
clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/data/SSFS_${SAPSYSTEMNAME}.DAT clusternode1:rh2adm> scp -rp /usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY remotehost3:/usr/sap/${SAPSYSTEMNAME}/SYS/global/security/rsecssfs/key/SSFS_${SAPSYSTEMNAME}.KEY
6.1.13. SAP HANA 시스템 복제를 위한 보조 노드 등록
먼저 데이터베이스 키가 보조 노드에 복사되었는지 확인하십시오. 그런 다음 등록 명령을 실행합니다.
clusternode1:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC1 --remoteName=DC3 --operationMode=logreplay --online
매개변수 설명:
-
remotehost
: 소스 데이터베이스를 실행하는 활성 노드의 호스트 이름 (기본) -
remoteInstance
: 데이터베이스의 인스턴스 번호 ReplicationMode
: 다음 옵션 중 하나-
sync
: 하드 디스크 동기화 -
Async
: 비동기 복제 -
syncmem
: 메모리 동기화
-
-
name
: 이 복제 사이트의 별칭입니다. -
remoteName
: 소스 데이터베이스의 별칭 이름 operationMode
: 다음 옵션 중 하나-
delta_datashipping
: 데이터가 주기적으로 전송됩니다. 테이버는 조금 더 오래 걸립니다. -
logreplay
: 원격 사이트에서 즉시 로그가 빨간색됩니다. takeover가 더 빠릅니다. -
logreplay_readaccess
: 두 번째 사이트에 대한 추가 logreplay 읽기 전용 액세스가 가능합니다.
-
6.1.14. SAP HANA 데이터베이스의 log_mode
확인
log_mode
를 설정하는 방법은 다음 두 가지가 있습니다.
-
log_mode=overwrite
-
log_mode=normal
: 이는 기본값이며 데이터베이스 인스턴스가 primary로 실행되는 경우에도 필요합니다. SAP HANA Multitarget 시스템 복제를 사용하면log_mode=normal
를 사용해야 합니다.log_mode
를 확인하는 가장 좋은 방법은hdbsql
을 사용하는 것입니다.
잘못된 덮어쓰기
항목이 포함된 예:
clusternode1:rh2adm> hdbsql -i ${TINSTANCE} -d ${SAPSYSTEMNAME} -u system Password: Welcome to the SAP HANA Database interactive terminal. Type: \h for help with commands \q to quit hdbsql RH2=> select * from m_inifile_contents where key='log_mode' FILE_NAME,LAYER_NAME,TENANT_NAME,HOST,SECTION,KEY,VALUE "global.ini","DEFAULT","","","persistence","log_mode","normal" "global.ini","HOST","","node2","persistence","log_mode","overwrite" 2 rows selected (overall time 46.931 msec; server time 30.845 msec) hdbsql RH2=>exit
이 경우 두 개의 global.ini
파일이 있습니다.
DEFAULT
-
/usr/sap/${SAPSYSTEMNAME}/SYS/global/hdb/custom/config/global.ini
-
호스트
-
/HANA/shared/${SAPSYSTEMNAME}/HDB$TINSTANCE}/${HOSTNAME}/global.ini
HOST
값은DEFAULT
값을 덮어씁니다. 데이터베이스가 시작되기 전에 두 파일을 모두 확인한 다음hdbsql
을 다시 사용하여 올바른 설정을 확인할 수도 있습니다. global.ini 파일을 편집하여log_mode
를 변경할 수 있습니다.
-
예제:
clusternode1:rh2adm> vim /hana/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.ini # global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver [persistence] log_mode = overwrite
# global.ini last modified 2023-04-06 16:15:03.521715 by hdbnameserver [persistence] log_mode = normal
global.ini
파일을 확인하거나 업데이트한 후 log_mode
값을 확인합니다.
clusternode1:rh2adm> hdbsql -d ${SAPSYSTEMNAME} -i ${TINSTANCE} -u SYSTEM; hdbsql RH2=> select * from m_inifile_contents where section='persistence' and key='log_mode' FILE_NAME,LAYER_NAME,TENANT_NAME,HOST,SECTION,KEY,VALUE "global.ini","DEFAULT","","","persistence","log_mode","normal" "global.ini","HOST","","node2","persistence","log_mode","normal" 2 rows selected (overall time 60.982 msec; server time 20.420 msec)
또한 섹션에서는 이 매개 변수를 [persistence]
섹션에 설정해야 함을 보여줍니다. 로그 모드를 덮어쓰기
에서 정상으로
변경하면 데이터베이스를 복구할 수 있도록 전체 데이터 백업을 생성하는 것이 좋습니다.
6.1.15. 기본 데이터베이스 검색
예를 들어 기본 노드를 식별하는 방법은 여러 가지가 있습니다.
-
pcs status | grep Promoted
-
hdbnsutil -sr_stateConfiguration
-
systemReplicationStatus.py
옵션 1 - systemReplicationStatus.py
스크립트 및 필터의 다음 예제에서는 모든 노드의 기본 데이터베이스 위치를 반환합니다.
clusternode1:rh2adm> /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py --sapcontrol=1 | egrep -e "3${TINSTANCE}01/HOST|PRIMARY_MASTERS"| head -1 | awk -F"=" '{ print $2 }'
출력:
clusternode2
옵션 2 - 다음 예제에서는 모든 노드에 대해 비슷한 방식으로 systemReplicationStatus
를 표시합니다.
rh2adm>hdbnsutil -sr_state --sapcontrol=1 | grep site.*Mode
출력:
siteReplicationMode/DC1=primary siteReplicationMode/DC3=async siteReplicationMode/DC2=syncmem siteOperationMode/DC1=primary siteOperationMode/DC3=logreplay siteOperationMode/DC2=logreplay
6.1.16. 기본 가져 오기
기본 노드와 보조 노드를 확인하려면 복제 상태 확인 섹션을 참조하십시오. 또한 다음도 참조하십시오.
- 클러스터를 유지 관리 모드로 설정
- 보조 노드에서 takeover를 시작합니다.
클러스터에 대한 유지보수 모드를
활성화하는 예는 다음과 같습니다.
[root@clusternode1]# pcs property set maintenance-mode=true
새 기본이 될 보조 항목에서 < sidadm> 사용자로
실행합니다.
clusternode1:rh2adm> hdbnsutil -sr_takeover
이 보조 데이터베이스는 기본이 되고, 다른 활성 보조 데이터베이스는 새 주 데이터베이스에 다시 등록되며 이전 주 데이터베이스를 보조 서버로 수동으로 다시 등록해야 합니다.
6.1.17. 이전 기본 사항을 보조로 다시 등록
클러스터가 중지되었거나 유지 관리 모드로 전환
되었는지 확인하십시오. 예제:
clusternode2:rh2adm> hdbnsutil -sr_register --remoteHost=remotehost3 --remoteInstance=${TINSTANCE} --replicationMode=syncmem --name=DC2 --online --remoteName=DC3 --operationMode=logreplay --force_full_replica --online
예제에서는 전체 복제를 사용하고 있습니다. SAP HANA 시스템 관리자는 전체 복제가 필요한 시기를 알아야 합니다.
6.1.18. 장애 조치에서 복구
SAP HANA 시스템 복제 상태 확인 및 기본 노드 검색을 참조하십시오. 정보가 일관되게 유지되는 것이 중요합니다. 노드가 systemReplicationStatus.py
출력에 포함되지 않고 시스템 복제 상태가 다른 경우 이 노드를 다시 등록해야 하는 경우 데이터베이스 관리자에게 확인하십시오.
이 문제를 해결하는 한 가지 방법은이 사이트를 새로운 보조로 다시 등록하는 것입니다.
경우에 따라 보조 인스턴스가 표시되지 않는 경우가 있습니다. 그런 다음 다시 등록하기 전에 이 사이트를 등록 취소합니다. 보조 DC1 등록 취소의 예:
clusternode1:rh2adm> hdbnsutil -sr_unregister --name=DC1
DC1 재등록 예:
clusternode1:rh2adm> hdbnsutil -sr_register --name=DC1 --remoteHost=node2 --remoteInstance=02 --replicationMode=sync --operationMode=logreplay --online
데이터베이스를 시작하고 실행 중인지 확인해야 합니다. 마지막으로 복제 상태를 확인합니다.
6.2. Pacemaker 명령
6.2.1. 클러스터 시작 및 중지
모든 노드에서 클러스터를 시작하려면 다음 명령을 실행합니다.
# pcs cluster start -all
재부팅 후 서비스가 활성화된 경우에만 클러스터가 자동으로 시작됩니다. 명령은 클러스터가 시작되었는지 여부와 데몬을 자동으로 시작할 수 있는지 확인하는 데 도움이 됩니다.
# pcs cluster status
다음을 사용하여 클러스터 자동 시작을 활성화할 수 있습니다.
# pcs cluster enable --all
기타 옵션은 다음과 같습니다.
- 클러스터를 중지합니다.
- 노드를 대기 상태로 설정합니다.
-
클러스터를
유지 관리 모드로 설정합니다
.
자세한 내용은 pcs cluster
help를 확인하십시오.
# pcs cluster stop --all # pcs cluster help
6.2.2. 클러스터를 유지 관리 모드로 전환
pacemaker 클러스터의 개입을 피하려면 유지보수 모드에
배치하여 클러스터를 "해제"할 수 있습니다.
# pcs property set maintenance-mode=true
유지 관리 모드를
확인하는 쉬운 방법은 리소스가 관리되지 않는지 확인하는 것입니다.
# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged): * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode1 (unmanaged) * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode2 (unmanaged) * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged): * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Unpromoted clusternode1 (unmanaged) * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Promoted clusternode2 (unmanaged) * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode2 (unmanaged)
클러스터가 유지 관리 모드에
있고 리소스 상태 변경 사항을 업데이트하지 않는 동안 클러스터 리소스를 새로 고침합니다.
# pcs resource refresh
이는 아직 올바르지 않은 항목이 있는지 여부를 나타내며 유지 관리 모드에서
제거되는 즉시 클러스터의 수정 조치를 취합니다.
다음을 실행하여 maintenance-mode
를 제거합니다.
# pcs property set maintenance-mode=false
이제 클러스터가 계속 작동합니다. 문제가 발생하면 지금 반응할 것입니다.
6.2.3. 클러스터 상태 확인
다음은 클러스터 상태를 확인하는 몇 가지 방법입니다.
클러스터가 실행 중인지 확인합니다.
# pcs cluster status
클러스터 및 모든 리소스를 확인합니다.
# pcs status
클러스터, 모든 리소스 및 모든 노드 속성을 확인합니다.
# pcs status --full
리소스만 확인합니다.
# pcs resource status --full
Stonith
기록을 확인하십시오.# pcs stonith history
위치 제한 조건을 확인합니다.
# pcs constraint location
펜싱을 구성하고 테스트해야 합니다. 가능한 자동화된 솔루션을 얻으려면 클러스터를 지속적으로 활성화해야 하므로 재부팅 후 클러스터가 자동으로 시작됩니다. 프로덕션 환경에서 재시작을 비활성화하면 예를 들어 충돌 후 수동 개입이 가능합니다. 데몬 상태도 확인하십시오.
예제:
# pcs status --full Cluster name: cluster1 Status of pacemakerd: 'Pacemaker is running' (last updated 2023-06-22 17:56:01 +02:00) Cluster Summary: * Stack: corosync * Current DC: clusternode2 (2) (version 2.1.5-7.el9-a3f44794f94) - partition with quorum * Last updated: Thu Jun 22 17:56:01 2023 * Last change: Thu Jun 22 17:53:34 2023 by root via crm_attribute on clusternode1 * 2 nodes configured * 6 resource instances configured Node List: * Node clusternode1 (1): online, feature set 3.16.2 * Node clusternode2 (2): online, feature set 3.16.2 Full List of Resources: * h7fence (stonith:fence_rhevm): Started clusternode2 * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode1 * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode2 * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Promoted clusternode1 * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Unpromoted clusternode2 * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode1 Node Attributes: * Node: clusternode1 (1): * hana_rh2_clone_state : PROMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode2 * hana_rh2_roles : 4:P:master1:master:worker:master * hana_rh2_site : DC1 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : PRIM * hana_rh2_version : 2.00.059.02 * hana_rh2_vhost : clusternode1 * lpa_rh2_lpt : 1687449214 * master-SAPHana_RH2_02 : 150 * Node: clusternode2 (2): * hana_rh2_clone_state : DEMOTED * hana_rh2_op_mode : logreplay * hana_rh2_remoteHost : clusternode1 * hana_rh2_roles : 4:S:master1:master:worker:master * hana_rh2_site : DC2 * hana_rh2_sra : - * hana_rh2_srah : - * hana_rh2_srmode : syncmem * hana_rh2_sync_state : SOK * hana_rh2_version : 2.00.059.02 * hana_rh2_vhost : clusternode2 * lpa_rh2_lpt : 30 * master-SAPHana_RH2_02 : 100 Migration Summary: Tickets: PCSD Status: clusternode1: Online clusternode2: Online Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
6.2.4. 리소스 상태 확인
pcs 리소스
를 사용하여 모든 리소스의 상태를 확인합니다. 그러면 리소스 목록과 현재 상태가 출력됩니다.
예제:
# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * Started: [ clusternode1 clusternode2 ] * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * Promoted: [ clusternode1 ] * Unpromoted: [ clusternode2 ] * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode1
6.2.5. 리소스 구성 확인
다음은 현재 리소스 구성을 표시합니다.
# pcs resource config Resource: vip_RH2_02_MASTER (class=ocf provider=heartbeat type=IPaddr2) Attributes: vip_RH2_02_MASTER-instance_attributes ip=192.168.5.136 Operations: monitor: vip_RH2_02_MASTER-monitor-interval-10s interval=10s timeout=20s start: vip_RH2_02_MASTER-start-interval-0s interval=0s timeout=20s stop: vip_RH2_02_MASTER-stop-interval-0s interval=0s timeout=20s Clone: SAPHanaTopology_RH2_02-clone Meta Attributes: SAPHanaTopology_RH2_02-clone-meta_attributes clone-max=2 clone-node-max=1 interleave=true Resource: SAPHanaTopology_RH2_02 (class=ocf provider=heartbeat type=SAPHanaTopology) Attributes: SAPHanaTopology_RH2_02-instance_attributes InstanceNumber=02 SID=RH2 Operations: methods: SAPHanaTopology_RH2_02-methods-interval-0s interval=0s timeout=5 monitor: SAPHanaTopology_RH2_02-monitor-interval-10 interval=10 timeout=600 reload: SAPHanaTopology_RH2_02-reload-interval-0s interval=0s timeout=5 start: SAPHanaTopology_RH2_02-start-interval-0s interval=0s timeout=600 stop: SAPHanaTopology_RH2_02-stop-interval-0s interval=0s timeout=600 Clone: SAPHana_RH2_02-clone Meta Attributes: SAPHana_RH2_02-clone-meta_attributes clone-max=2 clone-node-max=1 interleave=true notify=true promotable=true Resource: SAPHana_RH2_02 (class=ocf provider=heartbeat type=SAPHana) Attributes: SAPHana_RH2_02-instance_attributes AUTOMATED_REGISTER=true DUPLICATE_PRIMARY_TIMEOUT=300 HANA_CALL_TIMEOUT=10 InstanceNumber=02 PREFER_SITE_TAKEOVER=true SID=RH2 Operations: demote: SAPHana_RH2_02-demote-interval-0s interval=0s timeout=3600 methods: SAPHana_RH2_02-methods-interval-0s interval=0s timeout=5 monitor: SAPHana_RH2_02-monitor-interval-251 interval=251 timeout=700 role=Unpromoted monitor: SAPHana_RH2_02-monitor-interval-249 interval=249 timeout=700 role=Promoted promote: SAPHana_RH2_02-promote-interval-0s interval=0s timeout=3600 reload: SAPHana_RH2_02-reload-interval-0s interval=0s timeout=5 start: SAPHana_RH2_02-start-interval-0s interval=0s timeout=3200 stop: SAPHana_RH2_02-stop-interval-0s interval=0s timeout=3100
그러면 설치 및 구성된 리소스 에이전트를 구성하는 데 사용되는 모든 매개 변수가 나열됩니다.
6.2.6. saphana 리소스 옵션 AUTOMATED_REGISTER=true
SAPHana 리소스에서 이 옵션을 사용하는 경우 pacemaker는 보조 데이터베이스를 자동으로 다시 등록합니다.
첫 번째 테스트에 이 옵션을 사용하는 것이 좋습니다. AUTOMATED_REGISTER=false
를 사용하는 경우 관리자는 보조 노드를 수동으로 다시 등록해야 합니다.
6.2.7. 리소스 처리
리소스 관리를 위한 몇 가지 옵션이 있습니다. 자세한 내용은 사용 가능한 도움말을 확인하십시오.
# pcs resource help
사용된 리소스 에이전트를 나열합니다.
# pcs resource config | grep "type=" | awk -F"type=" '{ print $2 }' | sed -e "s/)//g"
출력 예:
IPaddr2 SAPHanaTopology SAPHana
특정 리소스 에이전트 설명 및 구성 매개변수를 표시합니다.
# pcs resource describe <resource agent>
예(출력 없음):
# pcs resource describe IPaddr2
리소스 에이전트 IPaddr2
의 예(출력 포함):
Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPaddr2') ocf:heartbeat:IPaddr2 - Manages virtual IPv4 and IPv6 addresses (Linux specific version) This Linux-specific resource manages IP alias IP addresses. It can add an IP alias, or remove one. In addition, it can implement Cluster Alias IP functionality if invoked as a clone resource. If used as a clone, "shared address with a trivial, stateless (autonomous) load-balancing/mutual exclusion on ingress" mode gets applied (as opposed to "assume resource uniqueness" mode otherwise). For that, Linux firewall (kernel and userspace) is assumed, and since recent distributions are ambivalent in plain "iptables" command to particular back-end resolution, "iptables-legacy" (when present) gets prioritized so as to avoid incompatibilities (note that respective ipt_CLUSTERIP firewall extension in use here is, at the same time, marked deprecated, yet said "legacy" layer can make it workable, literally, to this day) with "netfilter" one (as in "iptables-nft"). In that case, you should explicitly set clone-node-max >= 2, and/or clone-max < number of nodes. In case of node failure, clone instances need to be re- allocated on surviving nodes. This would not be possible if there is already an instance on those nodes, and clone-node-max=1 (which is the default). When the specified IP address gets assigned to a respective interface, the resource agent sends unsolicited ARP (Address Resolution Protocol, IPv4) or NA (Neighbor Advertisement, IPv6) packets to inform neighboring machines about the change. This functionality is controlled for both IPv4 and IPv6 by shared 'arp_*' parameters. Resource options: ip (required) (unique): The IPv4 (dotted quad notation) or IPv6 address (colon hexadecimal notation) example IPv4 "192.168.1.1". example IPv6 "2001:db8:DC28:0:0:FC57:D4C8:1FFF". nic: The base network interface on which the IP address will be brought online. If left empty, the script will try and determine this from the routing table. Do NOT specify an alias interface in the form eth0:1 or anything here; rather, specify the base interface only. If you want a label, see the iflabel parameter. Prerequisite: There must be at least one static IP address, which is not managed by the cluster, assigned to the network interface. If you can not assign any static IP address on the interface, modify this kernel parameter: sysctl -w net.ipv4.conf.all.promote_secondaries=1 # (or per device) cidr_netmask: The netmask for the interface in CIDR format (e.g., 24 and not 255.255.255.0) If unspecified, the script will also try to determine this from the routing table. broadcast: Broadcast address associated with the IP. It is possible to use the special symbols '+' and '-' instead of the broadcast address. In this case, the broadcast address is derived by setting/resetting the host bits of the interface prefix. iflabel: You can specify an additional label for your IP address here. This label is appended to your interface name. The kernel allows alphanumeric labels up to a maximum length of 15 characters including the interface name and colon (e.g. eth0:foobar1234) A label can be specified in nic parameter but it is deprecated. If a label is specified in nic name, this parameter has no effect. lvs_support: Enable support for LVS Direct Routing configurations. In case a IP address is stopped, only move it to the loopback device to allow the local node to continue to service requests, but no longer advertise it on the network. Notes for IPv6: It is not necessary to enable this option on IPv6. Instead, enable 'lvs_ipv6_addrlabel' option for LVS-DR usage on IPv6. lvs_ipv6_addrlabel: Enable adding IPv6 address label so IPv6 traffic originating from the address's interface does not use this address as the source. This is necessary for LVS-DR health checks to realservers to work. Without it, the most recently added IPv6 address (probably the address added by IPaddr2) will be used as the source address for IPv6 traffic from that interface and since that address exists on loopback on the realservers, the realserver response to pings/connections will never leave its loopback. See RFC3484 for the detail of the source address selection. See also 'lvs_ipv6_addrlabel_value' parameter. lvs_ipv6_addrlabel_value: Specify IPv6 address label value used when 'lvs_ipv6_addrlabel' is enabled. The value should be an unused label in the policy table which is shown by 'ip addrlabel list' command. You would rarely need to change this parameter. mac: Set the interface MAC address explicitly. Currently only used in case of the Cluster IP Alias. Leave empty to chose automatically. clusterip_hash: Specify the hashing algorithm used for the Cluster IP functionality. unique_clone_address: If true, add the clone ID to the supplied value of IP to create a unique address to manage arp_interval: Specify the interval between unsolicited ARP (IPv4) or NA (IPv6) packets in milliseconds. This parameter is deprecated and used for the backward compatibility only. It is effective only for the send_arp binary which is built with libnet, and send_ua for IPv6. It has no effect for other arp_sender. arp_count: Number of unsolicited ARP (IPv4) or NA (IPv6) packets to send at resource initialization. arp_count_refresh: For IPv4, number of unsolicited ARP packets to send during resource monitoring. Doing so helps mitigate issues of stuck ARP caches resulting from split-brain situations. arp_bg: Whether or not to send the ARP (IPv4) or NA (IPv6) packets in the background. The default is true for IPv4 and false for IPv6. arp_sender: For IPv4, the program to send ARP packets with on start. Available options are: - send_arp: default - ipoibarping: default for infiniband interfaces if ipoibarping is available - iputils_arping: use arping in iputils package - libnet_arping: use another variant of arping based on libnet send_arp_opts: For IPv4, extra options to pass to the arp_sender program. Available options are vary depending on which arp_sender is used. A typical use case is specifying '-A' for iputils_arping to use ARP REPLY instead of ARP REQUEST as Gratuitous ARPs. flush_routes: Flush the routing table on stop. This is for applications which use the cluster IP address and which run on the same physical host that the IP address lives on. The Linux kernel may force that application to take a shortcut to the local loopback interface, instead of the interface the address is really bound to. Under those circumstances, an application may, somewhat unexpectedly, continue to use connections for some time even after the IP address is deconfigured. Set this parameter in order to immediately disable said shortcut when the IP address goes away. run_arping: For IPv4, whether or not to run arping for collision detection check. nodad: For IPv6, do not perform Duplicate Address Detection when adding the address. noprefixroute: Use noprefixroute flag (see 'man ip-address'). preferred_lft: For IPv6, set the preferred lifetime of the IP address. This can be used to ensure that the created IP address will not be used as a source address for routing. Expects a value as specified in section 5.5.4 of RFC 4862. network_namespace: Specifies the network namespace to operate within. The namespace must already exist, and the interface to be used must be within the namespace. Default operations: start: interval=0s timeout=20s stop: interval=0s timeout=20s monitor: interval=10s timeout=20s
클러스터가 중지되면 모든 리소스도 중지됩니다. 클러스터가 유지 관리 모드에
배치되면 모든 리소스가 계속 실행되고 있지만 모니터링 또는 관리되지 않습니다.
6.2.8. 유지 관리 모드를 위한 클러스터 속성 처리
정의된 모든 속성을 나열합니다.
[root@clusternode1] pcs property Cluster Properties: cluster-infrastructure: corosync cluster-name: cluster1 concurrent-fencing: true dc-version: 2.1.5-7.el9-a3f44794f94 hana_rh2_site_srHook_DC1: PRIM hana_rh2_site_srHook_DC2: SFAIL have-watchdog: false last-lrm-refresh: 1688548036 maintenance-mode: true priority-fencing-delay: 10s stonith-enabled: true stonith-timeout: 900
데이터베이스를 재구성하려면 구성이 완료될 때까지 변경 사항을 무시하도록 클러스터에 지시해야 합니다. 다음을 사용하여 클러스터를 유지보수 모드에
배치할 수 있습니다.
# pcs property set maintenance-mode=true
maintenance-mode
를 확인합니다.
# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged): * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode1 (unmanaged) * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode2 (unmanaged) * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged): * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Promoted clusternode1 (unmanaged) * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Unpromoted clusternode2 (unmanaged) * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode1 (unmanaged)
모든 리소스가 "관리되지 않음"인지 확인합니다.
[root@clusternode1]# pcs status Cluster name: cluster1 Status of pacemakerd: 'Pacemaker is running' (last updated 2023-06-27 16:02:15 +02:00) Cluster Summary: * Stack: corosync * Current DC: clusternode2 (version 2.1.5-7.el9-a3f44794f94) - partition with quorum * Last updated: Tue Jun 27 16:02:16 2023 * Last change: Tue Jun 27 16:02:14 2023 by root via cibadmin on clusternode1 * 2 nodes configured * 6 resource instances configured *** Resource management is DISABLED *** The cluster will not attempt to start, stop or recover services Node List: * Online: [ clusternode1 clusternode2 ] Full List of Resources: * h7fence (stonith:fence_rhevm): Started clusternode2 (unmanaged) * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02] (unmanaged): * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode1 (unmanaged) * SAPHanaTopology_RH2_02 (ocf:heartbeat:SAPHanaTopology): Started clusternode2 (unmanaged) * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable, unmanaged): * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Promoted clusternode1 (unmanaged) * SAPHana_RH2_02 (ocf:heartbeat:SAPHana): Unpromoted clusternode2 (unmanaged) * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode1 (unmanaged) Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
maintenance-mode
를 설정 해제하면 리소스가 다시 Managed로 전환됩니다.
# pcs property set maintenance-mode=false
6.2.9. 이동을 사용하여 SAPHana 리소스 장애 조치
SAP HANA 데이터베이스 장애 조치(failover) 방법의 간단한 예는 pcs resource move
명령을 사용하는 것입니다. 다음과 같이 복제 리소스 이름을 사용하고 리소스를 이동해야 합니다.
# pcs resource move <SAPHana-clone-resource>
이 예제에서 복제 리소스는 SAPHana_RH2_02-clone
:입니다.
[root@clusternode1]# pcs resource * Clone Set: SAPHanaTopology_RH2_02-clone [SAPHanaTopology_RH2_02]: * Started: [ clusternode1 clusternode2 ] * Clone Set: SAPHana_RH2_02-clone [SAPHana_RH2_02] (promotable): * Promoted: [ clusternode1 ] * Unpromoted: [ clusternode2 ] * vip_RH2_02_MASTER (ocf:heartbeat:IPaddr2): Started clusternode1
리소스를 이동합니다.
# pcs resource move SAPHana_RH2_02-clone Location constraint to move resource 'SAPHana_RH2_02-clone' has been created Waiting for the cluster to apply configuration changes... Location constraint created to move resource 'SAPHana_RH2_02-clone' has been removed Waiting for the cluster to apply configuration changes... resource 'SAPHana_RH2_02-clone' is promoted on node 'clusternode2'; unpromoted on node 'clusternode1'
나머지 제약 조건이 있는지 확인합니다.
# pcs constraint location
리소스를 지워 장애 조치 중에 생성된 위치 제약 조건을 제거할 수 있습니다. 예제:
[root@clusternode1]# pcs resource clear SAPHana_RH2_02-clone
"Migration Summary"에 남아 있는 경고 또는 항목이 있는지 확인합니다.
# pcs status --full
stonith
기록을 확인하십시오.
# pcs stonith history
필요한 경우 stonith 기록을 지웁니다.
# pcs stonith history cleanup
2.1.5 이전의 pacemaker 버전을 사용하는 경우 pcs resource move를 실행할 때 제약 조건을 관리하고 나머지 제약 조건을 확인할 수 있습니다.
6.2.10. 페일오버 및 동기화 상태 모니터링
모든 pacemaker 작업은 클러스터 노드의 /var/log/messages
파일에 기록됩니다. 다른 많은 메시지가 있으므로 SAP 리소스 에이전트와 관련된 메시지를 읽기가 어려울 수 있습니다. SAP 리소스 에이전트와 관련된 메시지만 필터링하는 명령 별칭을 구성할 수 있습니다.
별칭 tmsl
예:
# alias tmsl='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register|WAITING4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT"'
tsml
출력 예:
[root@clusternode1]# tmsl Jun 22 13:59:54 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: secondary with sync status SOK ==> possible takeover node Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: saphana_monitor_secondary: scoring_crm_master(4:S:master1:master:worker:master,SOK) Jun 22 13:59:55 clusternode1 SAPHana(SAPHana_RH2_02)[907482]: INFO: DEC: scoring_crm_master: sync(SOK) is matching syncPattern (SOK) Jun 22 14:04:06 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:04:06 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:04:06 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: secondary with sync status SOK ==> possible takeover node Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: saphana_monitor_secondary: scoring_crm_master(4:S:master1:master:worker:master,SOK) Jun 22 14:04:09 clusternode1 SAPHana(SAPHana_RH2_02)[914625]: INFO: DEC: scoring_crm_master: sync(SOK) is matching syncPattern (SOK) Jun 22 14:08:21 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:08:21 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:08:21 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:08:23 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:08:23 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:08:23 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: secondary with sync status SOK ==> possible takeover node Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: saphana_monitor_secondary: scoring_crm_master(4:S:master1:master:worker:master,SOK) Jun 22 14:08:24 clusternode1 SAPHana(SAPHana_RH2_02)[922136]: INFO: DEC: scoring_crm_master: sync(SOK) is matching syncPattern (SOK) Jun 22 14:12:35 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:12:35 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:12:36 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:12:38 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:12:38 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:12:38 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:12:38 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: secondary with sync status SOK ==> possible takeover node Jun 22 14:12:39 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:12:39 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:12:39 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:12:39 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: saphana_monitor_secondary: scoring_crm_master(4:S:master1:master:worker:master,SOK) Jun 22 14:12:39 clusternode1 SAPHana(SAPHana_RH2_02)[929408]: INFO: DEC: scoring_crm_master: sync(SOK) is matching syncPattern (SOK) Jun 22 14:14:01 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_clone_state[clusternode2]: PROMOTED -> DEMOTED Jun 22 14:14:02 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_clone_state[clusternode2]: DEMOTED -> UNDEFINED Jun 22 14:14:19 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_clone_state[clusternode1]: DEMOTED -> PROMOTED Jun 22 14:14:21 clusternode1 SAPHana(SAPHana_RH2_02)[932762]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:14:21 clusternode1 SAPHana(SAPHana_RH2_02)[932762]: INFO: DEC: hana_rh2_site_srHook_DC1 is empty or SWAIT. Take polling attribute: hana_rh2_sync_state=SOK Jun 22 14:14:21 clusternode1 SAPHana(SAPHana_RH2_02)[932762]: INFO: DEC: Finally get_SRHOOK()=SOK Jun 22 14:15:14 clusternode1 SAPHana(SAPHana_RH2_02)[932762]: INFO: DEC: hana_rh2_site_srHook_DC1=SWAIT Jun 22 14:15:22 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_sync_state[clusternode1]: SOK -> PRIM Jun 22 14:15:23 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_sync_state[clusternode2]: PRIM -> SOK Jun 22 14:15:23 clusternode1 SAPHana(SAPHana_RH2_02)[934810]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:15:25 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_clone_state[clusternode2]: UNDEFINED -> DEMOTED Jun 22 14:15:32 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_sync_state[clusternode2]: SOK -> SFAIL Jun 22 14:19:36 clusternode1 pacemaker-attrd[10150]: notice: Setting hana_rh2_sync_state[clusternode2]: SFAIL -> SOK Jun 22 14:19:36 clusternode1 SAPHana(SAPHana_RH2_02)[942693]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:23:49 clusternode1 SAPHana(SAPHana_RH2_02)[950623]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:28:02 clusternode1 SAPHana(SAPHana_RH2_02)[958633]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:32:15 clusternode1 SAPHana(SAPHana_RH2_02)[966683]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:36:27 clusternode1 SAPHana(SAPHana_RH2_02)[974736]: INFO: ACT site=DC1, setting SOK for secondary (1) Jun 22 14:40:40 clusternode1 SAPHana(SAPHana_RH2_02)[982934]: INFO: ACT site=DC1, setting SOK for secondary (1)
필터를 사용하면 발생하는 상태 변경 사항을 더 쉽게 파악할 수 있습니다. 세부 정보가 누락된 경우 전체 메시지 파일을 열어 모든 정보를 읽을 수 있습니다.
장애 조치(failover) 후 리소스를 지울 수 있습니다. 또한 남은 위치 제약 조건이 없는지 확인하십시오.
6.2.11. 클러스터 일관성 확인
설치 중에 구성이 마지막으로 완료되기 전에 리소스가 시작되는 경우가 있습니다. 이로 인해 CIB(Cluster Information Base)에 항목이 발생하여 잘못된 동작이 발생할 수 있습니다. 이는 구성을 완료한 후 쉽게 확인하고 수동으로 수정할 수 있습니다.
SAPHana 리소스를 시작하면 누락된 항목이 다시 생성됩니다. 잘못된 항목은 pcs 명령으로 처리할 수 없으며 수동으로 제거해야 합니다.
CIB 항목을 확인합니다.
# cibadmin --query
DC3 및 SFAIL은 클러스터 멤버가 DC1 및 DC2인 경우 및 노드 간 동기화 상태가 SOK로 보고되는 경우 클러스터 정보 베이스에 존재하지 않아야 하는 항목입니다.
해당 항목을 확인하는 예:
# cibadmin --query |grep '"DC3"' # cibadmin --query |grep '"SFAIL"'
root 사용자로 클러스터의 모든 노드에서 명령을 실행할 수 있습니다. 일반적으로 명령 출력이 비어 있습니다. 구성에 오류가 계속 있는 경우 출력은 다음과 같습니다.
<nvpair id="SAPHanaSR-hana_rh1_glob_sec" name="hana_rh1_glob_sec" value="DC3"/>
이러한 항목은 다음 명령을 사용하여 제거할 수 있습니다.
# cibadmin --delete --xml-text '<...>'
위 예제의 항목을 제거하려면 다음을 입력해야 합니다. 출력에는 큰따옴표가 포함되어 있으므로 텍스트를 작은따옴표로 포함해야 합니다.
# cibadmin --delete --xml-text ' <nvpair id="SAPHanaSR-hana_rh1_glob_sec" name="hana_rh1_glob_sec" value="DC3"/>'
제거된 CIB 항목이 없는지 확인합니다. 반환된 출력은 비어 있어야 합니다.
# cibadmin --query |grep 'DC3"'
6.2.12. 클러스터 정리
장애 조치 테스트 중에 제약 조건 뒤에 남아 있고 다른 하나는 이전 테스트에서 남아 있을 수 있습니다.During the failover tests there might be left behind constraints and other remains from previous tests. 다음 테스트를 시작하기 전에 클러스터를 지워야 합니다.
클러스터 상태에 실패 이벤트가 있는지 확인합니다.
# pcs status --full
"Migration Summary"에 클러스터 경고 또는 항목이 표시되면 리소스를 지우고 정리해야 합니다.
# pcs resource clear SAPHana_RH2_02-clone # pcs resource cleanup SAPHana_RH2_02-clone
출력:
Cleaned up SAPHana_RH2_02:0 on clusternode1 Cleaned up SAPHana_RH2_02:1 on clusternode2
예를 들어 이전 장애 조치의 경우 원하지 않는 위치 제약 조건이 있는지 확인합니다.
# pcs constraint location
기존 제약 조건을 자세히 확인합니다.
# pcs constraint --full
리소스 이동 후 위치 제한 조건의 예:
Node: hana08 (score:-INFINITY) (role:Started) (id:cli-ban-SAPHana_RH2_02-clone-on-hana08)
이 위치 제약 조건을 지웁니다.
# pcs resource clear SAPHana_RH2_02-clone
제약 조건이 제약 조건 목록에서 사라졌는지 확인합니다. 유지되는 경우 제약 조건 ID를 사용하여 명시적으로 삭제합니다.
# pcs constraint delete cli-ban-SAPHana_RH2_02-clone-on-hana08
펜싱을 사용하여 여러 테스트를 실행하는 경우 stonith
기록을 지울 수도 있습니다.
# pcs stonith history cleanup
모든 pcs 명령은 root 사용자로 실행됩니다. 또한 Discover leftovers 를 확인하시기 바랍니다.
6.2.13. 기타 클러스터 명령
다양한 클러스터 명령 예
# pcs status --full # crm_mon -1Arf # Provides an overview # pcs resource # Lists all resources and shows if they are running # pcs constraint --full # Lists all constraint ids which should be removed # pcs cluster start --all # This will start the cluster on all nodes # pcs cluster stop --all # This will stop the cluster on all nodes # pcs node attribute # Lists node attributes
6.3. RHEL 및 일반 명령
6.3.1. 현재 상태 검색
여러 단계를 수행하여 환경의 현재 상태를 알아야 합니다. 환경 모니터링을 참조하십시오. 또한 다음을 수행하는 것이 좋습니다.
-
/var/log/messages
를 확인하고, 더 쉬운 로그 검토 를 위해 Aliases 를 사용합니다. - 적절한 작업을 계속하기 위해 이전 활동에서 클러스터를 정리해야 하는 경우가 있습니다. 남은 시간을 발견하고 필요한 경우 정리하십시오.
6.3.2. yum info
# yum info resource-agents-sap-hana Last metadata expiration check: 2:47:28 ago on Tue 06 Jun 2023 03:13:57 AM CEST. Installed Packages Name : resource-agents-sap-hana Epoch : 1 Version : 0.162.1 Release : 2.el9_2 Architecture : noarch Size : 174 k Source : resource-agents-sap-hana-0.162.1-2.el9_2.src.rpm Repository : @System Summary : SAP HANA cluster resource agents URL : https://github.com/SUSE/SAPHanaSR License : GPLv2+ Description : The SAP HANA resource agents interface with Pacemaker to allow : SAP instances to be managed in a cluster environment.
6.3.3. RPM 표시 버전
# rpm -q resource-agents-sap-hana resource-agents-sap-hana-0.162.1-2.el9_2.noarch
6.3.4. 모니터링에 대한 별칭
이를 쉘 프로필에 추가할 수 있습니다. 예제에서 루트 별칭은 < sid>adm
별칭에 따라 달라지며, 따라서 이미 정의되어 있어야 합니다.
root(/.
bashrc에
추가):# export ListInstances=$(/usr/sap/hostctrl/exe/saphostctrl -function ListInstances| head -1 ) export sid=$(echo "$ListInstances" |cut -d " " -f 5| tr [A-Z] [a-z]) export SID=$(echo $sid | tr [a-z] [A-Z]) export Instance=$(echo "$ListInstances" |cut -d " " -f 7 ) alias crmm='watch -n 1 crm_mon -1Arf' alias crmv='watch -n 1 /usr/local/bin/crmmv' alias cglo='su - ${sid}adm -c cglo' alias cdh='cd /usr/lib/ocf/resource.d/heartbeat' alias gtr='su - ${sid}adm -c gtr' alias hdb='su - ${sid}adm -c hdb' alias hdbi='su - ${sid}adm -c hdbi' alias hgrep='history | grep $1' alias hri='su - ${sid}adm -c hri' alias hris='su - ${sid}adm -c hris' alias killnode="echo 'b' > /proc/sysrq-trigger" alias lhc='su - ${sid}adm -c lhc' alias pit='ssh pitunnel' alias python='/usr/sap/${SID}/HDB${Instance}/exe/Python/bin/python' alias srstate='su - ${sid}adm -c srstate' alias shr='watch -n 5 "SAPHanaSR-monitor --sid=${SID}"' alias sgsi='su - ${sid}adm -c sgsi' alias srm='su - ${sid}adm -c srm' alias srs='su - ${sid}adm -c srs' alias sapstart='su - ${sid}adm -c sapstart' alias sapstop='su - ${sid}adm -c sapstop' alias tma='tmux attach -t `tmux ls | grep -v atta| head -1 |cut -d " " -f 1`' alias tm='tail -100f /var/log/messages |grep -v systemd' alias tms='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_${SID}_HDB${Instance}|sr_register|WAITING4 LPA|EXCLUDE as possible takeover node|SAPHanaSR|failed|${HOSTNAME}|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStop ped|FAILED"' alias tmss='tail -1000f /var/log/messages | grep -v systemd| egrep -s "secondary with sync status|Setting master-rsc_SAPHa na_${SID}_HDB${Instance}|sr_register|WAITING4LPA|EXCLUDE as possible takeover node|SAPHanaSR|failed|${HOSTNAME}|PROMOTED|DE MOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED"' alias tmm='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_${SID}_HDB${Instance}|sr_register|WAITING4 LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT|SOK|SFAIL|SAPHanaSR-mon"| grep -v systemd' alias tmsl='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_${SID}_HDB${Instance}|sr_register|WAITING 4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT|SOK|SFAIL|SAPHanaSR-mon"' alias vih='vim /usr/lib/ocf/resource.d/heartbeat/SAPHanaStart' alias vglo='su - ${sid}adm -c vglo'
&
lt;Sid>adm
(/.customer.sh
에 추가 ):alias tm='tail -100f /var/log/messages |grep -v systemd' alias tms='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register|WAITING4LPA|EXCLUDE as possible takeover node|SAPHanaSR|failed|${HOSTNAME}|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED"' alias tmsl='tail -1000f /var/log/messages | egrep -s "Setting master-rsc_SAPHana_$SAPSYSTEMNAME_HDB${TINSTANCE}|sr_register|WAITING4LPA|PROMOTED|DEMOTED|UNDEFINED|master_walk|SWAIT|WaitforStopped|FAILED|LPT"' alias sapstart='sapcontrol -nr ${TINSTANCE} -function StartSystem HDB;hdbi' alias sapstop='sapcontrol -nr ${TINSTANCE} -function StopSystem HDB;hdbi' alias sgsi='watch sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList' alias spl='watch sapcontrol -nr ${TINSTANCE} -function GetProcessList' alias splh='watch "sapcontrol -nr ${TINSTANCE} -function GetProcessList| grep hdbdaemon"' alias srm='watch "hdbnsutil -sr_state --sapcontrol=1 |grep site.*Mode"' alias srs="watch -n 5 'python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/systemReplicationStatus.py ; echo Status \$?'" alias srstate='watch -n 10 hdbnsutil -sr_state' alias hdb='watch -n 5 "sapcontrol -nr ${TINSTANCE} -function GetProcessList| egrep -s hdbdaemon\|hdbnameserver\|hdbindexserver "' alias hdbi='watch -n 5 "sapcontrol -nr ${TINSTANCE} -function GetProcessList| egrep -s hdbdaemon\|hdbnameserver\|hdbindexserver;sapcontrol -nr ${TINSTANCE} -function GetSystemInstanceList "' alias hgrep='history | grep $1' alias vglo="vim /usr/sap/$SAPSYSTEMNAME/SYS/global/hdb/custom/config/global.ini" alias vgloh="vim /hana/shared/${SAPSYSTEMNAME}/HDB${TINSTANCE}/${HOSTNAME}/global.ini" alias hri='hdbcons -e hdbindexserver "replication info"' alias hris='hdbcons -e hdbindexserver "replication info" | egrep -e "SiteID|ReplicationStatus_"' alias gtr='watch -n 10 /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/getTakeoverRecommendation.py --sapcontrol=1' alias lhc='/usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/Python/bin/python /usr/sap/$SAPSYSTEMNAME/HDB${TINSTANCE}/exe/python_support/landscapeHostConfiguration.py;echo $?'
7장. 참고 자료
7.1. Red Hat
7.2. SAP
- SAP HANA 플랫폼용 SAP HANA 관리 가이드
- Disaster Recovery Scenarios for Multitarget System Replication
- SAP HANA 시스템 복제 구성 매개변수
- 예: 기본 및 보조 시스템에서 상태 확인
- SAP HANA 시스템 복제 구성을 위한 일반 사전 요구 사항
- 로그 모드 변경
- 로그 누락으로 인해 이전 기본 사이트를 새 보조 사이트로 다시 등록하지 못했습니다
- landscapeHostConfiguration.py로 상태 확인
- SAP HANA Multi-Target System Replication 설정 방법
- SAP HANA 다중 대상 시스템 복제