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