자동 장애 조치(Failover)
자동 장애 조치는 미러링 모니터 서버에서 보호 우선 모드(자동 장애 조치를 지원하는 보호 우선 모드)로 실행되는 데이터베이스 미러링 세션에서만 지원됩니다. 자동 장애 조치를 지원하는 보호 우선 모드에서 데이터베이스가 동기화된 후 주 데이터베이스를 사용할 수 없게 되면 자동 장애 조치가 수행됩니다. 자동 장애 조치가 수행되면 미러 서버가 주 서버의 역할을 맡고 해당 데이터베이스의 복사본이 주 데이터베이스로 온라인 상태가 됩니다. 데이터베이스가 동기화되어야 한다는 점에서 주 데이터베이스에서 커밋된 모든 트랜잭션이 미러 데이터베이스에서도 커밋되기 때문에 장애 조치 중에 데이터 손실이 방지됩니다.
자동 장애 조치로 안정성을 개선하려면 미러 데이터베이스와 주 데이터베이스가 서로 다른 컴퓨터에 있어야 합니다.
자동 장애 조치에 필요한 조건
자동 장애 조치에는 다음 조건이 필요합니다.
데이터베이스 미러링 세션이 보호 우선 모드로 실행되고 있어야 하고 미러링 모니터 서버가 있어야 합니다. 자세한 내용은 동기 데이터베이스 미러링(보호 우선 모드)을 참조하십시오.
미러 데이터베이스가 이미 동기화된 상태여야 합니다. 이는 미러 서버로 보낸 모든 로그가 디스크에 기록되었음을 나타냅니다.
데이터베이스 미러링 구성의 나머지 부분과 주 서버 간의 통신이 끊어졌지만 미러 서버와 미러링 모니터 서버는 쿼럼을 유지합니다. 그러나 모든 서버 인스턴스의 통신이 끊어지고 나중에 미러링 모니터 서버와 미러 서버에서 통신을 회복한 경우에는 자동 장애 조치가 수행되지 않습니다.
[!참고]
자세한 내용은 쿼럼: 미러링 모니터 서버가 데이터베이스 가용성에 미치는 영향을 참조하십시오.
미러 서버에서 주 서버가 손실된 것을 감지했습니다.
미러 서버에서 주 서버의 오류를 감지하는 방법은 하드 오류인지 또는 소프트 오류인지에 따라 달라집니다. 자세한 내용은 데이터베이스 미러링 중에 발생 가능한 오류를 참조하십시오.
자동 장애 조치 작동 방법
위의 조건 하에서 자동 장애 조치는 다음과 같은 일련의 동작을 시작합니다.
주 서버가 계속 실행되고 있으면 주 데이터베이스의 상태를 DISCONNECTED로 변경하고 주 데이터베이스로부터 모든 클라이언트의 연결을 끊습니다.
미러링 모니터 서버와 미러 서버가 주 서버를 사용할 수 없다고 등록합니다.
Redo Queue에서 대기 중인 로그가 있으면 미러 서버가 미러 데이터베이스의 롤포워드를 마칩니다.
[!참고]
로그를 적용하는 데 필요한 시간은 시스템 속도, 최근 작업 및 Redo Queue에 있는 로그 양에 따라 달라집니다.
이전의 미러 데이터베이스는 새로운 주 데이터베이스로 사용할 수 있도록 온라인 상태로 변경되고 복구 작업은 가능한 빨리 커밋되지 않은 모든 트랜잭션을 롤백하여 정리합니다. 이러한 트랜잭션은 잠금에 의해 격리됩니다.
이전의 주 서버는 세션에 다시 참가할 때 해당 장애 조치 파트너가 이제 주 역할을 소유함을 인식합니다. 이전의 주 서버는 데이터베이스를 미러 데이터베이스로 만들어 미러 역할을 수행하게 됩니다. 새 미러 서버는 가능한 빨리 새 미러 데이터베이스를 주 데이터베이스와 동기화합니다. 새 미러 서버에서 데이터베이스를 다시 동기화하면 장애 조치가 다시 가능해지지만 역방향으로 진행됩니다.
다음 그림에서는 자동 장애 조치의 단일 인스턴스를 보여 줍니다.
처음에는 세션에 전체 쿼럼이 있으며 세 서버가 모두 연결되어 있습니다. Partner_A는 주 서버이고 Partner_B는 미러 서버입니다. 먼저 Partner_A(또는 Partner_A의 주 데이터베이스)를 사용할 수 없게 됩니다. 미러링 모니터 서버와 Partner_B에서 주 서버를 더 이상 사용할 수 없다는 것을 인식하고 세션이 쿼럼을 유지합니다. Partner_B가 주 서버가 되고 해당 데이터베이스 복사본을 새로운 주 데이터베이스로 사용할 수 있도록 만듭니다. 마지막으로 Partner_A가 세션에 다시 연결되고 Partner_B가 주 역할을 담당하고 있음을 확인합니다. 그런 다음 Partner_A는 미러 역할을 수행합니다.
장애 조치 후 클라이언트는 현재의 주 데이터베이스에 다시 연결해야 합니다. 자세한 내용은 미러된 데이터베이스에 클라이언트 연결을 참조하십시오.
[!참고]
Microsoft DTC(Distributed Transaction Coordinator)를 사용하여 트랜잭션을 준비했지만 장애 조치가 발생했을 때 커밋되지 않은 트랜잭션은 데이터베이스에 장애 조치를 취한 다음 중단된 것으로 간주됩니다.
SQL Server Management Studio를 사용하여 자동 장애 조치 해제
자동 장애 조치를 해제하려면 데이터베이스 속성미러링 페이지를 열고 다음 옵션 중 하나를 선택하여 운영 모드를 변경합니다.
자동 장애 조치를 지원하지 않는 보호 우선 모드(동기)
이 모드에서 데이터베이스는 계속 동기화되지만 수동으로 장애 조치를 수행할 수 있습니다. 자세한 내용은 동기 데이터베이스 미러링(보호 우선 모드)을 참조하십시오.
성능 우선 모드(비동기)
이 모드에서는 미러 데이터베이스가 주 데이터베이스보다 지연될 수 있으며 수동 장애 조치를 수행할 수 없습니다. 자세한 내용은 비동기 데이터베이스 미러링(성능 우선 모드)을 참조하십시오.
운영 모드 변경
Transact-SQL을 사용하여 자동 장애 조치 해제
데이터베이스 미러링 세션의 특정 시점에서 데이터베이스 소유자는 미러링 모니터를 해제하여 자동 장애 조치를 해제할 수 있습니다.
미러링 모니터 해제
방법: 데이터베이스 미러링 세션에서 미러링 모니터 제거(Transact-SQL)
[!참고]
전체 트랜잭션 보안은 유지하고 미러링 모니터를 해제하면 세션이 자동 장애 조치를 지원하지 않는 보호 우선 모드가 됩니다.