데이터베이스 미러링 및 데이터베이스 스냅샷(SQL Server)

적용 대상:SQL Server

가용성 목적으로 유지 관리하는 미러 데이터베이스를 활용하여 보고 부담을 줄일 수 있습니다. 보고에 미러 데이터베이스를 사용하려면 미러 데이터베이스에 데이터베이스 스냅샷 만들고 클라이언트 연결 요청을 최신 스냅샷 직접 만들 수 있습니다. 데이터베이스 스냅샷은 스냅샷이 만들어진 시점에 존재하던 원본 데이터베이스의 정적, 읽기 전용, 트랜잭션 일치 스냅샷입니다. 미러 데이터베이스에서 데이터베이스 스냅샷을 만들려면 데이터베이스가 동기화된 미러링 상태여야 합니다.

미러 데이터베이스 자체와 달리 클라이언트에서 데이터베이스 스냅샷 액세스할 수 있습니다. 미러 서버가 주 서버와 통신하는 한 보고 클라이언트가 스냅샷 연결하도록 지시할 수 있습니다. 데이터베이스 스냅샷 정적이므로 새 데이터를 사용할 수 없습니다. 사용자가 비교적 최근 데이터를 사용할 수 있도록 하려면 새 데이터베이스 스냅샷 정기적으로 만들고 애플리케이션이 들어오는 클라이언트 연결을 최신 스냅샷 직접 연결하도록 해야 합니다.

새 데이터베이스 스냅샷은 거의 비어 있지만 시간이 경과하면서 점점 더 많은 데이터베이스 페이지가 처음으로 업데이트됨에 따라 확장됩니다. 데이터베이스의 모든 스냅샷이 이렇게 증분 방식으로 증가하기 때문에 각 데이터베이스 스냅샷에서 일반 데이터베이스만큼 많은 리소스를 사용합니다. 미러 서버와 주 서버의 구성에 따라 미러 데이터베이스에 있는 데이터베이스 스냅샷의 수가 너무 많으면 주 데이터베이스의 성능이 느려질 수 있으므로 따라서 미러 데이터베이스에 비교적 최근 스냅샷 몇 가지만 유지하는 것이 좋습니다. 일반적으로 대체 스냅샷을 만든 후에는 수신되는 쿼리를 새 스냅샷 리디렉션하고 현재 쿼리가 완료된 후 이전 스냅샷 삭제해야 합니다.

참고 항목

데이터베이스 스냅샷에 대한 자세한 내용은 데이터베이스 스냅샷(SQL Server)을 참조하세요.

역할이 전환되면 데이터베이스와 해당 스냅샷이 다시 시작되고 일시적으로 사용자와의 연결을 끊습니다. 그 후 데이터베이스 스냅샷 만들어진 서버 인스턴스에서 다시 기본 새 주 데이터베이스가 되었습니다. 사용자는 장애 조치(Failover) 후에도 스냅샷을 계속 사용할 수 있습니다. 그러나 이렇게 하면 새 주 서버에 추가 부하가 발생합니다. 사용자 환경에서 성능이 중요한 경우 새 미러 데이터베이스를 사용할 수 있게 되면 스냅샷 만들고, 클라이언트를 새 스냅샷 리디렉션하고, 이전 미러 데이터베이스에서 모든 데이터베이스 스냅샷 삭제하는 것이 좋습니다.

참고 항목

규모가 잘 확장되는 전용 보고 솔루션의 경우 복제본(replica)을 고려하세요. 자세한 내용은 SQL Server 복제를 참조하세요.

예시

이 예제에서는 미러 데이터베이스에 스냅샷을 만듭니다.

데이터베이스 미러링 세션의 데이터베이스가 AdventureWorks2022라고 가정합니다. 이 예제에서는 F 드라이브에 있는 AdventureWorks 데이터베이스의 미러 복사본에 세 개의 데이터베이스 스냅샷 만듭니다. 스냅샷 이름이 AdventureWorks_0600, AdventureWorks_1200, 및 AdventureWorks_1800으로 지정되고 대략적인 생성 시간을 식별합니다.

  1. AdventureWorks2022미러의 첫 번째 데이터베이스 스냅샷을 만듭니다.

    CREATE DATABASE AdventureWorks_0600  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP')  
       AS SNAPSHOT OF AdventureWorks2022  
    
  2. AdventureWorks2022미러의 두 번째 데이터베이스 스냅샷을 만듭니다. AdventureWorks_0600을 계속 사용 중인 사용자는 계속 사용할 수 있습니다.

    CREATE DATABASE AdventureWorks_1200  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')  
       AS SNAPSHOT OF AdventureWorks2022  
    

    이 시점에서 프로그래밍 방식으로 새 클라이언트 연결을 최신 스냅샷으로 지정할 수 있습니다.

  3. AdventureWorks2022의 미러에 세 번째 데이터베이스 스냅샷을 만듭니다. AdventureWorks_0600 또는 AdventureWorks_1200를 계속 사용 중인 사용자는 계속 사용할 수 있습니다.

    CREATE DATABASE AdventureWorks_1800  
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')  
        AS SNAPSHOT OF AdventureWorks2022  
    

    이 시점에서 프로그래밍 방식으로 새 클라이언트 연결을 최신 스냅샷으로 지정할 수 있습니다.

관련 작업

참고 항목

데이터베이스 스냅샷(SQL Server)
데이터베이스 미러링 세션(SQL Server)에 클라이언트 연결