물리적, 운영 체제 또는 SQL Server 문제로 인해 데이터베이스 미러링 세션에서 오류가 발생할 수 있습니다. 데이터베이스 미러링에서는 Sqlservr.exe 사용하는 구성 요소를 정기적으로 검사하여 올바르게 작동하는지 또는 실패했는지를 확인하지 않습니다. 일부 유형의 오류가 발생할 경우, 영향을 받는 구성 요소가 Sqlservr.exe에 오류를 보고합니다. 다른 구성 요소에서 보고한 오류를 하드 오류라고 합니다. 그렇지 않으면 눈에 띄지 않는 다른 오류를 감지하기 위해 데이터베이스 미러링에서 자체 시간 제한 메커니즘을 구현합니다. 미러링 제한 시간이 발생하면 데이터베이스 미러링에서 오류가 발생했다고 가정하고 소프트 오류를 선언합니다. 그러나 SQL Server 인스턴스 수준에서 발생하는 일부 오류로 인해 미러링 시간이 초과되지 않고 감지되지 않을 수 있습니다.
중요합니다
미러된 데이터베이스 이외의 데이터베이스의 오류는 데이터베이스 미러링 세션에서 검색할 수 없습니다. 또한 데이터 디스크 오류로 인해 데이터베이스를 다시 시작하지 않는 한 데이터 디스크 오류가 검색되지 않을 수 있습니다.
오류 검색 속도 및 오류에 대한 미러링 세션의 반응 시간은 오류가 하드인지 소프트인지에 따라 달라집니다. 네트워크 오류와 같은 일부 하드 오류는 즉시 보고됩니다. 그러나 경우에 따라 구성 요소별 시간 제한 기간은 일부 하드 오류의 보고를 지연할 수 있습니다. 소프트 오류의 경우 미러링 시간 제한 기간의 길이에 따라 오류 검색 속도가 결정됩니다. 기본적으로 이 기간은 10초입니다. 최소 권장 값입니다.
하드 오류로 인한 오류
하드 오류의 가능한 원인은 다음 조건을 포함하지만 제한되지는 않습니다.
연결이 끊어지거나 전선이 끊어진 경우
잘못된 네트워크 카드
라우터 변경
방화벽의 변경 내용
엔드포인트 재구성
트랜잭션 로그가 있는 드라이브 손실
운영 체제 또는 프로세스 오류
예를 들어 주 데이터베이스의 로그 드라이브가 응답하지 않고 실패하면 운영 체제는 심각한 오류가 발생했음을 Sqlservr.exe 알려줍니다.
네트워크 구성 요소 및 일부 IO 하위 시스템 등의 일부 구성 요소에는 오류를 확인하는 자체 시간 초과가 있습니다. 이러한 시간 제한은 데이터베이스 미러링과는 독립적이며, 데이터베이스 미러링은 이를 인식하거나 알지 못합니다. 이러한 경우 시간 제한 지연으로 인해 오류와 데이터베이스 미러링에서 발생하는 하드 오류가 발생하는 시점 사이의 시간이 늘어나게 됩니다.
비고
데이터베이스 미러링에 대해 수행된 유일한 활성 오류 검사는 소프트 오류 사례에 대해 발생합니다. 자세한 내용은 이 항목의 뒷부분에 있는 "소프트 오류로 인한 오류"를 참조하세요.
네트워크에서 발생하는 오류 조건을 해석하는 데 도움이 되도록 네트워크 엔지니어에게 TCP 연결에서 다음 이벤트가 발생할 때 포트로 전송되는 오류 메시지를 요청합니다.
DNS가 작동하지 않습니다.
케이블이 분리되어 있습니다.
Microsoft Windows에는 특정 포트를 차단하는 방화벽이 있습니다.
포트를 모니터링하는 애플리케이션이 실패합니다.
Windows 기반 서버의 이름이 바뀝니다.
Windows 기반 서버가 다시 부팅됩니다.
비고
미러링에서는 서버에 액세스하는 클라이언트와 관련된 문제로부터 보호하지 않습니다. 예를 들어 공용 네트워크 어댑터가 주 서버 인스턴스에 대한 클라이언트 연결을 처리하는 반면 프라이빗 네트워크 인터페이스 카드는 서버 인스턴스 간의 모든 미러링 트래픽을 처리하는 경우를 고려합니다. 이 경우 공용 네트워크 어댑터가 실패하면 데이터베이스가 계속 미러링되지만 클라이언트가 데이터베이스에 액세스하지 못하게 됩니다.
소프트 오류로 인한 오류
미러링 제한 시간을 발생시킬 수 있는 조건에는 다음이 포함됩니다(제한되지 않음).
TCP 링크 시간 제한, 삭제되거나 손상된 패킷 또는 잘못된 순서의 패킷과 같은 네트워크 오류입니다.
응답하지 않는 운영 체제, 서버 또는 데이터베이스입니다.
Windows 서버의 타이밍이 초과되었습니다.
CPU 또는 디스크 오버로드, 트랜잭션 로그가 채워지거나 시스템이 메모리 또는 스레드가 부족한 등의 컴퓨팅 리소스가 부족합니다. 이러한 경우 제한 시간을 늘리거나, 워크로드를 줄이거나, 워크로드를 처리하도록 하드웨어를 변경해야 합니다.
미러링 Time-Out 메커니즘
소프트 오류는 서버 인스턴스에서 직접 감지할 수 없으므로, 소프트 오류로 인해 서버 인스턴스가 무기한 대기할 수 있습니다. 이를 방지하기 위해 데이터베이스 미러링에서는 미러링 세션의 각 서버 인스턴스를 기반으로 고정된 간격으로 열려 있는 각 연결에서 ping을 보내는 자체 시간 제한 메커니즘을 구현합니다.
연결을 열어 두려면 서버 인스턴스가 정의된 제한 시간 및 하나 이상의 ping을 보내는 데 필요한 시간에 해당 연결에 대한 ping을 수신해야 합니다. 제한 시간 동안 ping을 수신하면 연결이 여전히 열려 있고 서버 인스턴스가 이를 통해 통신하고 있음을 나타냅니다. ping을 받으면 서버 인스턴스가 해당 연결에서 시간 제한 카운터를 다시 설정합니다.
시간 제한 기간 동안 연결에 ping이 수신되지 않은 경우 서버 인스턴스는 연결 시간이 초과된 것으로 간주합니다. 서버 인스턴스는 시간 제한 연결을 닫고 세션의 상태 및 운영 모드에 따라 시간 제한 이벤트를 처리합니다.
다른 서버가 실제로 올바르게 진행되더라도 시간 제한은 실패로 간주됩니다. 세션의 제한 시간 값이 너무 짧아 두 파트너의 정기적인 응답성이 너무 짧으면 잘못된 오류가 발생할 수 있습니다. 한 서버 인스턴스가 응답 시간이 너무 느려서 제한 시간이 만료되기 전에 ping을 받지 못하는 다른 서버 인스턴스에 성공적으로 연결할 때 잘못된 오류가 발생합니다.
고성능 모드 세션에서 제한 시간은 항상 10초입니다. 이는 일반적으로 거짓 오류를 방지하기에 충분합니다. 안전성이 높은 모드 세션에서 기본 제한 시간은 10초이지만 기간을 변경할 수 있습니다. 거짓 오류를 방지하려면 미러링 제한 시간을 항상 10초 이상으로 설정하는 것이 좋습니다.
제한 시간 값을 변경하려면(안전성이 높은 모드에만 해당)
현재 제한 시간 값을 보려면
- sys.database_mirroring에서mirroring_connection_timeout 쿼리.
오류에 응답
오류 유형에 관계없이 오류를 감지하는 서버 인스턴스는 인스턴스의 역할, 세션의 운영 모드 및 세션의 다른 연결 상태에 따라 적절하게 응답합니다. 파트너 손실에 대한 자세한 내용은 데이터베이스 미러링 운영 모드를 참조하세요.
또한 참조하십시오
역할 전환 중 서비스 중단 예측(데이터베이스 미러링)
데이터베이스 미러링 운영 모드
데이터베이스 미러링 세션 중 역할 전환(SQL Server)
데이터베이스 미러링(SQL Server)