데이터베이스 미러링 개요
데이터베이스 미러링은 데이터베이스의 가용성을 높이기 위한 주요 소프트웨어 솔루션입니다. 미러링은 데이터베이스 단위로 구현되며 전체 복구 모델을 사용하는 데이터베이스에서만 작동합니다. 단순 복구 모델 및 대량 로그 복구 모델에서는 데이터베이스 미러링이 지원되지 않습니다. 따라서 모든 대량 작업이 항상 전체 로깅됩니다. 데이터베이스 미러링은 지원되는 모든 데이터베이스 호환성 수준에서 작동합니다.
[!참고]
master, msdb, tempdb 또는 model 데이터베이스를 미러링할 수 없습니다.
데이터베이스 미러링은 SQL Server 데이터베이스 엔진의 서로 다른 서버 인스턴스에 있어야 하는 두 개의 단일 데이터베이스 복사본을 유지 관리합니다. 일반적으로 두 서버 인스턴스는 서로 다른 위치의 컴퓨터에 있습니다. 한 서버 인스턴스는 클라이언트에 데이터베이스를 제공하고(주 서버) 다른 서버 인스턴스는 미러링 세션의 구성 및 상태에 따라 상시 또는 웜 대기 서버(미러 서버) 역할을 합니다. 데이터베이스 미러링 세션을 동기화하면 데이터베이스 미러링은 커밋된 트랜잭션에서 데이터 손실 없이 신속한 장애 조치(Failover)를 지원하는 상시 대기 서버를 제공합니다. 세션이 동기화되지 않은 경우 미러 서버는 일반적으로 웜 대기 서버로 사용할 수 있으며 데이터가 손실될 수 있습니다.
데이터베이스 미러링의 이점
데이터베이스 미러링은 다음과 같은 이점을 제공하는 간단한 전략입니다.
데이터 보호가 향상됩니다.
데이터베이스 미러링은 운영 모드가 보호 우선 모드인지 성능 우선 모드인지에 따라 완벽하거나 거의 완벽한 데이터 중복을 제공합니다. 자세한 내용은 이 항목의 뒷부분에 나오는 "운영 모드"를 참조하십시오.
SQL Server 2008 Enterprise 이상 버전에서 실행 중인 데이터베이스 미러링 파트너는 데이터 페이지를 읽지 못하게 하는 특정 오류 유형을 자동으로 해결하려고 시도합니다. 페이지를 읽지 못하는 파트너는 다른 파트너로부터 새 복사본을 요청합니다. 이 요청이 성공하면 읽을 수 없는 페이지는 새 복사본으로 대체되고 일반적으로 오류가 해결됩니다. 자세한 내용은 데이터베이스 미러링 세션 중 자동 페이지 복구를 참조하십시오.
데이터베이스의 가용성이 커집니다.
자동 장애 조치(Failover)가 있는 보호 우선 모드에서는 재해 발생 시 장애 조치(Failover)에 의해 데이터베이스의 대기 복사본이 신속하게 온라인 상태가 됩니다(데이터 손실 없음). 다른 운영 모드의 경우 데이터베이스 관리자가 데이터베이스의 대기 복사본으로 서비스를 강제할 수 있습니다(데이터 손실 가능). 자세한 내용은 이 항목의 뒤에 나오는 "역할 전환"을 참조하십시오.
업그레이드 중에 프로덕션 데이터베이스의 가용성이 증가합니다.
미러된 데이터베이스의 작동 중단을 최소화하려면 데이터베이스 미러링에 참여하는 SQL Server 인스턴스를 순차적으로 업그레이드하면 됩니다. 이렇게 하면 단일 장애 조치(Failover)에 대해서만 가동 중단이 발생합니다. 이러한 형태의 업그레이드를 롤링 업그레이드라고 합니다. 자세한 내용은 방법: 미러된 데이터베이스 작동 중단을 최소화하면서 시스템에 서비스 팩 설치를 참조하십시오.
데이터베이스 미러링 작동 방법
주 서버와 미러 서버는 데이터베이스 미러링 세션에서 파트너로 통신하고 협력합니다. 두 파트너는 세션에서 서로 보완하는 주 역할과 미러 역할을 수행합니다. 언제든지 한 파트너는 주 역할을 수행하고 다른 파트너는 미러 역할을 수행합니다. 각 파트너는 현재 역할을 소유한다고 표현합니다. 주 역할을 소유하는 파트너를 주 서버라고 하며 주 서버의 데이터베이스 복사본이 현재의 주 데이터베이스입니다. 미러 역할을 소유하는 파트너를 미러 서버라고 하며 미러 서버의 데이터베이스 복사본이 현재의 미러 데이터베이스입니다. 프로덕션 환경에 데이터베이스 미러링이 구축된 경우 주 데이터베이스가 프로덕션 데이터베이스가 됩니다.
데이터베이스 미러링은 주 데이터베이스에서 발생한 모든 삽입, 업데이트 및 삭제 작업을 가능한 한 빨리 미러 데이터베이스에 대해 다시 실행하는 작업과 관련이 있습니다. 다시 실행은 활성 트랜잭션 로그 레코드의 스트림을 미러 서버로 보내고, 미러 서버에서 가능한 한 빨리 로그 레코드를 순서대로 미러 데이터베이스에 적용함으로써 이루어집니다. 논리적 수준에서 작동하는 복제와 달리 데이터베이스 미러링은 물리적 로그 레코드 수준에서 작동합니다. SQL Server 2008부터 주 서버는 트랜잭션 로그 레코드의 스트림을 미러 서버에 보내기 전에 압축합니다. 이러한 로그 압축은 모든 미러링 세션에서 발생합니다.
운영 모드
데이터베이스 미러링 세션은 동기 또는 비동기 작업으로 실행됩니다. 비동기 작업에서는 미러 서버가 로그를 디스크에 쓸 때까지 기다리지 않고 트랜잭션이 커밋되므로 성능이 극대화됩니다. 동기 작업에서는 트랜잭션이 두 파트너에서 모두 커밋되지만 트랜잭션 대기 시간이 길어집니다.
두 가지 미러링 운영 모드가 있습니다. 이 중에서 보호 우선 모드는 동기 작업을 지원합니다. 보호 우선 모드에서 세션을 시작하면 미러 서버는 가능한 한 빨리 미러 데이터베이스를 주 데이터베이스와 동기화합니다. 데이터베이스가 동기화되면 트랜잭션이 두 파트너에서 모두 커밋되지만 트랜잭션 대기 시간이 길어집니다.
두 번째 운영 모드인 성능 우선 모드는 비동기적으로 실행됩니다. 미러 서버는 주 서버가 보낸 로그 레코드를 유지하려고 합니다. 미러 데이터베이스에 주 데이터베이스보다 약간 뒤처질 수 있습니다. 그러나 두 데이터베이스의 시간 간격은 일반적으로 크지 않습니다. 그러나 주 서버에 작업이 크거나 미러 서버 시스템이 과부화된 경우 이 시간 간격은 상당히 커질 수 있습니다.
성능 우선 모드에서는 주 서버가 로그 레코드를 미러 서버로 보내는 즉시 클라이언트로 확인 메시지를 보냅니다. 이때 주 서버는 미러 서버의 확인을 기다리지 않습니다. 즉, 미러 서버에서 로그를 디스크에 쓸 때까지 기다리지 않고 트랜잭션이 커밋됩니다. 비동기 작업을 통해 주 서버는 최소 트랜잭션 대기 시간으로 실행될 수 있지만 데이터가 손실될 수 있는 위험이 있습니다.
모든 데이터베이스 미러링 세션은 주 서버와 미러 서버를 각각 하나씩만 지원합니다. 다음 그림에서는 이 구성을 보여 줍니다.
자동 장애 조치(Failover) 있는 보호 우선 모드를 사용하려면 미러링 모니터 서버라는 세 번째 서버 인스턴스가 필요합니다. 미러링 모니터 서버는 두 파트너와는 달리 데이터베이스를 제공하지 않습니다. 미러링 모니터 서버는 주 서버가 작동하는지 여부만 확인하여 자동 장애 조치(Failover)를 지원합니다. 미러 서버는 미러 서버 및 미러링 모니터 서버가 주 서버와 연결이 끊어진 후에도 서로 연결되어 있는 경우에만 자동 장애 조치(Failover)를 시작합니다.
다음 그림에서는 미러링 모니터 서버가 포함된 구성을 보여 줍니다.
자세한 내용은 이 항목의 뒤에 나오는 "역할 전환"을 참조하십시오.
[!참고]
새 미러링 세션을 시작하거나 기존 미러링 구성에 미러링 모니터 서버를 추가하려면 관련된 모든 서버 인스턴스가 같은 버전의 SQL Server를 실행해야 합니다. 그러나 SQL Server 2008 이상 버전으로 업그레이드하면 관련된 인스턴스의 버전이 일치하지 않을 수 있습니다. 자세한 내용은 방법: 서버 인스턴스 업그레이드 시 미러된 데이터베이스의 작동 중단 최소화를 참조하십시오.
트랜잭션 보안 및 운영 모드
트랜잭션 보안 설정에 따라 동기 또는 비동기 운영 모드가 결정됩니다. SQL Server Management Studio만 사용하여 데이터베이스 미러링을 구성하는 경우 운영 모드를 선택할 때 자동으로 트랜잭션 보안 설정이 구성됩니다.
Transact-SQL을 사용하여 데이터베이스 미러링을 구성하는 경우 트랜잭션 보안 설정 방법을 알아야 합니다. 트랜잭션 보안은 ALTER DATABASE 문의 SAFETY 속성으로 조정합니다. 미러되는 데이터베이스에서 SAFETY는 FULL 또는 OFF 중 하나입니다.
SAFETY 옵션이 FULL로 설정되어 있으면 데이터베이스 미러링 작업이 초기 동기화 단계 이후 동기적으로 수행됩니다. 보호 우선 모드로 미러링 모니터 서버를 설정하면 세션에서 자동 장애 조치(Failover)를 지원합니다.
SAFETY 옵션이 OFF로 설정되어 있으면 데이터베이스 미러링 작업이 비동기적으로 수행됩니다. 세션은 성능 우선 모드로 실행되며 WITNESS 옵션도 OFF여야 합니다.
자세한 내용은 Transact-SQL 설정 및 데이터베이스 미러링 작업 모드를 참조하십시오.
역할 전환
데이터베이스 미러링 세션에서는 역할 전환 프로세스를 통해 주 역할과 미러 역할을 서로 바꿀 수 있습니다. 역할 전환 시 주 역할을 미러 서버로 이전해야 합니다. 역할 전환에서 미러 서버는 주 서버의 장애 조치(Failover) 파트너 역할을 합니다. 역할이 전환되면 미러 서버가 주 역할을 맡고 해당 데이터베이스의 복사본을 새로운 주 데이터베이스로 사용할 수 있도록 온라인 상태로 만듭니다. 이전 주 서버(사용 가능한 경우)는 미러 역할을 맡고 해당 데이터베이스는 새로운 미러 데이터베이스가 됩니다. 역할은 상호 전환할 수 있습니다.
역할 전환에는 다음과 같은 세 가지 형식이 있습니다.
자동 장애 조치(Failover)
보호 우선 모드가 필요하며 미러 서버와 미러링 모니터 서버가 있어야 합니다. 데이터베이스는 이미 동기화된 상태여야 하고 미러링 모니터 서버가 미러 서버에 연결되어 있어야 합니다.
미러링 모니터 서버의 역할은 지정된 파트너 서버가 실행되고 있는지 여부를 확인하는 것입니다. 미러 서버와 주 서버 사이의 연결은 끊어졌지만 미러링 모니터 서버가 여전히 주 서버에 연결되어 있으면 미러 서버에서 장애 조치(Failover)를 시작하지 않습니다. 자세한 내용은 데이터베이스 미러링 모니터 서버을 참조하십시오.
수동 장애 조치(Failover)
보호 우선 모드가 필요합니다. 파트너가 서로 연결되어 있어야 하며 데이터베이스는 이미 동기화된 상태여야 합니다.
강제 서비스(데이터 손실 가능)
성능 우선 모드 및 자동 장애 조치(Failover) 없는 보호 우선 모드에서는 주 서버가 실패했으며 미러 서버가 사용 가능한 경우 강제 서비스를 사용할 수 있습니다.
중요 성능 우선 모드는 미러링 모니터 서버 없이 실행되도록 설계되었습니다. 그러나 미러링 모니터 서버가 있는 경우 강제 서비스를 사용하려면 미러링 모니터 서버가 미러 서버에 연결되어 있어야 합니다.
모든 역할 전환 시나리오에서 새로운 주 데이터베이스가 온라인 상태가 되면 클라이언트 응용 프로그램에서 해당 데이터베이스에 다시 연결하여 신속하게 복구할 수 있습니다.
다른 데이터베이스 엔진 기능과의 상호 운용성 및 공존성
데이터베이스 미러링은 다음의 SQL Server 기능 또는 구성 요소와 함께 사용할 수 있습니다.
데이터베이스 미러링 지원
SQL Server 2005 서비스 팩 1(SP1)부터 Standard 및 Enterprise Edition에서 데이터베이스 미러링 파트너 및 미러링 모니터가 지원됩니다. 하지만 파트너가 동일한 버전을 사용해야 하며, 비동기 데이터베이스 미러링(성능 우선 모드)은 Enterprise Edition 버전에서만 지원됩니다. 미러링 모니터 서버는 Workgroup Edition 및 Express Edition에서도 지원됩니다.
데이터베이스 미러링 관련 항목