본문 바로가기

운영/고가용성

Database Mirroring Configuration Management

728x90

1. 개요

1) Benifits of Database Mirroring
High-Safety, High-Perfomance를 통한 데이터에 대한 보호가 향상됩니다. 자동 혹은 수동 장애조치를 통하여 데이터베이스의 가용성이 향상됩니다. 미러링이 구성된 환경에서 순차적으로 업그레이드를 진행할 경우 Production Server에 대한 가용성이 향상됩니다. SQL Native Client를 이용할 경우 주서버에 문제가 있을 경우, 미러서버로 자동으로 연결되어, 응용프로그램의 가용성을 향상 시킬 수 있습니다.

 

2) How Database Mirroring Works: Principal Server(주 서버)와 Mirro Server(미러 서버)는 데이터베이스 미러링 세션 내에서 파트너로서 통신하고 협력합니다. 두 파트너는 세션 내에서 서로 보완되는 주 역할과 미러 역할을 수행합니다. 각 파트너는 현재의 역할을 소유한다고 표현합니다. 주 역할을 수행하는 서버를 Principal Server(주 서버)라고 합니다. 미러 역할을 수행하는 서버를 Mirror Server(미러 서버)라고 합니다. 데이터베이스 미러링은 주 데이터베이스에서 발생하는 모든 트랜잭션을 보조 데이터베이스로 전달합니다.

Witness(모니터링 서버) : 주 서버를 사용할 수 없을 때 미러 서버로 자동 장애 조치를 수행합니다. High-Availabity(고가용성)모드를 사용할 경우 자동 장애 조치를 이용할 수 있습니다.

 

3) Operation Mode of Database Mirrofing

High-Perfomance Mode(성능 우선) : 비동기 방식으로 주 서버의 트랜잭션이 전달되며, 약간의 데이터 지연이 발생할 수 있습니다.
High-Safety Mode(보호 우선) : 동기 방식으로 주 서버의 트랜잭션이 미러 서버로 즉시 전달 되는 방식을 의미하며, 주 서버는 미러 서버의 트랜잭션이 로그에 커밋될 때까지 대기하게 됩니다.


4) Configuraion of Database Mirroring 

Witness(모니터 서버)가 없는 데이터베이스 미러링 구성이며, 보호 우선 모드를 사용할 경우 수동 장애 조치(FallOver)가 가능합니다.

: Witness(모니터 서버)가 있는 데이터베이스 미러링 구성이며, 고가용성 모드를 사용할 경우 자동 장애 조치가 가능합니다.

※ Note : 복구 모델이 Full 인 경우에만, 데이터베이스 미러링을 사용할 수 있습니다.

 

2. Configuration of Database Mirroring

1) 설정

: 복구 모델 확인

※ Note : 복구 모델이 FULL 이 아닐 경우, SSMS혹은 아래 쿼리를 이용하여 복구 모델을 FULL로 변경

: 변경 방법

use master 
GO 
ALTER DATABASE [database명] SET RECOVERY FULL 
GO

: FULL Backup 수행
- 미러 서버 구성을 위해 주 서버에서 FULL Backup을 수행

- 수행 방법

use master 
GO 
BACKUP DATABASE [Database명] TO DISK ='D:\Database명.bak' WITH STATS 
GO

: FULL Backup 에 대한 RESTORE 수행
- 미러 서버 구성을 위해 미러 서버에서 Restore 를 수행
- Database Mirroring 구성을 위해 WITH NORECOVERY 옵션을 추가
- 수행 방법

use master 
GO 
RESTORE DATABASE [Database명] FROM DISK = 'D\Databae명.bak' WITH NORECOVERY STATS 
GO

: Transacion Log Backup/Restore 수행(Optional)
- FULL Backup 시간이 길어질 경우, Full Backup 이후 발생한 Transaction Log에 대한 Backup/Restore 가 필요한 경우가 있습니다


- 오류 Message

: 해결 방법

--주 서버 
BACKUP LOG [Database명] TO DISK ='D:\Database_log.trn' WITH STATS 
---보조 서버 
RESTORE LOG [Database명] FROM DISK ='D:\Database_log.trn' WITH NORECOVERY STATS

: 구성
- 데이터베이스 속성 -> 미러링 선택 후 보안 구성을 선택하여 미러링 구성

- 다음(N)을 선택 한 후 미러링 구성을 시작

- 모니터 서버(Witness) 구성을 원하지 않을 경우 아니오(O) 체크 후 다음(N)을 선택

- 다음(N)을 선택 한 후 미러링 구성을 시작

- 주 서버가 사용할 포트를 입력. 보안 정책에 문제가 없을 경우 다음(N)을 선택

- 연결(C)를 눌러 미러 서버에 대한 보안 구성

- 미러 서버에 대한 보안 구성

- 서비스 계정을 지정

- 마법사 완료

- 주 서버, 미러 서버 Endpoint 구성 완료 확인 후 닫기 선택

- Database Mirroring 구성 완료 후 미러링 시작(S)를 선택하여, 미러링 세션을 시작

- Review

: 운영 모드 선택

- 운영 서버에 부하를 줄이기 위하여, 성능 우선(비동기)(A)로 옵션을 변경

- 성능 우선(비동기)(A) 옵션을 선택 할 경우 수동 장애 조치가 수행되지 않습니다. 만약 수동 장애 조치를 원할 경우 UI 혹은 쿼리를 이용하여 자동 장애 조치(Failover) 없는 보호 우선(동기)(O)로 변경 후 장애 조치를 수행

 

: 상태 확인

3. Operation of Database Mirroring

1) SSMS를 이용한 장애 조치(Failover)

- 자동 장애 조치(FailOver) 없는 보호 우선(동기)(O)옵션으로 운영할 경우 장애 조치 (FailOver)(F)를 선택하여 수동 장애 조치를 수행 할 수 있습니다.

- 성능 우선(비동기)(A)옵션으로 운영 할 경우 수동 장애 조치를 수행 할 수 없습니다. 만약 수동 장애 조치를 원한 경우 동기 방식으로 변경 후 수동 장애 조치를 수행

4. 시나리오별 장애 복구 (FailOver) 절차

1) 주 서버 장애 시

- Synchronous With Withness

: 데이터 손실 없음

: 자동 장애 조치 수행

: 미러 서버의 역할이 자동으로 주 서버로 변경

: 주 서버 장애가 처리 될 경우 자동으로 미러 서버의 역할을 수행

 

- Synchronous Without Withness

: 데이터 손실 없음

: 주 서버 장애시 장애 조치를 수행 할 수 없음

: 아래 절차에 따라 미러 서버를 서비스 상태로 변경

: 수행 방법 

ALTER DATABASE [database name] SET PARTNER OFF 
RESTORE DATABASE [database name] WITH RECOVERY

- Asynchronous

: 전달되지 않은 LSN에 대한 데이터 손실 가능성 있음

: 수행 방법

: Force Service 방식(미러 서버에서 수행)

ALTER DATABASE [database name] SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

: 주 서버 장애 처리 후 자동으로 미러 역할이 재개

: 미러링 세션은 SUSPENDED 상태

: 미러링 재개를 위해서 미러링 시작 필요

: 미러링 제거 후 미러서버 복구

ALTER DATABASE [database name] SET PARTNER OFF 
RESTORE DATABASE [database name] WITH RECOVERY

: 주 서버 장애가 처리 될 경우 수동으로 미러링 세션을 설정

 

2) 미러 서버 장애 시

- 미러 서버의 경우 Synchronous / Asynchronous 모드에 상관없이 주 서버에 영향을 주지 않음.

- 모니터링 서버 유무와 직접적으로 상관 없음.

- 주 서버는 정상적으로 수행되지만, 미러링을 통한 데이터 이중화는 보장되지 않음.

- 미러 서버 장애 처리 후 자동으로 미러 역할 수행

 

3) 모니터링 서버 장애 시

- 주 서버와 미러 서버의 역할을 정상적으로 수행 됨.

- 자동 장애 처리가 지원되지 않음.

- 모니터링 서버 장애 처리 시 자동으로 모니터링 서버 역할 수행

 

5. 기타 참고 사항

1) 미러 서버에서 미러링 상태 보기

SELECT * FROM SYS.DATABASE_MIRRORING_WITNESSES

※ 문서 : SQL Server 2005 /2008 Database Mirroring Configuration & Management

Database Mirroring Overview : http://msdn.microsoft.com/en-us/library/ms189852.aspx

 

728x90