이번 글에서는 Oracle® Data Guard의 강력한 기능 중 하나인 Far Sync에 대해 살펴보겠습니다.
Oracle은 물리적으로 멀리 떨어져 있는 프라이머리(Primary) 데이터베이스와 스탠바이(Standby) 데이터베이스 간에 동기식(Synchronous) redo 전송을 지원하기 위해 이 새로운 구성 방식을 설계했습니다. Oracle 12c부터 도입된 이 기술은 프라이머리 데이터베이스가 어느 거리에 위치하든 데이터 손실 없음(Zero Data Loss)과 높은 수준의 보호를 보장합니다.
Far Sync는 프라이머리 데이터베이스로부터 redo를 전달받아 이를 스탠바이 데이터베이스로 다시 전송하는 중계 역할을 합니다. Far Sync 인스턴스에는 데이터파일이 존재하지 않기 때문에, 추후에 이를 프라이머리 또는 스탠바이로 전환해 열 수는 없다는 점에 유의해야 합니다.
Far Sync 인스턴스를 활용하면 커밋 응답 시간(commit response time)에 미치는 영향을 최소화할 수 있습니다. 즉, 더 높은 데이터 보호 수준을 유지하면서도 커밋 대기 시간을 허용 가능한 임계값 이내로 줄여줍니다.
아키텍처
다음 그림은 Far Sync 아키텍처의 예시입니다:
이미지 출처: https://www.oracle.com/technetwork/database/availability/farsync-2267608.pdf
구성 방법
Far Sync를 구성하려면 아래 단계를 순서대로 수행합니다.
1. 프라이머리에서 Far Sync 컨트롤 파일을 생성하고 Far Sync 서버로 복사
다음 명령을 실행합니다:
ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/home/oracle/farsync.ctl';
2. 생성한 Far Sync 컨트롤 파일로 Far Sync 인스턴스 마운트
다음 명령으로 Far Sync 역할이 정상적으로 적용되었는지 확인합니다:
SQL> select database_role from v$database;
DATABASE_ROLE
—————-
FAR SYNC
3. 프라이머리 데이터베이스 파라미터 설정
프라이머리 데이터베이스의 init 파일에 다음 파라미터를 추가합니다:
LOG_ARCHIVE_CONFIG='DG_CONFIG=(oraprimary,orafarsync,orastandby)' scope=both;
LOG_ARCHIVE_DEST_2='SERVICE=farsync SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orafarsync'
LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oraprimary'
4. Far Sync 인스턴스 파라미터 설정
Far Sync 인스턴스의 init 파일에 다음 파라미터를 추가합니다:
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,farsync,standby)'
LOG_ARCHIVE_DEST_2='SERVICE=standby ASYNC VALID_FOR=( STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=orastandby'
LOG_ARCHIVE_DEST_1='LOCATION= USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orafarsync'
5. 스탠바이 데이터베이스 파라미터 설정
스탠바이 데이터베이스의 init 파일에 다음 파라미터를 추가합니다:
LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,farsync,standby)'
LOG_ARCHIVE_DEST_2='SERVICE=primary ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=oraprimary'
LOG_ARCHIVE_DEST_1='LOCATION= USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orastandby'
결론
Far Sync 기능을 활용하면 조직은 데이터 손실이 전혀 없는 장거리 스탠바이 데이터베이스를 구성할 수 있습니다. "데이터 손실 없음(Zero Data Loss)은 현실성이 없다"고 생각하며 데이터베이스 성능 저하를 걱정하던 기업들의 우려를 불식시키고, 원거리 재해 복구(DR) 환경에 대한 신뢰를 확보하는 데 큰 도움이 됩니다.
또한 Far Sync 인스턴스는 원격 스탠바이 데이터베이스가 수신한 아카이브 로그의 갭(gap)을 해소하는 오버헤드를 프라이머리 데이터베이스에서 분산 처리해 줍니다. 여기에 호스트 외부 압축(off-host compression) 방식으로 redo 전송 압축을 수행할 수 있어, 프라이머리 데이터베이스 성능에 영향을 주지 않으면서 WAN 대역폭까지 효과적으로 절약할 수 있습니다.
궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨주세요. 지금 바로 채팅으로 문의하실 수도 있습니다.
데이터베이스 관련 더 많은 정보를 확인해 보세요.