동기 데이터베이스 미러링(보호 우선 모드)
트랜잭션 보안이 FULL로 설정되어 있으면 데이터베이스 미러링 세션은 보호 우선 모드로 실행되며 초기 동기화 단계 이후 동시에 작동합니다. 이 항목에서는 동기화 작업에 대해 구성되어 있는 데이터베이스 미러링 세션에 대해 설명합니다. 이 항목에서는 사용자가 데이터베이스 미러링 작업의 기본 개념을 알고 있다고 가정합니다. 자세한 내용은 데이터베이스 미러링 세션을 참조하십시오.
세션에 대한 동기화 작업을 수행하려면 미러 서버에서 미러 데이터베이스를 주 데이터베이스와 동기화해야 합니다. 세션이 시작되면 주 서버에서 해당 활성 로그를 미러 서버로 보내기 시작합니다. 미러 서버는 들어오는 모든 로그 레코드를 가능한 한 빨리 디스크에 씁니다. 수신된 모든 로그 레코드가 디스크에 기록되면 즉시 데이터베이스가 동기화됩니다. 파트너와 통신이 유지되는 한 데이터베이스는 동기화 상태를 유지할 수 있습니다.
[!참고] 데이터베이스 미러링 세션의 상태 변경을 모니터링하려면 데이터베이스 미러링 상태 변경 이벤트 클래스를 사용합니다. 자세한 내용은 Database Mirroring State Change 이벤트 클래스를 참조하십시오.
동기화가 완료되면 주 데이터베이스에서 커밋된 모든 트랜잭션이 미러 서버에서도 커밋되므로 데이터가 보호됩니다. 이 작업은 주 서버에서 미러 서버가 트랜잭션 로그를 디스크로 확정했다는 메시지를 받을 때까지 주 데이터베이스에 대한 트랜잭션 커밋을 대기함으로써 수행됩니다. 이 메시지에 대한 대기로 인해 트랜잭션의 대기 시간이 길어집니다.
동기화에 필요한 시간은 세션을 시작할 때(처음에 주 서버에서 받은 로그 레코드 수로 측정) 미러 데이터베이스의 주 데이터베이스에 대한 간격, 주 데이터베이스의 작업 및 미러 시스템의 속도에 따라 다릅니다. 세션이 동기화된 후 미러 데이터베이스에서 다시 실행되어야 하는 확정된 로그는 Redo Queue에 남아 있습니다. 자세한 내용은 데이터베이스 미러링 세션을 참조하십시오.
미러 데이터베이스가 동기화되자마자 데이터베이스의 두 복사본의 상태는 SYNCHRONIZED로 변경됩니다.
동기화 작업은 다음 방식으로 유지 관리됩니다.
- 클라이언트로부터 트랜잭션을 받자마자 주 서버는 트랜잭션에 대한 로그를 트랜잭션 로그에 기록합니다.
- 주 서버는 데이터베이스에 트랜잭션을 기록하고 동시에 로그 레코드를 미러 서버로 보냅니다. 주 서버는 미러 서버의 승인을 기다린 후 클라이언트에게 트랜잭션 커밋 또는 롤백을 확인해 줍니다.
- 미러 서버는 로그를 디스크로 확정하고 주 서버로 승인을 반환합니다.
- 미러 서버의 승인을 받자마자 주 서버는 확인 메시지를 클라이언트에게 보냅니다.
보호 우선 모드에서는 두 위치의 데이터가 동기화되도록 하여 데이터를 보호합니다. 커밋된 모든 트랜잭션이 미러 서버의 디스크에 기록됩니다.
자동 장애 조치(Failover) 없는 보호 우선
다음 그림에서는 자동 장애 조치(Failover) 없는 보호 우선 모드의 구성을 보여 줍니다. 이 구성은 두 개의 파트너로만 이루어져 있습니다.
파트너가 연결되어 있으며 데이터베이스가 이미 동기화된 경우 수동 장애 조치가 지원됩니다. 미러 서버 인스턴스의 작동이 중단되더라도 주 서버 인스턴스는 아무런 영향을 받지 않으며 노출된 상태(데이터를 미러링하지 않음)로 실행됩니다. 주 서버가 손상되면 미러가 일시 중단되지만 수동으로 서비스를 미러 서버로 강제 수행할 수 있으며 이 경우 데이터가 손실될 수 있습니다. 자세한 내용은 강제 서비스(데이터 손실 가능)를 참조하십시오.
자동 장애 조치(Failover) 있는 보호 우선
자동 장애 조치를 사용하면 서버 한 대가 손실되어도 데이터베이스가 여전히 작동되므로 고가용성이 제공됩니다. 자동 장애 조치를 사용하려면 이상적으로 세 번째 컴퓨터에 있는 세 번째 서버 인스턴스인 미러링 모니터 서버가 세션에 필요합니다. 다음 그림에서는 자동 장애 조치를 지원하는 보호 우선 모드 세션의 구성을 보여 줍니다.
미러링 모니터 서버는 두 파트너와는 달리 데이터베이스를 제공하지 않습니다. 미러링 모니터 서버는 주 서버가 작동하는지 여부만 확인하여 자동 장애 조치를 지원합니다. 미러 서버는 미러 서버 및 미러링 모니터 서버가 주 서버와 연결이 끊어진 후에도 서로 연결되어 있는 경우에만 자동 장애 조치를 시작합니다.
미러링 모니터 서버를 설정하면 세션에 쿼럼이 필요합니다. 쿼럼은 데이터베이스를 사용할 수 있도록 만드는 두 개 이상 서버 인스턴스 간의 관계입니다. 자세한 내용은 쿼럼: 미러링 모니터 서버가 데이터베이스 가용성에 미치는 영향 및 자동 장애 조치(Failover)를 참조하십시오. 자세한 내용은 데이터베이스 미러링 모니터 서버을 참조하십시오.
자동 장애 조치에는 다음 조건이 필요합니다.
- 데이터베이스가 동기화되어 있습니다.
- 서버 인스턴스 3개가 모두 연결되어 있는 동안 실패가 발생하고 미러링 모니터 서버와 미러 서버가 계속 연결되어 있습니다.
파트너가 손실되면 다음과 같은 결과가 나타납니다.
- 위의 조건에서 주 서버를 사용할 수 없게 되면 자동 장애 조치가 수행됩니다. 미러 서버가 주 서버 인스턴스의 역할로 전환하여 해당 데이터베이스를 주 데이터베이스로 제공합니다.
- 이러한 조건을 만족하지 않을 때 주 서버를 사용할 수 없게 되면 서비스가 강제되고 데이터가 손실될 수 있습니다. 자세한 내용은 강제 서비스(데이터 손실 가능)를 참조하십시오.
- 미러 서버만 사용할 수 없는 경우 주 서버와 미러링 모니터 서버가 계속 작동됩니다.
세션에서 미러링 모니터 서버가 손실되면 쿼럼은 두 파트너를 모두 필요로 합니다. 한 파트너가 쿼럼을 잃으면 두 파트너 모두 쿼럼을 잃고 쿼럼이 다시 설정될 때까지 데이터베이스를 사용할 수 없게 됩니다. 이 쿼럼 요구 사항은 미러링 모니터 서버가 없을 때 데이터베이스가 노출됨 상태(미러링되지 않음)로 실행되지 않도록 합니다.
[!참고] 미러링 모니터 서버가 오랫동안 연결 해제된 상태로 유지될 것으로 예상되면 세션에서 미러링 모니터 서버를 일시적으로 제거하는 것이 좋습니다.
참고 항목
개념
데이터베이스 미러링 세션
쿼럼: 미러링 모니터 서버가 데이터베이스 가용성에 미치는 영향
Transact-SQL 설정 및 데이터베이스 미러링 작업 모드