OCI 전체 스택 DR 및 사용자정의 스크립트를 사용하여 OCI 데이터베이스 서비스에서 수동으로 구성된 Oracle Data Guard에 대한 데이터베이스 롤 변경 자동화
소개
Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR)는 클릭 한 번으로 전 세계 Oracle Cloud Infrastructure(OCI) 리전 간의 컴퓨트, 데이터베이스, 애플리케이션 전환을 통합관리합니다. 고객은 전문화된 관리 또는 변환 서버 없이도 기존 인프라, 데이터베이스 또는 애플리케이션을 재설계하거나 재설계하지 않고도 하나 이상의 비즈니스 시스템을 복구하는 데 필요한 단계를 자동화할 수 있습니다.
OCI Full Stack DR은 OCI의 다양한 Oracle Database 서비스에 대한 완전히 통합된 지원을 제공합니다. 이러한 데이터베이스는 OCI Full Stack DR 보호 그룹의 멤버로 추가될 수 있으므로 조정된 재해 복구 작업을 수행할 수 있습니다.
OCI의 Oracle Databases 관리형 서비스의 경우 OCI 콘솔, OCI CLI(Oracle Cloud Infrastructure Command Line Interface) 또는 OCI SDK를 사용하여 Oracle Data Guard를 구성하는 것이 좋습니다. 이렇게 하면 OCI Full Stack DR이 Data Guard 구성을 자동으로 감지하고 DR 계획의 일부로 롤 전환을 위한 내장 계획 그룹을 생성할 수 있습니다.
그러나 다음과 같은 특정 기술 또는 운영 요구 사항으로 인해 수동 Oracle Data Guard 구성(OCI의 기본 인터페이스 외부)이 필요한 시나리오가 있습니다.
- 응용 프로그램 특정 제약 조건
- 계단식 대기 구성입니다.
- 애플리케이션 호환성으로 인해 이전 데이터베이스 버전을 사용합니다.
이러한 경우 OCI 데이터베이스 서비스 제어 플레인에서 Oracle Data Guard 설정을 인식하지 못할 수도 있지만 OCI Full Stack DR은 여전히 유연성을 제공합니다. 사용자 정의 스크립트를 만들고 DR 계획 내의 사용자 정의 계획 그룹에 통합하여 역할 전환을 처리할 수 있습니다.
이 솔루션은 OCI 콘솔, SDK 또는 API를 통해 Data Guard 구성이 관리되는 Oracle Database Cloud 서비스와 호환되지 않습니다.
이 사용지침서에서는 Oracle Data Guard가 수동으로 구성된 OCI 데이터베이스 서비스에 대한 사용자정의 데이터베이스 처리기 스크립트를 사용하여 Oracle Data Guard 롤 전환을 관리하기 위한 표준화된 접근 방식을 안내합니다.
주: 이 사용자정의 스크립트 솔루션은 다음 OCI 데이터베이스 서비스에 적용됩니다.
- Oracle Base Database Service
- Oracle Exadata Database Service on Dedicated Infrastructure
- 엑사스케일 인프라의 Oracle Exadata Database Service
- Oracle Exadata Database Service on Cloud@Customer
아키텍처 설명
이 자습서에서는 Oracle Data Guard가 수동으로 구성된 두 개의 OCI 영역에 배치된 두 개의 DB 시스템과 함께 Oracle Base Database Service를 사용합니다.
그림 A: Oracle Base Database Service를 사용한 사용자정의 Data Guard 구성
자습서 전체의 정의 및 가정
-
영역:
-
지역 1(애슈번): 애슈번은 처음에 기본 리전으로 사용됩니다.
-
지역 2(피닉스): 처음에는 피닉스가 대기 영역으로 작동합니다.
-
-
구획: 이 배포 및 OCI Full Stack DR을 IT 거버넌스에 대한 표준 내에서 작동하는 모든 구획 체계로 자유롭게 구성할 수 있습니다. 이 자습서에 대한 모든 OCI 리소스를 단일 컴파트먼트로 구성하도록 선택했습니다.
목표
이 자습서에서는 다음 작업에 대해 다룹니다.
- 작업 1: Oracle Data Guard 구성을 확인하고 태그를 업데이트합니다.
- 작업 2: DR 보호 그룹을 만들고 연관시킵니다.
- 작업 3: DR 보호 그룹에 멤버를 추가합니다.
- 작업 4: 영역 2에서 DR 계획을 만들고 사용자 정의합니다.
- 작업 5: 영역 2에서 DR 계획에 대한 사전 검사를 실행합니다.
- 작업 6: 영역 2에서 전환 계획을 실행합니다.
- 작업 7: 영역 2에서 DR 계획을 만들고 사용자 정의합니다.
필수 조건
다음 리소스를 사용하여 자습서를 시작합니다.
| 리소스 | 지역 1 - 애슈번 | 지역 2 - 피닉스 |
|---|---|---|
| 구획 | app | app |
| DB 시스템 | adghol-12345 | adghol-12345 |
| DB 이름 | adghol | adghol |
| DB 고유 이름 | adghol-site0 | adghol-site1 |
| DB 역할 | 기본 | 대기 |
| 컴퓨트 VM | 스크립트-iad | 스크립트-phx |
| 버킷 | IAD | PHX |
주: 계속하기 전에 필요한 모든 선행 조건을 완료하십시오. 이러한 단계는 원활하고 성공적인 OCI Full Stack DR 설정을 위한 토대를 마련합니다.
-
Admin Access or Required Oracle Cloud Infrastructure Identity and Access Management(OCI IAM) 정책.
관리자 권한이 있는지 확인하거나 OCI Full Stack DR을 사용하기 위해 필요한 OCI IAM 정책 및 동적 그룹을 구성하십시오. 이 솔루션에서 데이터베이스 처리기 스크립트는 내부적으로 OCI 컨테이너 인스턴스를 실행하므로 그에 따라 정책을 추가해야 합니다.
주:
<compartment_ocid>및<compartment_name>의 모든 항목을 실제 OCI 컴파트먼트 OCID 및 이름으로 바꿉니다.-
동적 그룹 생성: 예제 이름(
FullStackDR_Database_DG)을 사용하여 동적 그룹을 생성하고 다음과 같은 일치 규칙을 추가합니다.Any {instance.compartment.id = '<compartment_ocid>'} Any {resource.type = 'instance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'computecontainerinstance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'drprotectiongroup', resource.compartment.id = '<compartment_ocid>'} -
OCI IAM 정책 생성: 예제 이름(
FullStackDR_Database_Group_Policies)을 사용하여 정책을 생성하고 다음 allow 문을 추가합니다.Allow dynamic-group FullStackDR_Database_DG to read secret-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage virtual-network-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-execution-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage objects in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage database-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage compute-container-family in compartment <compartment_name>
자세한 내용은 OCI 재해 복구 정책 – 공식 문서 및 IAM 정책 구성(Oracle 블로그)을 참조하십시오.
-
-
두 리전에서 OCI 컴퓨트 인스턴스 프로비저닝: scripts.For 세부 단계를 호스팅하고 실행하기 위한 점포스트 역할을 할 각 리전에서 OCI 컴퓨트 인스턴스를 생성합니다. OCI 인스턴스 생성을 참조하십시오. 단순성을 위해 이 OCI 컴퓨트 인스턴스를 이미 점포스트로 작동할 수 있는 기존 OCI 컴퓨트 인스턴스가 있는 tutorial.If 전체에서 점포스트로 참조할 것입니다. 이 단계를 건너뛸 수 있습니다. Jumphost에 Oracle Cloud Agent가 실행 중인지 확인하고 실행 명령 플러그인이 사용으로 설정되어 있는지 확인하십시오. 자세한 내용은 Oracle Cloud Agent를 참조하십시오.
-
OCI 컴퓨트 인스턴스에서 실행 명령 액세스: DR 작업 중 스크립트를 실행하기 위해 사용자 정의 계획 그룹을 사용하므로 점포스트에서 실행 명령 필요 조건을 설정해야 합니다. 자세한 내용은 인스턴스에 대한 명령 실행을 참조하십시오
-
두 리전의 점포에서 OCI CLI 설치하기: 점포스트 운영 체제를 기반으로 두 리전에 OCI CLI를 설치하고 OCI CLI 명령을 호출할 수 있는지 확인합니다. 스크립트에서 인스턴스 주체를 사용합니다. 자세한 내용은 OCI CLI 설치를 참조하십시오.
-
Set Up VCNs in both Regions with Remote VCN Peering: Create VCNs in both the primary and standby regions and setup remote VCN peering. 이는 영역 간 Oracle Data Guard를 설정하는 데 필요합니다. 자세한 내용은 OCI Base DB 네트워킹 구성을 참조하십시오.
-
수동 Oracle Data Guard 구성: Oracle Data Guard Broker의 요구 사항에 따라 Oracle Data Guard 설정을 수동으로 구성합니다. 자세한 내용은 Oracle Data Guard Broker and Oracle Clusterware를 참조하십시오.
-
점포스트에서 데이터베이스 처리기 스크립트 다운로드: 스크립트를 다운로드하여 두 영역의 점포스트에 보관해야 합니다.
-
Data Guard DB 처리기 스크립트 저장소에서 Oracle Data Guard 데이터베이스 처리기 스크립트를 다운로드합니다.
-
스크립트를 두 영역의 점포스트에 있는
/home/opc/디렉토리(또는 다른 선호 경로)로 복사합니다. -
스크립트 파일에 실행 가능한 권한이 있는지 확인하십시오.
-
full_stack_dr_non_std_db_handler.py는 Oracle Data Guard 롤을 처리하는 Python 스크립트입니다. transitions.The 연관된 Bash 스크립트는 템플리트로 제공되며 특정 요구사항에 맞게 수정할 수 있습니다. Python 역할 변경 스크립트 자체를 수정하지 마십시오.
-
-
OCI 저장소 및 암호 생성: OCI 저장소를 생성하고 데이터베이스 인증서를 두 영역에 모두 암호로 저장해야 합니다.
- OCI 콘솔 또는 CLI를 사용하여 각 리전에 OCI Vault를 생성합니다.
- 저장소에 암호를 생성하여 데이터베이스에 대한
SYS사용자 암호를 저장합니다.
자세한 내용은 OCI Vaults를 참고하세요.
-
점포스트의 연결성 검사: 컴퓨팅 인스턴스에서 OCI 데이터베이스 서비스, OCI Vault 서비스 및 OCI 컨테이너 인스턴스 서비스에 액세스할 수 있는지 확인합니다. 이는 OCI 전체 스택 DR 스크립트가 기본 및 대기 영역 모두에서 데이터베이스 세부정보를 인출하기 위한 검사를 수행하기 때문에 필요합니다.
-
연결성은 점포에서 작동해야 합니다. 점포스트에서 다음 명령을 실행합니다.
# Primary Region curl -v telnet://database.<primary_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<primary_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<primary_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<primary_region>.oci.oraclecloud.com:443 # Standby Region curl -v telnet://database.<standby_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<standby_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<standby_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<standby_region>.oci.oraclecloud.com:443주:
<primary_region>및<standby_region>를 실제 OCI 지역 식별자로 바꿉니다.
예:- 애슈번의 경우
us-ashburn-1 - 피닉스의 경우
us-phoenix-1
전체 목록은 OCI 지역 식별자를 참조하십시오.
예상 출력: 각 명령은
Connected to ...와 유사한 메시지를 반환해야 합니다.연결이 실패하면 점포스트의 VCN/서브넷에 대한 보안 목록, 라우팅 테이블 및 서비스 게이트웨이 구성을 확인합니다.
- 애슈번의 경우
-
-
오브젝트 스토리지 버킷 생성: 여기에 설명된 대로 복구 작업 중 OCI Full Stack DR에서 생성된 로그를 저장할 기본 및 대기 영역에 OCI 오브젝트 스토리지 버킷을 생성합니다. 작업 로그에 대한 로그 위치 준비.
-
데이터베이스 처리기 스크립트 사용 및 사용자 정의: 언급된 GitHub 저장소에서 데이터베이스 처리기 스크립트를 다운로드할 수 있습니다. 다음은 데이터베이스 처리기 스크립트 사용 및 필수 매개변수입니다.
그림 B: DB 처리기 스크립트 사용지원되는
--db_operation옵션은 다음과 같습니다.- 전환
- SWITCHOVER_PRECHECK
- 페일오버
- FAILOVER_PRECHECK
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY
OCI Full Stack DR은 데이터베이스 처리기 스크립트를 실행할 때 필요한 모든 매개변수를 전달해야 합니다. 유용성 및 반복성 향상을 위해 다음과 같은 래퍼 bash 스크립트를 생성하는 것이 좋습니다.
- 필수 매개변수를 제공합니다.
- 감사 및 문제 해결을 위해 로깅을 사용으로 설정합니다.
샘플 예: 데이터베이스 전환 스크립트(
db-switchover-iad-phx.sh)#!/bin/bash # Define log file with date and time LOG_FILE="db-switchover-iad-phx-$(date +%Y%m%d_%H%M%S).log" # Define Python script and argument PYTHON_SCRIPT="full_stack_dr_non_std_db_handler.py" ARGUMENT="--database_ocid="ocid1.database.oc1.phx.xxxxxxxx" --vault_ocid="ocid1.vaultsecr et.oc1.phx.xxxxx" --region="us-phoenix-1" --primary_db_unique_name="adghol_site0" --st andby_db_unique_name="adghol_site1" --drpg_ocid="ocid1.drprotectiongroup.oc1.phx.axxxxxxax " --db_operation="SWITCHOVER" --auth_type=INSTANCE_PRINCIPAL" # Execute Python script and log output echo "Executing Python script: $PYTHON_SCRIPT with argument: $ARGUMENT" | tee -a $LOG_FILE /usr/bin/python3 $PYTHON_SCRIPT $ARGUMENT 2>&1 | tee -a $LOG_FILE echo "Execution completed. Logs saved in $LOG_FILE"주: 이 래퍼 스크립트를 데이터베이스 처리기 스크립트와 동일한 위치에 저장하고 실행 가능한지 확인하십시오. OCID는 스크립트에서 익명화됩니다.
chmod +x db-switchover-wrapper.sh지역 1(애슈번)에서 실행 중인 DB가 기본이고 지역 2(피닉스)가 대기인 DR 계획 스크립트 매핑
DR 계획 유형 대상 Instance 스크립트 이름 설명: Switchoverscript-phxdb-prechk-switchover-iad-phx.shPrechk DB IAD에서 PHX로 전환 Switchoverscript-phxdb-switchover-iad-phx.shDB IAD에서 PHX로 전환 Failoverscript-phxdb-prechk-failover-iad-phx.shIAD에서 PHX로 Prechk DB 복구 Failoverscript-phxdb-failover-iad-phx.shIAD에서 PHX로 DB Failover Start drillscript-phxdb-prechk-startdrill-phx.shPHX에서 DR 드릴 시작 사전 확인 Start drillscript-phxdb-startdrill-phx.shPHX에서 DR 드릴 시작 Stop drillscript-phxdb-prechk-stopdrill-phx.sh사전 확인 PHX에서 DR 드릴 중지 Stop drillscript-phxdb-stopdrill-phx.shPHX에서 DR 드릴 중지 지역 2(피닉스)에서 실행 중인 DB가 기본이고 지역 2(애슈번)가 대기인 DR 계획 스크립트 매핑
DR 계획 유형 대상 Instance 스크립트 이름 설명: Switchoverscript-iaddb-prechk-switchover-phx-iad.shPrechk DB PHX에서 IAD로 전환 Switchoverscript-iaddb-switchover-phx-iad.shDB PHX에서 IAD로 전환 Failoverscript-iaddb-prechk-failover-phx-iad.shPHX에서 IAD로 Prechk DB 복구 Failoverscript-iaddb-failover-phx-iad.shPHX에서 IAD로 DB Failover Start drillscript-iaddb-prechk-startdrill-iad.shIAD에서 DR 드릴 사전 확인 시작 Start drillscript-iaddb-startdrill-iad.shIAD에서 DR 드릴 시작 Stop drillscript-iaddb-prechk-stopdrill-iad.shIAD에서 DR 드릴 사전 확인 중지 Stop drillscript-iaddb-stopdrill-iad.shIAD에서 DR 드릴 중지
주: 명확성과 유용성을 높이기 위해 특정 DR 계획 유형 및 영역에 맞게 조정된 여러 바시 래퍼 스크립트를 생성했습니다. 이러한 스크립트는 데이터베이스 롤 전환을 위해 공유된 Python 스크립트를 사용하며, 사용자 고유의 요구사항과 환경에 맞게 사용자정의할 수 있습니다.
작업 1: Oracle Data Guard 구성 확인 및 태그 업데이트
이 작업에서는 Oracle Base Database Service를 사용하여 Oracle Data Guard 수동 구성을 확인합니다. 비표준 Oracle Data Guard 설정을 나타내기 위해 데이터베이스에 *tag**를 생성합니다. 이를 통해 OCI Full Stack DR은 내장된 계획 그룹에 의존하지 않고도 DR 계획을 생성할 수 있습니다.
-
OCI 콘솔에 로그인하고 Oracle Database로 이동한 다음 Oracle Base Database Service를 누릅니다.
-
OCI 지역 컨텍스트가 지역 1(애슈번)로 설정되었는지 확인합니다.
-
DB 시스템을 선택합니다. 이 예에서는
adghol0-12345입니다.
그림 1.1: 영역 1의 DB 시스템 -
데이터베이스 탭으로 이동하고
adghol데이터베이스를 선택합니다.
그림 1.2: 영역 1의 데이터베이스 -
Data Guard 상태가 사용으로 설정되지 않음인지 확인합니다. 그러면 OCI 콘솔을 사용하여 Oracle Data Guard가 설정되지 않았음을 확인합니다.
그림 1.3: 영역 1의 Data Guard 제어 플레인 상태 -
태그 탭으로 이동하여 자유 형식 태그를 생성합니다. 설정에 따라
Peer DB OCID값을 대체해야 합니다. 이 예제에서는 Phoenix 지역의 데이터베이스 OCID를 추가해야 합니다.태그 키 값 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
그림 1.4: 영역 1의 DB 태그 -
DB Systems로 이동하고 Nodes를 선택합니다.
그림 1.5: 영역 1의 DB 노드주: 비RAC 설정이므로 단일 데이터베이스 노드가 표시됩니다. Oracle Real Application Clusters 설정인 경우 두 개의 노드가 표시됩니다.
-
데이터베이스 노드에 연결하고
oracle사용자로 전환합니다. Oracle Data Guard Broker를 사용하여 롤을 확인합니다.dgmgrl show configuration
그림 1.6: 영역 1의 Data Guard 상태예상 출력:
adghol_site0은 기본 데이터베이스로 표시되어야 합니다.adghol_site1는 물리적 대기 데이터베이스로 표시되어야 합니다.Configuration Status가 성공으로 표시되어야 합니다.
오류가 발생하여 데이터베이스 롤이 예상과 다를 경우 Oracle Data Guard 설명서를 사용하여 오류를 수정해야 합니다.
-
OCI 콘솔에 로그인하고 Oracle Database로 이동한 다음 Oracle Base Database Service를 누릅니다.
-
OCI 지역 컨텍스트가 지역 2(피닉스)로 설정되어 있는지 확인합니다.
-
DB 시스템을 선택합니다. 예제에서는
adghol1-12345입니다.
그림 1.7: 영역 2의 DB 시스템 -
데이터베이스 탭으로 이동하고
adghol데이터베이스를 선택합니다.
그림 1.8: 영역 2의 데이터베이스 -
Data Guard 상태가 사용으로 설정되지 않음인지 확인합니다. 그러면 OCI 콘솔을 사용하여 Oracle Data Guard가 설정되지 않았음을 확인합니다.
그림 1.9: 영역 2의 Data Guard 제어 플레인 상태 -
태그 탭으로 이동하여 자유 형식 태그를 생성합니다. 설정에 따라
Peer DB OCID값을 대체해야 합니다. 이 예제에서는 Ashburn 지역의 데이터베이스 OCID를 추가해야 합니다.태그 키 값 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
그림 1.10: 영역 2의 DB 태그 -
7단계와 8단계를 반복하지만 이번에는 Region 2(Standby Region)의 데이터베이스 노드에 연결합니다.
- Region 2 데이터베이스 노드에서
oracle유저로 로그인되어 있는지 확인합니다. - 8단계와 마찬가지로
dgmgrl를 사용하여 Oracle Data Guard 롤을 확인합니다.
- Region 2 데이터베이스 노드에서
작업 2: DR 보호 그룹 만들기 및 연관
이 애플리케이션 스택에 대한 보호 그룹이 아직 존재하지 않을 경우 영역 1 및 영역 2에 DR 보호 그룹을 생성합니다.
작업 2.1: 영역 1에서 보호 그룹 생성
-
그림 2.1과 같이 OCI 콘솔로 이동하고 DR 보호 그룹으로 이동합니다.
- OCI 지역 컨텍스트가 지역 1(애슈번)로 설정되어 있는지 확인합니다.
- 마이그레이션 및 재해 복구를 누릅니다.
- DR 보호 그룹을 누릅니다.
그림 2.1: DR 보호 그룹으로 이동합니다. -
그림 2.2와 같이 영역 1에 기본 DR 보호 그룹을 만듭니다. 피어, 롤 및 멤버는 이후 단계에서 지정됩니다.
- DR 보호 그룹을 생성할 컴파트먼트를 선택합니다.
- DR 보호 그룹 생성을 누릅니다.
- DR 보호 그룹에 대해 의미 있는 이름을 사용합니다.
- OCI 전체 스택 DR 로그에 대해 OCI 오브젝트 스토리지 버킷을 선택합니다.
- Create를 누릅니다.
그림 2.2: 영역 1에서 DR 보호 그룹을 생성하는 데 필요한 매개변수
작업 2.2: 영역 2에서 보호 그룹 생성
-
그림 2.3과 같이 OCI 콘솔로 이동하여 DR 보호 그룹으로 이동합니다.
- OCI 리전 컨텍스트가 리전 2(피닉스)로 설정되어 있는지 확인합니다.
- 마이그레이션 및 재해 복구를 누릅니다.
- DR 보호 그룹을 누릅니다.
그림 2.3: DR 보호 그룹으로 이동합니다. -
그림 2.4와 같이 영역 2에 기본 DR 보호 그룹을 만듭니다. 피어, 롤 및 멤버는 이후 단계에서 지정됩니다.
- DR 보호 그룹을 생성할 컴파트먼트를 선택합니다.
- DR 보호 그룹 생성을 누릅니다.
- DRPG에 대해 의미 있는 이름을 사용합니다.
- OCI 전체 스택 DR 로그에 대해 OCI 오브젝트 스토리지 버킷을 선택합니다.
- Create를 누릅니다.
그림 2.4: 영역 2에서 DR 보호 그룹을 생성하는 데 필요한 매개변수
작업 2.3: 영역 1 및 영역 2에서 보호 그룹 연관
각 지역의 DRPG를 서로의 동료로 연결하고 기본 및 대기의 피어 역할을 할당합니다. 기본 및 대기 롤은 모든 DR 작업/DR 계획 실행의 일부로 OCI Full Stack DR에 의해 자동으로 변경되므로 언제든지 수동으로 롤을 관리할 필요가 없습니다.
-
DR 보호 그룹 세부정보 페이지로 이동합니다.
- OCI 지역 컨텍스트가 리전 1(애슈번)로 설정되었는지 확인합니다.
- 작업 드롭다운 메뉴를 누르고 연결을 눌러 프로세스를 시작합니다.
그림 2.5: DRPG 연결 시작 -
다음 정보를 입력합니다.
- 역할: 기본 역할을 선택합니다. OCI Full Stack DR은 대기 롤을 리전 2에 자동으로 할당합니다.
- 피어 영역: 다른 DR 보호 그룹이 생성된 영역 2(피닉스)를 선택합니다.
- 피어 DR 보호 그룹의 경우: 만들어진 피어 DR 보호 그룹을 선택합니다.
- 연계를 누릅니다.
그림 2.6: DRPG를 연결하는 데 필요한 매개변수
OCI Full Stack DR은 연관이 완료되면 다음 이미지와 같이 표시됩니다.
- 현재 기본 피어 DRPG는 애슈번(지역 1)입니다.
- 현재 대기 피어 DRPG는 피닉스(지역 2)입니다.
그림 2.7: 개별 DRPG 관점에서 피어 관계 표시
다음 그림과 같이 모든 DR 보호 그룹을 보여주는 전역 관점에서 컨텍스트/뷰가 표시될 때마다 동일한 정보를 찾을 수 있습니다.
- 현재 기본 피어 DRPG는 애슈번(지역 1)입니다.
- 현재 대기 피어 DRPG는 피닉스(지역 2)입니다.
그림 2.8: 글로벌 DRPG 관점에서 피어 관계 표시
작업 3: DR 보호 그룹에 멤버 추가
이 작업에서는 Region 1의 기본 DR 보호 그룹에 다음 OCI 리소스를 추가합니다.
- 데이터베이스 처리기 스크립트를 호스팅하는 OCI 컴퓨트 인스턴스가 비이동 VM으로 추가됩니다.
- 기본 DB 시스템입니다.
작업 3.1: 영역 1에서 DR 보호 그룹에 멤버 추가
-
다음 그림과 같이 영역 1에서 DR 보호 그룹을 선택합니다.
- OCI 지역 컨텍스트가 지역 1(애슈번)인지 확인합니다.
- 영역 1에서 DR 보호 그룹을 선택합니다.
- 멤버 탭으로 이동합니다.
- 멤버 관리를 누릅니다.
그림 3.1: 영역 1에서 DR 보호 그룹에 멤버를 추가하는 방법 -
데이터베이스 처리기 스크립트에 대한 컴퓨트 인스턴스를 추가합니다.
- 멤버 추가를 선택합니다.
- 컴퓨트 아래의 인스턴스를 리소스 유형 멤버로 선택합니다.
- 데이터베이스 처리기 스크립트를 호스팅하는 컴퓨트 인스턴스를 선택합니다.
- 비이동 인스턴스를 선택합니다.
- 추가를 누릅니다.
그림 3.2: 리전 1의 DRPG에 컴퓨트 인스턴스 추가추가된 컴퓨트 인스턴스를 확인합니다.
그림 3.2: 컴퓨트 인스턴스가 영역 1의 DRPG에 추가됨 -
primary database를 추가합니다. 멤버 추가 누르기
- 멤버 추가를 선택합니다.
- Oracle Database -> 데이터베이스(기본 DB,ExaDB-D,ExaCC,ExaXS)를 리소스 유형 멤버로 선택합니다.
- Oracle Base Database를 데이터베이스 유형으로 선택합니다.
- 데이터베이스 시스템을 선택합니다.
- 데이터베이스 홈을 선택합니다.
- 데이터베이스를 선택합니다.
- 데이터베이스 비밀번호 암호를 선택합니다.
- 추가를 누릅니다.
그림 3.3: 기본 DB를 추가하는 데 필요한 매개변수추가된 기본 데이터베이스를 확인하고 두 멤버를 모두 게시합니다.
그림 3.4: 기본 DB가 지역 1의 DRPG에 추가됨
그림 3.5: 영역 1의 DRPG에 멤버 게시몇 분 후에 두 멤버 모두 회원으로 제공되어야 합니다.
그림 3.6: 영역 1의 DRPG에 추가된 멤버
작업 3.2: 영역 2에서 DR 보호 그룹에 멤버 추가
-
다음 그림과 같이 영역 2에서 DR 보호 그룹을 선택합니다.
- OCI 리전 컨텍스트가 리전 2(피닉스)인지 확인합니다.
- 영역 2에서 DR 보호 그룹을 선택합니다.
- 멤버 탭으로 이동합니다.
- 멤버 관리를 누릅니다.
그림 3.7: 영역 2에서 DR 보호 그룹에 멤버를 추가하는 방법 -
데이터베이스 처리기 스크립트에 대한 컴퓨트 인스턴스를 추가합니다.
- 멤버 추가를 선택합니다.
- 컴퓨트 아래의 인스턴스를 리소스 유형 멤버로 선택합니다.
- 데이터베이스 처리기 스크립트를 호스팅하는 컴퓨트 인스턴스를 선택합니다.
- 비이동 인스턴스를 선택합니다.
- 추가를 누릅니다.
그림 3.8: 리전 2의 DRPG에 컴퓨트 인스턴스 추가추가된 컴퓨트 인스턴스를 확인합니다.
그림 3.9: 컴퓨트 인스턴스가 영역 2의 DRPG에 추가됨 -
standby database를 추가합니다. 멤버 추가 누르기
- 멤버 추가를 선택합니다.
- Oracle Database -> 데이터베이스(기본 DB,ExaDB-D,ExaCC,ExaXS)를 리소스 유형 멤버로 선택합니다.
- Oracle Base Database를 데이터베이스 유형으로 선택합니다.
- 데이터베이스 시스템을 선택합니다.
- 데이터베이스 홈을 선택합니다.
- 데이터베이스를 선택합니다.
- 데이터베이스 비밀번호 암호를 선택합니다.
- 추가를 누릅니다.
그림 3.10: 대기 DB를 추가하는 데 필요한 매개변수추가된 대기 데이터베이스를 확인하고 두 멤버를 모두 게시합니다.
그림 3.11: 대기 DB가 리전 2의 DRPG에 추가됨
그림 3.12: 영역 2의 DRPG에 멤버 게시몇 분 후에 두 멤버 모두 회원으로 제공되어야 합니다.
그림 3.13: 영역 2의 DRPG에 추가된 멤버
작업 4: 영역 2에서 DR 계획 생성 및 사용자 정의
이 작업에서는 영역 2(피닉스)에서 대기 DR 보호 그룹과 연관된 초기 Switchover, Failover 및 Start Drill 계획을 만듭니다.
이러한 계획은 기본 영역(영역 1)에서 대기 영역(영역 2)으로 작업 로드를 원활하게 전환하도록 설계되었습니다.
- OCI Full Stack DR은 이전에 추가된 멤버 리소스를 기반으로 내장된 단계로 이러한 계획을 미리 채웁니다.
- 하지만 이 자습서에서는 Oracle Data Guard가 데이터베이스 제어 플레인 외부에서 수동으로 구성되므로 Oracle 데이터베이스 롤 전환에 대해 내장 계획 그룹 없음을 사용할 수 있습니다.
- 따라서 다음을 수행합니다.
- 사용자 정의 계획 그룹으로 DR 계획을 사용자정의합니다.
- 각 계획 유형(switchover, failover, drill) 동안 롤 전환을 처리하기 위한 데이터베이스 처리기 스크립트를 추가합니다.
DR 계획은 항상 대기 롤을 보유하는 보호 그룹에 생성됩니다.
리전 2(피닉스)가 현재 대기이므로 모든 초기 DR 계획을 생성합니다.
작업 4.1: DR 계획 생성
-
Region 2(Phoenix)에서 DRPG를 선택하여 DR 계획을 생성합니다.
- OCI 리전 컨텍스트가 리전 2(피닉스)인지 확인합니다.
- Region 2에서 standby DRPG를 선택합니다.
- 플랜 탭으로 이동합니다.
- 계획 생성을 누릅니다.
그림 4.1: 영역 2에서 기본 DR 계획 생성을 시작하는 방법 -
전환 계획을 생성합니다.
- 전환 계획에 대해 간단하지만 의미 있는 이름을 입력합니다. 이름은 가능한 한 짧지만 한 눈에 이해하기 쉬워 위기의 혼란과 인간의 실수를 줄일 수 있어야합니다.
- 계획 유형을 전환(계획)으로 선택합니다.
그림 4.2: DR 전환 계획을 만드는 데 필요한 매개변수 -
복구 계획을 만듭니다.
다음 그림과 같이 동일한 프로세스에 따라 기본 페일오버 계획을 만듭니다.
- 간단하지만 의미 있는 페일오버 계획의 이름을 입력합니다.
- 계획 유형을 이동(계획되지 않음)으로 선택합니다.
그림 4.3: DR 페일오버 계획을 만드는 데 필요한 매개변수 -
시작 드릴 계획을 생성합니다.
다음 그림과 같이 동일한 프로세스에 따라 기본 페일오버 계획을 만듭니다.
- 단순하지만 의미 있는 시작 드릴 계획의 이름을 입력합니다.
- 계획 유형을 이동(계획되지 않음)으로 선택합니다.
그림 4.4: DR Startdrill 계획을 생성하는 데 필요한 매개변수이제 영역 2의 대기 DR 보호 그룹에는 다음 그림과 같이 3개의 DR 계획이 있어야 합니다. 리전 1에서 리전 2로 작업 로드 전환을 처리합니다. Region 1에서 유사한 계획을 생성하여 후속 작업에서 Region 2에서 Region 1로 작업 로드를 전환합니다.
그림 4.5: 더 이상 진행하기 전에 영역 2에 있어야 하는 3개의 DR 계획 표시
주: OCI Full Stack DR을 사용하면 시작 드릴 계획이 성공적으로 실행되고 DR 보호 그룹이 비활성(드릴 진행 중) 상태인 후에만 정지 드릴 계획을 생성할 수 있습니다.
작업 4.2: 사용자 정의 계획 그룹으로 DR 계획 사용자 정의
Oracle Data Guard 설정이 수동으로 수행되었으므로 작업 4.1에서 생성된 DR 계획은 Oracle 데이터베이스 롤 전환에 대한 내장 계획 그룹을 생성하지 않습니다.
이 작업에서는 다음 작업을 수행합니다.
- 사용자 정의 DR 계획 그룹을 추가하는 방법을 알아봅니다.
- Oracle Data Guard 롤 전환을 관리하는 데 필요한 단계를 정의합니다.
이렇게 하면 DR 계획이 수동으로 구성된 Data Guard 환경과 관련된 페일오버, 스위치오버 및 드릴 시나리오를 완전히 처리할 수 있습니다.
-
태스크 4.1에서 생성된 전환 계획으로 이동하고 계획 그룹을 선택합니다.
그림 4.6: 영역 2에서 전환 계획 커스터마이즈를 시작하는 방법 -
먼저 사용자 정의 사용자 정의 DR 계획 그룹을 추가하여 Oracle 데이터베이스 역할 변경의 특정 요구에 맞게 DR 워크플로우를 조정합니다. 이 계획 그룹은 영역 1의 점포스트
script-iad에서 필요한 스크립트를 호출합니다. -
DB 전환에 사용자 정의 계획 그룹을 추가합니다.
- 그룹 추가(Add group)를 누릅니다.
- 단순하지만 설명적인 계획 그룹 이름을 입력합니다. 이 예에서는
DB Switchover를 사용합니다. -
단계 추가를 눌러 DB 롤 변경을 수행할 스크립트를 지정할 대화상자를 엽니다.
그림 4.7: DB 역할 변경을 수행할 계획 그룹을 생성하는 매개변수플랜 그룹 추가 단계에서 다음 정보를 입력합니다.
- 단순하지만 설명적인 단계 이름을 입력합니다. 이 예에서는
DB Switchover from IAD to PHX를 사용합니다. - 이 단계가 실행될 인스턴스를 포함하는 인스턴스 영역을 선택합니다. 이 예제에서는 스크립트가 Region 2의 jumphost에서 실행되므로
Phoenix를 선택합니다. - 로컬 스크립트 실행을 선택합니다.
- 영역 2에서
script-phx점포인 대상 인스턴스를 선택합니다. - 스크립트 매개변수에 매개변수와 함께 스크립트의 전체 경로를 입력합니다. 예:
/home/opc/db-switchover-iad-phx.sh. - 사용자 권한으로 실행에
opc을 입력합니다. -
단계 추가를 누릅니다.
그림 4.8: DB 역할 변경 단계를 추가하는 매개변수 -
추가된 단계를 확인합니다.
그림 4.9: DB 역할 변경을 위해 추가됨 -
추가를 누릅니다.
그림 4.10: DB 역할 변경 그룹 추가계획 그룹을 지금 사용할 수 있습니다.
그림 4.11: DB 전환 계획 그룹
-
DR 전환 계획에 사용자 정의 사전 검사 단계를 추가합니다. 사용자 정의 사전 검사는 내장된 사전 검사 단계와 함께 실행됩니다.
-
계획 그룹으로 이동하고 Prechecks-Built 앞에 있는 …를 누른 다음 사용자 정의 사전 검사 추가를 선택합니다.
그림 4.12: DB 전환에 대한 사용자정의 사전 검사 추가 - 단순하지만 설명적인 단계 이름을 입력합니다. 이 예에서는
DB Switchover precheck from IAD to PHX를 사용합니다. - 이 단계가 실행될 인스턴스를 포함하는 인스턴스 영역을 선택합니다. 이 예제에서는 스크립트가 Region 2의 jumphost에서 실행되므로
Phoenix를 선택합니다. - 로컬 스크립트 실행을 선택합니다.
- 영역의
script-phx점포인 대상 인스턴스를 선택합니다. - 스크립트 매개변수에 매개변수와 함께 스크립트의 전체 경로를 입력합니다. 예:
/home/opc/db-prechk-switchover-iad-phx.sh. - 사용자 권한으로 실행에
opc을 입력합니다. -
단계 추가를 누릅니다.
그림 4.13: DB 롤 변경에 대한 사용자정의 사전 검사 단계를 추가하는 매개변수 -
추가된 단계를 확인합니다.
그림 4.14: DB 역할 변경에 대한 사용자정의 사전 검사 단계가 추가됨전환 계획 사용자정의가 성공적으로 완료되었습니다.
그림 4.15: 최종 전환 계획
-
-
마찬가지로 페일오버, start drill 계획을 사용자 정의하고, 필요 조건(DB 처리기 스크립트 사용 및 사용자 정의)에서 사용 가능한 표 형식 세부정보를 사용하여 올바른 대상 인스턴스, 스크립트를 사용합니다.
-
사용자 정의 계획 그룹 및 사용자정의 사전 검사 단계가 추가되면 이동 및 드릴 시작 계획이 아래와 같이 표시됩니다.
그림 4.16: 최종 페일오버 계획
그림 4.17: 최종 Startdrill 계획
작업 5: 영역 2에서 DR 계획에 대한 사전 검사 실행
스위치오버, 페일오버, Startdrill DR 계획이 대기 영역 2에 성공적으로 생성되었습니다. 이러한 계획을 통해 OCI Full Stack DR은 워크로드를 리전 1에서 리전 2로 전환하거나 DR 드릴을 수행할 수 있습니다. 후속 작업에는 DR 계획에 대한 사전 검사를 실행하여 준비 상태를 확인하고 전환 프로세스를 검증하는 작업이 포함됩니다.
작업 5.1: 전환 계획에 대한 사전 검사 시작
DR 전환 계획에 대한 사전 검사를 실행합니다.
- 영역 컨텍스트가 standby Region 2로 설정되었는지 확인합니다.
- 영역 2에서 올바른 DR 보호 그룹이 선택되었는지 확인합니다. 대기 롤이어야 합니다.
- 작업 드롭다운 메뉴를 누릅니다.
- 사전 검사 실행을 누릅니다.
- IAD에서 PHX로 DB 스위치오버 계획을 선택합니다.
- 자동 생성되지 않을 경우 계획 실행 이름을 입력합니다.
-
사전 검사 실행을 누릅니다.
그림 5.1: 전환 계획의 사전 검사를 실행하는 방법 표시 -
계획 실행 탭에서 성공 상태를 확인합니다.
그림 5.2: 전환 계획의 완료된 사전 검사 표시
작업 5.2: 복구 계획에 대한 사전 검사 시작
페일오버 DR 계획에 대한 사전 검사를 실행합니다.
- 영역 컨텍스트가 standby Region 2로 설정되었는지 확인합니다.
- 영역 2에서 올바른 DR 보호 그룹이 선택되었는지 확인합니다. 대기 롤이어야 합니다.
- 작업 드롭다운 메뉴를 누릅니다.
- 사전 검사 실행을 누릅니다.
- IAD에서 PHX로 DB 페일오버 계획을 선택합니다.
- 자동 생성되지 않을 경우 계획 실행 이름을 입력합니다.
-
사전 검사 실행을 누릅니다.
그림 5.3: 페일오버 계획의 사전 검사를 실행하는 방법 표시 -
계획 실행 탭에서 성공 상태를 확인합니다.
그림 5.4: 페일오버 계획의 완료된 사전 검사 표시
작업 5.3: 드릴 계획 시작에 대한 사전 검사 시작
Startdrill DR 계획에 대한 사전 검사를 실행합니다.
- 영역 컨텍스트가 standby Region 2로 설정되었는지 확인합니다.
- 영역 2에서 올바른 DR 보호 그룹이 선택되었는지 확인합니다. 대기 롤이어야 합니다.
- 작업 드롭다운 메뉴를 누릅니다.
- 사전 검사 실행을 누릅니다.
- PHX에서 드릴 시작 계획을 선택합니다.
- 자동 생성되지 않을 경우 계획 실행 이름을 입력합니다.
-
사전 검사 실행을 누릅니다.
그림 5.5: 시작 드릴 계획의 사전 검사를 실행하는 방법 표시 -
계획 실행 탭에서 성공 상태를 확인합니다.
그림 5.6: 페일오버 계획의 완료된 사전 검사 표시
작업 6: 영역 2에서 Switchover Plan 실행
스위치오버 DR 계획을 실행하여 지역 1(기본)에서 지역 2(대기)로 Oracle 데이터베이스 롤 전환을 시작합니다.
- 영역 컨텍스트가 standby Region 2로 설정되었는지 확인합니다.
- 영역 2에서 올바른 DR 보호 그룹이 선택되었는지 확인합니다. 대기 롤이어야 합니다.
- 작업 드롭다운 메뉴를 누릅니다.
-
계획 실행을 누릅니다.
그림 6.1: 전환 계획 실행 방법 표시 - IAD에서 PHX로 DB 스위치오버 계획을 선택합니다.
- 이 작업은 Region 2에서 switchover 계획을 실행합니다.
- 사전 검사가 작업 5에서 이미 실행되었으므로 사전 검사 사용을 선택 해제합니다. 다시 실행하려면 사용으로 설정할 수 있습니다.
- 자동 생성되지 않을 경우 계획 실행 이름을 입력합니다.
-
계획 실행을 누릅니다.
그림 6.2: 전환 계획 실행 방법 표시 -
계획 실행 탭으로 이동하고 전환 계획 실행을 선택합니다.
그림 6.3: 진행 중인 전환 계획 표시 -
전체 작업 로드가 Region 1에서 Region 2로 완전히 전환될 때까지 switchover 계획을 모니터합니다. switchover 계획 실행이 약 8분 후에 성공적으로 완료되었습니다.
그림 6.4: 완료된 전환 계획 실행 표시 -
작업 1.8에 제공된 세부 정보를 사용하여 데이터베이스 롤 상태를 확인할 수 있습니다.
그림 6.5: 전환 후 Data Guard 상태예상 출력:
adghol_site1은 기본 데이터베이스로 표시되어야 합니다.adghol_site0는 물리적 대기 데이터베이스로 표시되어야 합니다.Configuration Status가 성공으로 표시되어야 합니다.
-
DR 보호 그룹의 롤이 교체되고, 영역 2는 기본으로 표시되고, 영역 1은 대기로 표시됩니다.
그림 6.6: 스위치오버 후 DR 보호 역할 변경
작업 7: 영역 1에서 DR 계획 생성 및 사용자 정의
지역 1에서 지역 2로의 전환 DR 계획이 성공적으로 실행되면서 지역 2는 이제 기본 역할로 간주되고 지역 1은 대기 역할로 전환되었습니다.
작업 4에 설명된 것과 동일한 접근 방법에 따라 이제 대기 피어 영역으로 사용되는 영역 1에 대한 DR 보호 그룹 내에서 전환, 페일오버 및 DR 드릴 계획을 만들고 사용자 정의합니다.
이러한 계획이 생성되고 사용자 정의 계획 그룹 및 사용자 정의 사전 검사 단계로 업데이트되면 다음 이미지처럼 표시됩니다.
그림 7.1: 영역 1에서 DR 계획 생성
그림 7.2: 영역 1의 전환 계획
그림 7.3: 영역 1의 페일오버 계획
그림 7.4: 영역 1에서 드릴 계획 시작
필요한 경우 switchover plan을 실행하여 Region 1의 데이터베이스를 다시 primary role로 승격할 수 있고, Region 2의 데이터베이스는 standby가 됩니다.
마찬가지로, start drill 계획을 실행하여 재해 복구 이벤트를 시뮬레이트한 다음 stop drill 계획을 생성 및 실행하여 시스템을 원래 상태로 되돌릴 수 있습니다.
-
start drill 계획 중 데이터베이스는 물리적 대기에서 스냅샷 대기로 변환됩니다. 이를 통해 응용 프로그램은 테스트 목적으로 일시적으로 Standby Database에 액세스하고 상호 작용할 수 있습니다.
-
stop drill 계획 동안 데이터베이스는 Snapshot Standby에서 Physical Standby로 다시 변환되어 기본 데이터베이스와 재동기화됩니다.
다음 단계
자세한 내용은 관련 링크 섹션의 OCI 전체 스택 DR, Oracle Base Database Service, Oracle Data Guard 설명서를 참조하십시오.
관련 링크
승인
- 작성자 - Suraj Ramesh(OCI Full Stack DR 부문 수석 제품 관리자)
- 제공자 - Santhosh Shankaramanchi(OCI Full Stack DR 기술 담당자 상담원)
추가 학습 자원
docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Automate Role Changes for Manually Configured Oracle Data Guard in OCI Database Services Using OCI Full Stack DR and Custom Scripts
G45728-03