2009년 8월 25일 화요일

SQL Server 2005 Database Mirroring

SQL Server 2005 Database Mirroring


테크데이타 김종균

jkkim@techdata.co.kr

 


SQL Server 2005 Database Mirroring
개요

 

데이터베이스 미러링은 데이터베이스의 가용성을 높여 주는 주요 소프트웨어 솔루션입니다. 미러링은 데이터베이스 단위로 구현되며 전체 복구 모델을 사용하는 데이터베이스에서만 작동합니다.

단순 복구 모델 및 대량 로그 복구 모델에서는 데이터베이스 미러링이 지원되지 않습니다.데이터베이스 미러링은 상시 대기 서버를 유지함으로써 작동합니다.

일반적인 미러링 세션 중 프로덕션 서버에 문제가 발생하면 클라이언트 응용 프로그램에서 대기 서버에 다시 연결하여 빠르게 복구할 수 있습니다.

참고로, master, msdb, tempdb 또는 model 데이터베이스는 미러링할 수 없습니다. 데이터베이스 미러링에는 일반적으로 서로 다른 컴퓨터에 상주하는 2개의 단일 데이터베이스 복사본이 사용됩니다.

클라이언트는 항상 하나의 데이터베이스 복사본만 사용할 수 있습니다. 이 복사본을 주 데이터베이스라고 합니다.

클라이언트가 주 데이터베이스에 수행한 업데이트는 미러 데이터베이스라고 하는 다른 데이터베이스 복사본에 미러링됩니다.

미러링에는 주 데이터베이스에 대해 수행된 모든 삽입, 업데이트 또는 삭제 작업의 트랜잭션 로그를 미러 데이터베이스에 적용하는 작업이 포함됩니다.

주 데이터베이스와 미러 데이터베이스는 별개의 서버 인스턴스(, Microsoft SQL Server 데이터베이스 엔진 의 인스턴스)에 상주해야 합니다.

두 서버 인스턴스는 데이터베이스 미러링 세션에서 파트너로서 통신하고 협력합니다. 두 파트너는 세션에서 서로 보완되는 주 역할과 미러 역할을 수행합니다.

언제든지 한 파트너는 주 역할을 수행하고 다른 파트너는 미러 역할을 수행합니다.

각 파트너는 현재 역할을 소유한다고 표현합니다. 주 역할을 소유하는 파트너를 주 서버라고 하며 주 서버의 데이터베이스 복사본이 현재의 주 데이터베이스입니다.

미러 역할을 소유하는 파트너를 미러 서버라고 하며 미러 서버의 데이터베이스 복사본이 현재의 미러 데이터베이스입니다

데이터베이스 미러링은 SQL Server Standard Edition Enterprise Edition에서 완벽하게 지원됩니다.

SQL Server Workgroup Edition 또는 Express Edition에서 실행되는 서버 인스턴스는 미러링 모니터 서버 역할만 지원합니다.

 

[참고] SQL Server 2005 서비스팩1 부터 정식으로 사용 가능하며, 서비스팩1이 설치되지 않은 SQL서버는 추적플래그 1400을 활성화하여 서비스를 시작하면 미러링 기능을

이용할 수 있습니다.

 

데이터베이스 미러링은 운영 형태에 따라서 High Availablity, High Protection, High Performance 3가지로 분류 할 수 있습니다.

 

1.       High Availablity 형태 : 자동으로 Failover처리, Principal, Mirror, Witness 인스턴스가 각각 필요.

2.       High Protection 형태 : 수동으로 Failover처리, Principal, Mirror 인스턴스가 각각 필요.

3.       High Performance 형태 : 트랜잭션이 principal서버와 Mirror서버에 반영되었는지 확인하지 않음, 따라서 성능의 이점은 있음.
수동으로 Failover처리, Principal, Mirror 인스턴스가 각각 필요.

 

 

SQL Server 2005 Database Mirroring 구현 따라하기

[사전준비사항]

1.       3개의 SQL서버 2005 인스턴스 (테스트 이므로 하나의 서버에 3개의 인스턴스로 진행합니다.).
-  Principal
서버 : ADFSACCOUNT
-  Mirror
서버 : ADFSACCOUNT\SQL2005_2ND
-  Witness
서버 : ADFSACCOUNT\SQL2005_3RD 

2.       미러링을 구현할 Database
- BELLVIRUS

 

[따라하기]

1.       Principal 서버에서 미러링을 할 데이터베이스를 백업한다.  데이터 베이스의 복구 모델은 Full 이어야 합니다.
BACKUP DATABASE BELLVIRUS TO DISK = 'D:\BACKUP\BELLVIRUS.BAK' WITH INIT

2.       백업한 파일을 이용하여 Mirror서버에서 NORECOVERY 옵션으로 복원한다
RESTORE DATABASE BELLVIRUS FROM DISK ='D:\BACKUP\BELLVIRUS.BAK'
WITH MOVE 'BELLVIRUS' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\BELLVIRUS.mdf',
MOVE 'BELLVIRUS_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\BELLVIRUS_log.LDF', NORECOVERY

3.       아래 그림 처럼 MIRROR서버의 BELLVIRUS 데이터베이스가 (복원중…)으로 표시될 것입니다.
이제 미러링 설정을 위해서 주 서버의 BELLVIRUS 데이터베이스의 속성창을 띄우십시요.

사용자 삽입 이미지

4.       데이터베이스 속성 창의 미러링 페이지를 선택하고, 오른쪽 상단의 보안구성버튼을 누릅니다.

사용자 삽입 이미지

5.       데이터베이스 미러링 보안 구성 마법사가 뜹니다.

사용자 삽입 이미지

6.       미러링 모니터 서버를 포함 여부를 물어옵니다.
모니터서버는 위에서 살펴본 WITNESS서버를 의미합니다. 여기서는 고가용성을 위한 테스트 이므로 포함시키도록합니다.

사용자 삽입 이미지


7.       마찬가지로 모니터 서버 인스턴스에도 보안구성을 저장한다고 선택합니다.

사용자 삽입 이미지


8.       주 서버 인스턴스에 대한 포트 및 끝점 이름을 설정합니다.

사용자 삽입 이미지


 

9.       같은 방식으로 미러서버 인스턴스와 Witness서버 인스턴스 설정도 합니다.
아래 그림처럼 연결이 되지 않은 상태에서는 주의표시가 뜹니다. 연결버튼을 눌러 연결을 맺으면 됩니다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

10.     각 서버의 서비스 계정을 지정하는 화면입니다.
지시내용에 따라 입력을 하십시요. 이번 테스트는 단일 머신에서 진행하는 관계로 입력란을 비워둡니다.

각 서버가 독립된 머신에서 구성을 할 경우에는 서버 상호간에 연결 권한을 피연결서버측에 허용해주어야 합니다.
이 단계에서 각 서버의 계정을 지정하면, 피연결서버측에서 자동으로 연결권한을 부여하게 됩니다.

사용자 삽입 이미지


11.     설정 요약 정보를 검토한 후 마침을 누릅니다.

사용자 삽입 이미지

12.    미러링 보안 구성이 성공적으로 완료 됩니다.
 

사용자 삽입 이미지

13.     완료후 데이터베이스 미러링을 지금 시작하겠냐고 물어옵니다.
시작하셔두 되구, 데이터 베이스 속성의 미러링 페이지에서 나중에 시작하셔도 무방합니다.

사용자 삽입 이미지

14.     미러링이 시작된 미러링 페이지의 모습입니다.
운영모드의 주석을 잘 읽어보시기 바랍니다.

사용자 삽입 이미지

15.     미러링이 구성된 후의 SQL서버 트리 모습입니다. 변경된 아이콘을 봐두시기 바랍니다.

사용자 삽입 이미지

16.     그럼 이제 몇 개의 트랜잭션을 발생시키고, FAILOVER를 시켜서 정상적으로 미러링이 되고 있는지 확인 해보겠습니다.
주서버의 BELLVIRUS 데이터베이스에서 아래의 쿼리를 실행합니다.

사용자 삽입 이미지

주서버와 미러서버에서 각각 프로필러를 띄워서 입력되는 트랜잭션을 살펴보았으나, 미러서버쪽에서는 아무런 내용도 캡처되지 않았습니다.
사용자 삽입 이미지


17.    주서버에서 FAILOVER를 발생시킨후 미러서버쪽에서 데이터를 살펴보겠습니다.
주서버의 BELLVIRUS 데이터베이스의 속성창의 미러링 페이지에서 장애조치버튼을 클릭합니다.

사용자 삽입 이미지


장애조치를 하게되면 주서버와 미러서버가 서로 전환되고, 현재 주서버의 BELLVIRUS데이터베이스는 연결 할 수 없다는
경고성 문구가 뜹니다. 숙지하신후 예를 눌러 장애조치를 시킵니다.
사용자 삽입 이미지


장애조치는 순식간에 끝나버립니다. MANAGEMENT STUDIO SQLSERVER트리를 새로고침해서 확인하면 아래그림처럼
주서버와 미러서버의 역할이 서로 바뀐 것을 확인 할 수 있습니다.
사용자 삽입 이미지


18.     그럼 바뀐 주서버의 BELLVIRUS 데이터베이스에서 TEST2테이블의 내용을 조회해 보겠습니다.

결과 값이 정확히 일치 하는 것을 확인 할 수 있습니다.

19.    이상으로 간단하게 SQL SERVER 2005의 데이터베이스 미러링을 구현해보았습니다.

 

 

마치며..

SQL2005의 데이터베이스 미러링의 기능이 추가되면서, 가용성 높이기 위한 구현 방법이 한가지 더 늘어났습니다.

데이터베이스 단위의 standby개념이라면, 미러링이 가장 좋은 솔루션이 될 것 같습니다. 테스트 해 본 바로는 주 데이터베이스의

장애시점에 3초 이내에 미러 서버에서 서비스가 가능함을 확인하였습니다.

SQL서버가 제공하는 여러 가지 가용성 솔루션 (클러스터링, 미러링, 복제, 로그전달)의 각각의 장단점이 있으니, 이를 잘 인지하여

주어진 상황에 맞는 솔루션을 선택하시기 바랍니다.

댓글 없음:

댓글 쓰기