역할 전환 중 서비스 중단 예측(데이터베이스 미러링)Estimate the Interruption of Service During Role Switching (Database Mirroring)

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

역할 전환 중에 데이터베이스 미러링의 서비스가 중단되는 시간은 역할 전환의 유형 및 원인에 따라 달라집니다.During a role switch, the amount of time that database mirroring will be out of service depends on the type of role switching and the cause of the role switch.

  • 자동 장애 조치(Failover)의 경우 서비스 중단 시간은 미러 서버에서 주 서버 인스턴스의 실패를 인식하는 데 필요한 시간(오류 검색)과 데이터베이스 장애 조치에 필요한 시간(장애 조치 시간)에 의해 결정됩니다.For automatic failover, two factors contribute to the time service is interrupted: the time required for the mirror server to recognize that the principal server instance has failed, that is error detection, plus the time required to fail over the database, that is failover time.

  • 강제 서비스 작업에서는 오류가 발생한 경우에도 사용자의 응답 능력에 따라 오류의 검색 및 응답이 달라집니다.For a forced-service operation, though a failure has occurred, detecting and responding to the failure depends on human responsiveness. 그러나 잠재적 서비스 중단 예측은 강제 서비스 명령이 실행된 후 미러 서버에서 역할을 전환하는 데 걸리는 시간을 예측하는 것으로 제한됩니다.However, estimating the potential interruption of service is limited to estimating the time for the mirror server to switch roles after the forced service command is issued.


    일부 오류 유형과 같은 특정 조건을 검색하는 데 필요한 시간을 줄이려면 해당 조건에 대해 경고를 정의할 수 있습니다.To reduce the time required to detect specific conditions such as some types of errors, you can define alerts for those conditions.

  • 수동 장애 조치의 경우 장애 조치 명령이 실행된 후 데이터베이스를 장애 조치하는 데 필요한 시간만 고려됩니다.For a manual failover, only the time required to fail over the database after the failover command is issued.

오류 검색Error detection

시스템에서 오류를 검색하는 데 걸리는 시간은 오류 유형에 따라 달라집니다. 예를 들어 네트워크 오류는 즉시 검색되지만 서버 중지는 기본적으로 검색하는 데 기본 제한 시간인 10초가 걸립니다.The time for the system to notice an error depends on the type of error; for example, a network error is noticed almost instantly, while noticing a server hang by default takes 10 seconds, which is the default timeout period.

데이터베이스 미러링 세션 중에 실패를 발생시킬 수 있는 오류와 자동 장애 조치를 지원하는 보호 우선 모드에서의 제한 시간 검색에 대한 자세한 내용은 데이터베이스 미러링 중에 발생 가능한 오류를 참조하세요.For information on errors that can cause a failure during a database mirroring session and timeout detection in high-safety mode with automatic failover, see Possible Failures During Database Mirroring).

장애 조치 시간Failover time

장애 조치 시간은 주로 이전 미러 서버에서 Redo Queue에 남아 있는 로그를 롤포워드해야 하는 시간과 짧은 추가 시간으로 구성됩니다. 미러 서버에서 로그 레코드를 처리하는 방법은 데이터베이스 미러링(SQL Server)을 참조하세요.Failover time consists mainly of the time that the former mirror server requires to roll forward any log remaining in its redo queue, plus a short additional time (for more information about how the mirror server processes log records, see Database Mirroring (SQL Server)). 장애 조치 시간을 계산하는 방법은 이 항목의 뒷부분에서 장애 조치 다시 실행 속도 계산을 참조하십시오.For information on estimating failover time, see Estimating Your Failover Redo Rate, later in this topic.


인덱스 또는 테이블을 만든 후 변경하는 트랜잭션 중에 장애 조치를 수행하면 평소보다 시간이 오래 걸릴 수 있습니다.If failover occurs during a transaction in which an index or table is created and then changed, failover might take longer than usual. 예를 들어 테이블에 대한 BEGIN TRANSACTION, CREATE INDEX 및 SELECT INTO 작업 중에 장애 조치를 수행하면 장애 조치 시간이 늘어날 수 있습니다.For example, failing over during the following series of operations might increase failover time: BEGIN TRANSACTION, CREATE INDEX on a table, and SELECT INTO the table. 이러한 트랜잭션 중에 증가한 장애 조치 시간은 COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION 문으로 트랜잭션이 완료될 때까지 유지됩니다.The possibility of increased failover time during such a transaction remains until it is completed with either a COMMIT TRANSACTION or ROLLBACK TRANSACTION statement.

Redo QueueThe Redo Queue

데이터베이스를 롤포워드하는 것은 현재 미러 서버에 있는 Redo Queue의 모든 로그 레코드를 적용하는 것입니다.Rolling forward the database involves applying whatever log records are currently in the redo queue on the mirror server. Redo Queue 는 미러 서버의 디스크에 기록되었지만 미러 데이터베이스에서 롤포워드되지 않은 로그 레코드로 구성됩니다.The redo queue consists of the log records that have been written to disk on the mirror server but not yet rolled forward on the mirror database.

데이터베이스의 장애 조치 시간은 미러 서버에서 Redo Queue의 로그를 롤포워드할 수 있는 속도에 따라 달라지며 이 속도는 주로 시스템 하드웨어와 현재 작업에 의해 결정됩니다.Failover time for the database depends on how fast the mirror server can roll forward the log in the redo queue, which, in turn, is determined primarily by the system hardware and the current work load. 주 데이터베이스의 사용량이 많으므로 주 서버는 미러 서버에서 로그를 롤포워드할 수 있는 시간보다 훨씬 빠르게 로그를 미러 서버로 전달할 수도 있습니다.Potentially, a principal database can become so busy that the principal server ships log to the mirror server much faster than it can roll the log forward. 이 경우 미러 서버에서 Redo Queue의 로그를 롤포워드하는 동안 장애 조치에 오랜 시간이 걸릴 수 있습니다.In this situation, failover might take significant time while the mirror server rolls forward the log in the redo queue. Redo Queue의 현재 크기를 확인하려면 데이터베이스 미러링 성능 개체의 Redo Queue 카운터를 사용합니다.To learn the current size of the redo queue, use the Redo Queue counter in the database mirroring performance object. 자세한 내용은 SQL Server, Database Mirroring Object을(를) 참조하세요.For more information, see SQL Server, Database Mirroring Object.

장애 조치 다시 실행 속도 예측Estimating the Failover Redo Rate

프로덕션 데이터베이스의 테스트 복사본을 사용하여 로그 레코드를 롤포워드하는 데 필요한 시간( 다시 실행 속도)을 측정할 수 있습니다.You can measure the amount of time required to roll forward log records—the redo rate—by using a test copy of the production database.

장애 조치 중에 롤포워드 시간을 측정하는 방법은 다시 실행 단계 중에 미러 서버가 사용하는 스레드 수에 따라 결정됩니다.The method for estimating roll forward time during failover depends on the number of threads the mirror server uses during the redo phase. 스레드 수는 다음 경우에 따라 달라집니다.The number of threads depends on the following:

  • SQL Server StandardSQL Server Standard에서 미러 서버는 항상 단일 스레드를 사용하여 데이터베이스를 롤포워드합니다.In SQL Server StandardSQL Server Standard, the mirror server always uses a single thread to roll forward the database.

  • SQL Server EnterpriseSQL Server Enterprise에서 CPU가 5개 미만인 시스템에 있는 미러 서버도 단일 스레드만 사용합니다.In SQL Server EnterpriseSQL Server Enterprise, mirror servers on computers with fewer than five CPUs also use only a single thread. 5개 이상의 CPU가 있으면 미러 서버는 장애 조치 중에 해당 롤포워드 작업을 여러 스레드로 분산합니다. 이 분산 작업을 병렬 다시 실행이라고 합니다.With five or more CPUs, a mirror server distributes its roll forward operations among multiple threads during a failover (this is known as parallel redo). 병렬 다시 실행은 CPU 4개당 스레드 하나를 사용하도록 최적화되었습니다.Parallel redo is optimized to use one thread for every four CPUs.

단일 스레드 다시 실행 속도 예측Estimating the Single-Threaded Redo Rate

단일 스레드 다시 실행의 경우 장애 조치 중에 미러 데이터베이스를 롤포워드하는 데 걸리는 시간은 로그 백업에서 동일한 양의 로그를 롤포워드하는 데 걸리는 시간과 거의 같습니다.For single-threaded redo, roll forward of the mirror database during failover takes approximately the same amount of time as a restore of a log backup takes to roll forward the same amount of log. 장애 조치 시간을 계산하려면 미러링을 실행할 환경에 테스트 데이터베이스를 만듭니다.To estimate failover time, create a test database in the environment under which you intend to run mirroring. 그런 다음 프로덕션 데이터베이스로부터 로그 백업을 가져옵니다.Then take a log backup from the production database. 해당 로그 백업의 다시 실행 속도를 측정하려면 WITH NORECOVERY 로그 백업을 테스트 데이터베이스로 복원하는 데 걸리는 시간을 측정합니다.To measure the redo rate for that log backup, time how long it takes you to restore the log backup WITH NORECOVERY onto the test database.

미러 서버의 다시 실행 속도를 알고 있으면 Redo Queue 성능 카운터로 측정된 대로 미러 서버에서 다시 실행할 현재 로그 양을 다시 실행 속도로 나누어 지정된 시점에 데이터베이스를 장애 조치하는 데 걸리는 시간을 예측할 수 있습니다.Once you know the redo rate of your mirror server, you can estimate the time to fail over the database at a given point in time by dividing the amount of current log to be redone on the mirror (as measured by the Redo Queue performance counter) by the redo rate. 정상 조건에서 미러 서버가 주 서버의 로드를 처리할 수 있으면 Redo Queue 는 작거나 0에 가까운 값이며 장애 조치(Failover)에 몇 초밖에 걸리지 않습니다.Under normal conditions, if the mirror server can keep up with the load from the principal, the Redo Queue is small or close to zero, and a failover only takes a few seconds.

병렬 다시 실행 속도 예측Estimating the Parallel Redo Rate

SQL Server EnterpriseSQL Server Enterprise에서 병렬 다시 실행은 CPU 4개당 스레드 하나를 사용하도록 최적화되었습니다.In SQL Server EnterpriseSQL Server Enterprise, parallel redo is optimized to use one thread for every four CPUs. 병렬 다시 실행의 롤포워드 시간을 예측하려면 테스트 데이터베이스보다 실행 중인 테스트 시스템에 액세스하는 것이 더 정확합니다.To estimate roll forward time for parallel redo, it is more accurate to access a running test system than a test database. 미러 서버에서 Redo Queue를 모니터링하는 동안 주 서버의 로드를 늘리십시오.While monitoring the redo queue on the mirror server, increase the load on the principal server. 정상 작업 시 Redo Queue는 0에 가깝습니다.In normal operation, the redo queue is close to zero. Redo Queue가 지속적으로 증가하기 시작할 때까지 주 서버에 대한 로드를 증가시키십시오. 그러면 시스템의 최대 다시 실행 속도가 되고 이 지점에서 Redo Bytes/sec 성능 카운터는 최대 다시 실행 속도를 나타냅니다.Increase the load on the principal server until the Redo Queue starts to grow continuously; the system is then at its maximum redo rate, and the Redo Bytes/sec performance counter at this point represents the maximum redo rate. 자세한 내용은 SQL Server, Database Mirroring Object을(를) 참조하세요.For more information, see SQL Server, Database Mirroring Object.

자동 장애 조치 중 서비스 중단 예측Estimating Interruption of Service During Automatic Failover

다음 그림에서는 오류 검색 및 장애 조치 시간이 Partner_B에서 자동 장애 조치를 완료하는 데 필요한 전체 시간에 어떤 영향을 주는지를 보여 줍니다.The following figure illustrates how error detection and failover time contribute to the overall time required for an automatic failover to complete on Partner_B. 장애 조치에는 데이터베이스를 롤포워드할 시간(다시 실행 단계)과 데이터베이스를 온라인 상태로 만들기 위한 약간의 시간이 필요합니다.Failover requires time to roll forward the database (the redo phase) plus a small amount of time to bring the database online. 커밋되지 않은 모든 트랜잭션이 롤백되는 실행 취소 단계는 새로운 주 데이터베이스가 온라인 상태가 된 다음 수행되고 장애 조치 후에도 계속됩니다.The undo phase, which involves rolling back any uncommitted transactions, occurs after the new principal database goes online and continues after fail over. 데이터베이스는 실행 취소 단계 중에 사용할 수 있습니다.The database is available during the undo phase.

오류 검색 및 장애 조치 시간Error detection and failover time

참고 항목See Also

데이터베이스 미러링 운영 모드 Database Mirroring Operating Modes
데이터베이스 미러링 세션 중 역할 전환(SQL Server) Role Switching During a Database Mirroring Session (SQL Server)
데이터베이스 미러링 모니터링(SQL Server)Monitoring Database Mirroring (SQL Server)