방법: 설치, 유지 관리 및 웜 대기 서버를 온라인 상태로 만들기(Transact-SQL)

대기 서버를 설정할 때는 일반적으로 주 서버에서 전체 백업 및 주기적인 트랜잭션 로그 백업을 만든 다음 만들어진 백업을 대기 서버에 차례로 적용하는 작업이 수행됩니다. 대기 서버는 복원 중간마다 읽기 전용 상태를 유지합니다. 대기 서버가 사용 가능 상태가 되기 위해 활성 트랜잭션 로그의 백업을 포함하여 주 서버에서 처리 중인 트랜잭션 로그 백업이 대기 서버에 적용되고 데이터베이스가 복구됩니다.

주 서버에서 백업을 만들려면

  1. BACKUP DATABASE 문을 실행하여 전체 백업을 만듭니다.

  2. BACKUP LOG 문을 실행하여 트랜잭션 로그 백업을 만듭니다.

  3. 만들려는 각 트랜잭션 로그에 대해 2단계를 반복합니다.

대기 서버를 설정하고 유지 관리하려면

  1. NORECOVERY 절을 사용하여 RESTORE DATABASE 문을 실행함으로써 주 서버에서 1단계를 통해 만든 전체 백업을 복원합니다.

  2. STANDBY 절을 사용하여 RESTORE LOG 문을 실행함으로써 주 서버에서 2단계를 통해 만든 각 트랜잭션 로그를 적용합니다. 데이터 페이지에 영향을 주는 커밋되지 않은 트랜잭션이 롤백되기 전에 데이터 페이지의 내용이 포함된 실행 취소 파일의 이름을 지정합니다.

    [!참고]

    성능을 더 높이려면 여러 로그를 적용할 때 WITH NORECOVERY를 사용해야 합니다. 경우에 따라 대기 파일은 읽기 전용이어야 하며 해당 주체가 오프라인 상태일 경우 사용할 장애 조치(failover) 복사본이어야 합니다.

  3. 주 서버에서 만든 각 트랜잭션 로그에 대해 2단계를 반복합니다.

대기 서버를 온라인으로 전환하려면(주 서버에서 문제가 발생한 경우)

  1. 가능한 경우 현재 활성화되어 있는 트랜잭션 로그(비상 로그)를 백업합니다. 데이터베이스를 정상적으로 시작할 수 없을 때 비상 로그 백업을 만들려면 WITH NO_TRUNCATE를 사용하여 주 데이터베이스에서 BACKUP LOG 문을 실행합니다. 이 백업은 대기 서버를 온라인 상태로 만들 경우 이 서버에 적용되는 마지막 트랜잭션 로그 백업입니다. 자세한 내용은 방법: 트랜잭션 로그 백업 만들기(Transact-SQL)를 참조하십시오.

  2. STANDBY 절을 사용하여 RESTORE LOG 문을 실행함으로써 1단계에서 만든 활성화된 트랜잭션 로그 백업을 포함하여 대기 서버에 아직 적용되지 않은 모든 트랜잭션 로그 백업을 적용합니다.

    [!참고]

    성능을 더 높이려면 여러 로그를 적용할 때 WITH NORECOVERY를 사용해야 합니다. WITH STANDBY와 WITH NORECOVERY를 사용하는 경우에 대한 예는 아래를 참조하십시오.

  3. RESTORE DATABASE WITH RECOVERY 문을 실행하여 데이터베이스를 복구하고 대기 서버를 작동시킵니다.

다음 예에서는 대기 서버에 MyAdvWorks 데이터베이스를 설정합니다. 복원 작업 중간에는 데이터베이스를 읽기 전용 모드로 사용할 수 있습니다.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO