데이터베이스 미러링 구성

적용 대상:SQL Server

참고 항목

SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 Always On 가용성 그룹를 사용하세요.

미러 데이터베이스를 준비한 후(미러 데이터베이스의 미러링 준비(SQL Server)참조) 데이터베이스 미러링 세션을 구성합니다. 주 서버, 미러 서버 및 미러링 모니터 서버 인스턴스는 다른 호스트 시스템에 있는 별도의 서버 인스턴스여야 합니다.

Important

미러링 구성이 성능에 영향을 줄 수 있으므로 사용률이 낮은 시간에 데이터베이스 미러링을 구성하는 것이 좋습니다.

참고 항목

지정된 서버 인스턴스는 같은 파트너 또는 다른 파트너에 있는 여러 개의 동시 데이터베이스 미러링 세션에 참여할 수 있습니다. 서버 인스턴스는 한 세션에서는 파트너가 되고, 다른 세션에서는 미러링 모니터 서버가 될 수 있습니다. 미러 서버 인스턴스는 주 서버 인스턴스와 동일한 SQL Server 버전을 실행해야 합니다. 일부 버전의 Microsoft SQL Server에서는 데이터베이스 미러링 모니터를 사용할 수 없습니다. SQL Server버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요. 또한 동일한 워크로드를 처리할 수 있는 비교 가능한 시스템에서 실행하는 것이 좋습니다.

데이터베이스 미러링 세션 구축 방법

  1. 미러 데이터베이스를 만듭니다. 자세한 내용은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.

  2. 각 서버 인스턴스에서 보안을 설정합니다.

    데이터베이스 미러링의 각 서버 인스턴스에는 데이터베이스 미러링 엔드포인트가 있어야 합니다. 엔드포인트가 없으면 만들어야 합니다.

    참고 항목

    서버 인스턴스에서 데이터베이스 미러링에 사용하는 인증 형식은 데이터베이스 미러링 엔드포인트의 속성입니다. 데이터베이스 미러링에서 사용할 수 있는 두 가지 전송 보안 유형으로 Windows 인증과 인증서 기반 인증이 있습니다. 더 자세한 정보는 데이터베이스 미러링 및 Always On 가용성 그룹에 대한 전송 보안(SQL Server)을 참조하세요.

    각 파트너 서버에서 데이터베이스 미러링을 위한 엔드포인트가 있는지 확인합니다. 지원할 미러링 세션 수에 관계없이 각 서버 인스턴스는 한 개의 데이터베이스 미러링 엔드포인트만 가질 수 있습니다. 이 서버 인스턴스를 데이터베이스 미러링 세션에서 파트너로만 사용하려면 엔드포인트에 파트너 역할을 지정합니다(ROLE**=**PARTNER). 이 서버를 다른 데이터베이스 미러링 세션에서 미러링 모니터 서버로도 사용하려면 엔드포인트 역할을 ALL로 지정합니다.

    SET PARTNER 문을 실행하려면 두 파트너의 엔드포인트에 대한 STATE가 STARTED로 설정되어 있어야 합니다.

    서버 인스턴스에 데이터베이스 미러링 엔드포인트가 있는지 확인하고 그 역할과 상태를 확인하려면 해당 인스턴스에 다음 Transact-SQL 문을 사용합니다.

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Important

    사용 중인 데이터베이스 미러링 엔드포인트는 다시 구성하지 마세요. 데이터베이스 미러링 엔드포인트가 있고 이미 사용 중인 경우 해당 엔드포인트를 서버 인스턴스의 각 세션에 사용하는 것이 좋습니다. 사용 중인 엔드포인트를 삭제하면 엔드포인트가 다시 시작되어 기존 세션의 연결이 중단되며, 이는 다른 서버 인스턴스에 대한 오류로 보일 수 있습니다. 이는 특히 파트너에 엔드포인트를 다시 구성하면 장애 조치(Failover) 오류가 발생할 수 있는 자동 장애 조치(Failover)가 있는 보호 우선 모드에서 중요한 사항입니다. 또한 세션에 미러링 모니터 서버가 설정된 경우 데이터베이스 미러링 엔드포인트를 삭제하면 해당 세션의 주 서버에서 쿼럼이 손실될 수 있습니다. 이 경우 데이터베이스는 오프라인 상태가 되며 해당 사용자의 연결이 끊어집니다. 자세한 내용은 쿼럼: 미러링 모니터가 데이터베이스 가용성에 미치는 영향(데이터베이스 미러링)을 참조하세요.

    파트너 중 하나에 엔드포인트가 없는 경우 Windows 인증에 대한 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL) 버전에서는 데이터베이스 미러링을 사용할 수 없습니다.

  3. 서버 인스턴스가 여러 도메인 사용자 계정으로 실행되는 경우 각 인스턴스는 다른 인스턴스의 master 데이터베이스에서 로그인을 필요로 합니다. 로그인이 없으면 만들어야 합니다. 자세한 내용은 Windows 인증을 사용하여 데이터베이스 미러링 엔드포인트에 대한 네트워크 액세스 허용(SQL Server)을 참조하세요.

  4. 주 서버를 미러 데이터베이스의 파트너로 설정하려면 미러 서버에 연결하고 다음 문을 실행합니다.

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    여기서 <database_name>은 미러링할 데이터베이스의 이름(두 파트너에서 이 이름은 동일함)이고 <server_network_address>는 주 서버의 서버 네트워크 주소입니다.

    서버 네트워크 주소 구문은 다음과 같습니다.

    TCP://<system-address>:<port>

    여기서 <system-address>는 대상 컴퓨터 시스템을 명확하게 식별하는 문자열이고, <port>는 파트너 서버 인스턴스의 미러링 엔드포인트에서 사용되는 포트 번호입니다. 자세한 내용은 서버 네트워크 주소 지정(데이터베이스 미러링)을 참조하세요.

    예를 들어 미러 서버 인스턴스에서 다음 ALTER DATABASE 문은 파트너를 원래 주 서버 인스턴스로 설정합니다. 데이터베이스 이름은 AdventureWorks, 시스템 주소는 DBSERVER1로 파트너의 시스템 이름이며, 파트너의 데이터베이스 미러링 엔드포인트에서 사용하는 포트는 7022입니다.

    ALTER DATABASE AdventureWorks   
       SET PARTNER = 'TCP://DBSERVER1:7022'  
    

    이 문은 주 서버에서 연결할 때 세션을 구성하도록 미러 서버를 준비합니다.

  5. 주 데이터베이스에서 미러 서버를 파트너로 설정하려면 주 서버에 연결하고 다음 문을 실행합니다.

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    자세한 내용은 4단계를 참조하세요.

    예를 들어 주 서버 인스턴스에서 다음 ALTER DATABASE 문은 파트너를 원래 미러 서버 인스턴스로 설정합니다. 데이터베이스 이름은 AdventureWorks, 시스템 주소는 DBSERVER2로 파트너의 시스템 이름이며, 파트너의 데이터베이스 미러링 엔드포인트에서 사용하는 포트는 7025입니다.

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'  
    

    주 서버에서 이 문을 입력하면 데이터베이스 미러링 세션이 시작됩니다.

  6. 세션은 기본적으로 전체 트랜잭션 보안으로 설정(SAFETY가 FULL로 설정됨)되며 자동 장애 조치(failover) 없는 보호 우선 모드에서 세션을 시작합니다. 이러한 세션을 다음과 같이 자동 장애 조치(Failover)가 있는 보호 우선 모드나 비동기 성능 우선 모드에서 실행되도록 다시 구성할 수 있습니다.

예시

참고 항목

다음 예제에서는 기존 미러 데이터베이스에 대한 파트너 간에 데이터베이스 미러링 세션을 설정합니다. 미러 데이터베이스를 만드는 방법은 미러 데이터베이스의 미러링 준비(SQL Server)를 참조하세요.

이 예에서는 미러링 모니터 서버 없이 데이터베이스 미러링 세션을 만드는 기본 단계를 보여 줍니다. 두 파트너는 두 컴퓨터 시스템(PARTNERHOST1 및 PARTNERHOST5)의 기본 서버 인스턴스입니다. 두 파트너 인스턴스는 동일한 Windows 도메인 사용자 계정(MYDOMAIN\dbousername)을 실행합니다.

  1. 주 서버 인스턴스(PARTNERHOST1 기본 인스턴스)에서 포트 7022를 사용하여 모든 역할을 지원하는 엔드포인트를 만듭니다.

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  2. 미러 서버 인스턴스(PARTNERHOST5 기본 인스턴스)에서 포트 7022를 사용하여 모든 역할을 지원하는 엔드포인트를 만듭니다.

    --create an endpoint for this instance  
    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    
  3. 주 서버 인스턴스(PARTNERHOST1)에서 데이터베이스를 백업합니다.

    BACKUP DATABASE AdventureWorks   
        TO DISK = 'C:\AdvWorks_dbmirror.bak'   
        WITH FORMAT  
    GO  
    
  4. 미러 서버 인스턴스(PARTNERHOST5)에서 데이터베이스를 복원합니다.

    RESTORE DATABASE AdventureWorks   
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak'   
        WITH NORECOVERY  
    GO  
    
  5. 전체 데이터베이스 백업을 복원한 후 주 데이터베이스에서 로그 백업을 만들어야 합니다. 예를 들어 다음 Transact-SQL 문은 앞의 데이터베이스 백업에 사용된 파일에 로그를 백업합니다.

    BACKUP LOG AdventureWorks   
        TO DISK = 'C:\AdventureWorks.bak'   
    GO  
    
  6. 미러링을 시작하기 전에 필요한 로그 백업(및 후속 로그 백업)을 적용해야 합니다.

    예를 들어 다음 Transact-SQL 문은 C:\AdventureWorks.bak로부터 첫 번째 로그를 복원합니다.

    RESTORE LOG AdventureWorks   
        FROM DISK = 'C:\ AdventureWorks.bak'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. 미러 서버 인스턴스에서 PARTNERHOST1의 서버 인스턴스를 파트너로 설정합니다(초기 주 서버 인스턴스로 설정).

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1:7022'  
    GO  
    

    Important

    기본값으로, 데이터베이스 미러링 세션은 전체 트랜잭션 안전성(SAFETY가 FULL로 설정됨)에 따라 달라지는 동기 모드로 실행됩니다. 세션이 비동기 고성능 모드에서 실행되도록 하려면 SAFETY를 OFF로 설정합니다. 자세한 내용은 Database Mirroring Operating Modes을 참조하세요.

  8. 주 서버 인스턴스에서PARTNERHOST5의 서버 인스턴스를 파트너로 설정합니다(초기 미러 서버 인스턴스로 설정).

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5:7022'  
    GO  
    
  9. 필요에 따라 자동 장애 조치(failover)와 함께 보호 우선 모드를 사용하려는 경우 미러링 모니터 서버 인스턴스를 설정합니다. 자세한 내용은 Windows 인증을 사용하여 데이터베이스 미러링 모니터 추가(Transact-SQL)를 참조하세요.

참고 항목

보안 설정 표시, 미러 데이터베이스 준비, 파트너 설정, 미러링 모니터 서버 추가 등의 작업을 수행하는 전체 예제는 데이터베이스 미러링 설정(SQL Server)을 참조하세요.

참고 항목

데이터베이스 미러링 설정(SQL Server)
ALTER DATABASE(Transact-SQL)
Windows 인증을 사용하여 데이터베이스 미러링 엔드포인트에 대한 네트워크 액세스 허용(SQL Server)
미러 데이터베이스의 미러링 준비(SQL Server)
Windows 인증에 대한 데이터베이스 미러링 엔드포인트 만들기(Transact-SQL)
데이터베이스 미러링 및 로그 전달(SQL Server)
데이터베이스 미러링(SQL Server)
데이터베이스 미러링 및 복제(SQL Server)
데이터베이스 미러링 설정(SQL Server)
서버 네트워크 주소 지정(데이터베이스 미러링)
데이터베이스 미러링 운영 모드