다음을 통해 공유


데이터베이스 미러링 및 복제(SQL Server)

데이터베이스 미러링을 복제와 함께 사용하여 게시 데이터베이스의 가용성을 향상시킬 수 있습니다. 데이터베이스 미러링에는 일반적으로 서로 다른 컴퓨터에 있는 단일 데이터베이스의 두 복사본이 포함됩니다. 지정된 시간에는 현재 클라이언트에서 데이터베이스 복사본을 하나만 사용할 수 있습니다. 이 복사본을 주 데이터베이스라고 합니다. 주 데이터베이스에 대한 클라이언트의 업데이트는 미러 데이터베이스라고 하는 데이터베이스의 다른 복사본에 적용됩니다. 미러링에는 주 데이터베이스에서 수행된 모든 삽입, 업데이트 또는 삭제의 트랜잭션 로그를 미러 데이터베이스에 적용하는 작업이 포함됩니다.

게시 데이터베이스에 대한 미러로의 복제 장애 조치(failover)는 완전히 지원되며, 구독 데이터베이스에 대해서는 제한적인 지원이 제공됩니다. 배포 데이터베이스에는 데이터베이스 미러링이 지원되지 않습니다. 복제를 다시 구성할 필요 없이 배포 데이터베이스 또는 구독 데이터베이스를 복구하는 방법에 대한 자세한 내용은 복제된 데이터베이스 백업 및 복원을 참조하세요. 구독자 데이터베이스를 미러링하는 방법에 대한 자세한 내용은 다음을 참조하세요.

비고

장애 조치(failover) 후 미러가 주체가 됩니다. 이 항목에서 "주체" 및 "미러"는 항상 원래 주체와 원래 미러를 참조합니다.

데이터베이스 미러링에서 복제를 사용하기 위한 요구 사항 및 고려 사항

데이터베이스 미러링과 함께 복제를 사용할 때는 다음과 같은 요구 사항 및 고려 사항에 유의하세요.

  • 주체와 미러는 배포자를 공유해야 합니다. 우리는 이것이 게시자에 계획되지 않은 장애 조치가 발생할 경우 더 큰 내결함성을 제공할 수 있는 원격 배포자일 것을 권장합니다.

  • 복제는 병합 복제 및 읽기 전용 구독자 또는 대기 중인 업데이트 구독자를 사용한 트랜잭션 복제를 위해 게시 데이터베이스 미러링을 지원합니다. 즉시 업데이트 구독자, Oracle 게시자, 피어 투 피어 토폴로지의 게시자 및 다시 게시는 지원되지 않습니다.

  • 데이터베이스 외부에 있는 메타데이터 및 개체는 로그인, 작업, 연결된 서버 등을 포함하여 미러에 복사되지 않습니다. 미러에 메타데이터 및 개체가 필요한 경우 수동으로 복사해야 합니다. 자세한 내용은 역할 전환 후 로그인 및 작업 관리를 참조하세요(SQL Server).

데이터베이스 미러링을 사용하여 복제 구성

복제 및 데이터베이스 미러링을 구성하려면 5단계가 포함됩니다. 각 단계는 다음 섹션에서 자세히 설명합니다.

  1. 게시자를 구성합니다.

  2. 데이터베이스 미러링을 구성합니다.

  3. 주 서버와 동일한 배포자를 사용하도록 미러를 구성합니다.

  4. 장애 조치에 대비한 복제 에이전트를 구성합니다.

  5. 복제 모니터에 주 서버 및 미러 서버를 추가합니다.

1단계와 2단계는 반대 순서로 수행할 수도 있습니다.

게시 데이터베이스에 대한 데이터베이스 미러링을 구성하려면

  1. 게시자 구성:

    1. 원격 배포자를 사용하는 것이 좋습니다. 배포 구성에 대한 자세한 내용은 배포 구성을 참조하세요.

    2. 스냅샷 및 트랜잭션 게시 및/또는 병합 게시에 데이터베이스를 사용하도록 설정할 수 있습니다. 둘 이상의 게시 형식을 포함할 미러된 데이터베이스의 경우 sp_replicationdboption 사용하여 동일한 노드에서 두 형식 모두에 대해 데이터베이스를 사용하도록 설정해야 합니다. 예를 들어, 주 서버에서 다음과 같은 저장 프로시저 호출을 실행할 수 있습니다.

      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true;  
      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;  
      

      게시를 만드는 방법에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하세요.

  2. 데이터베이스 미러링을 구성합니다. 자세한 내용은 Windows 인증(SQL Server Management Studio) 및 데이터베이스 미러링 설정(SQL Server)을 사용하여 데이터베이스 미러링 세션 설정을 참조하세요.

  3. 미러에 대한 배포를 구성합니다. 미러 이름을 게시자로 지정하고 주 시스템에서 사용하는 것과 동일한 배포자와 스냅샷 폴더를 지정합니다. 예를 들어 저장 프로시저를 사용하여 복제를 구성하는 경우 배포자에서 sp_adddistpublisher 실행합니다. 그런 다음 미러에서 sp_adddistributor 실행합니다. sp_adddistpublisher에 대해:

    • @publisher 매개 변수의 값을 미러의 네트워크 이름으로 설정합니다.

    • @working_directory 매개 변수의 값을 주요 개체가 사용하는 스냅샷 폴더로 설정하십시오.

  4. -PublisherFailoverPartner 에이전트 매개 변수의 미러 이름을 지정합니다. 에이전트 이 매개 변수는 다음 에이전트가 장애 조치(failover) 후 미러를 식별하는 데 필요합니다.

    • 모든 출판물을 위한 스냅샷 에이전트

    • 로그 읽기 에이전트(모든 트랜잭션 게시물의 경우)

    • 대기열 판독기 에이전트(지연 업데이트 구독을 지원하는 트랜잭션 게시물을 위한)

    • 병합 에이전트(병합 구독용)

    • SQL Server 복제 수신기(replisapi.dll: 웹 동기화를 사용하여 동기화된 병합 구독의 경우)

    • SQL Merge ActiveX 컨트롤(컨트롤과 동기화된 병합 구독의 경우)

    배포 에이전트 및 배포 ActiveX 컨트롤에는 게시자에 연결되지 않으므로 이 매개 변수가 없습니다.

    에이전트 매개 변수 변경 내용은 다음에 에이전트가 시작될 때 적용됩니다. 에이전트가 지속적으로 실행되는 경우 에이전트를 중지하고 다시 시작해야 합니다. 매개 변수는 에이전트 프로필 및 명령 프롬프트에서 지정할 수 있습니다. 자세한 내용은 다음을 참조하세요.

    에이전트 프로필에 -PublisherFailoverPartner 를 추가한 다음 프로필에 미러 이름을 지정하는 것이 좋습니다. 예를 들어 저장 프로시저를 사용하여 복제를 구성하는 경우:

    -- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles.  
    -- Select the profile id of the profile that needs to be updated from the result set.  
    -- In the agent_type column returned by sp_help_agent_profile:   
    -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent.  
    
    exec sp_help_agent_profile;  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
  5. 복제 모니터에 주요 서버 및 미러를 추가합니다. 자세한 내용은 복제 모니터링에서 게시자 추가 및 제거를 참조하세요.

미러된 게시 데이터베이스 유지 관리

미러된 게시 데이터베이스를 유지 관리하는 것은 기본적으로 미러되지 않은 데이터베이스를 유지 관리하는 것과 동일하며, 다음 사항을 고려합니다.

  • 관리 및 모니터링은 활성 서버에서 수행해야 합니다. SQL Server Management Studio에서 게시는 현재 서버에 대해서만 로컬 게시 폴더 아래에 표시됩니다. 예를 들어 미러로 장애 조치를 수행하면 게시가 미러에 표시되고 더 이상 주 서버에 표시되지 않습니다. 데이터베이스가 미러로 장애 조치되는 경우 변경 내용이 반영되려면 Management Studio 및 복제 모니터를 수동으로 새로 고쳐야 할 수 있습니다.

  • 복제 모니터는 주 서버와 미러 모두에 대한 개체 트리에 게시자 노드를 표시합니다. 주 서버가 활성 서버인 경우, 게시 정보는 복제 모니터의 주 서버 노드 아래에만 표시됩니다.

    미러가 활성 서버인 경우:

    • 에이전트에 오류가 있는 경우 오류는 미러 노드가 아닌 주 노드에만 표시됩니다.

    • 주 노드를 접근할 수 없는 경우, 주 노드와 미러 노드는 일치하는 게시물 목록을 표시합니다. 미러 노드 아래의 게시물에서 모니터링을 수행해야 합니다.

  • 저장 프로시저 또는 RMO(복제 관리 개체)를 사용하여 미러에서 복제를 관리하는 경우 게시자 이름을 지정하는 경우 데이터베이스가 복제를 사용하도록 설정된 인스턴스의 이름을 지정해야 합니다. 적절한 이름을 확인하려면 함수 publishingservername을 사용합니다.

    게시 데이터베이스를 미러링할 때 미러된 데이터베이스에 저장된 복제 메타데이터는 주 데이터베이스에 저장된 메타데이터와 동일합니다. 따라서 주 서버에서 복제가 활성화된 게시 데이터베이스의 경우 미러 서버의 시스템 테이블에 저장된 게시자 인스턴스 이름은 미러 서버가 아닌 주 서버의 이름입니다. 게시 데이터베이스가 미러로 장애 조치되는 경우 복제 구성 및 유지 관리에 영향을 줍니다. 예를 들어 장애 조치(failover) 후 미러에 저장 프로시저를 사용하여 장애 조치 후 복제를 설정하고 보안 주체에서 사용하도록 설정된 게시 데이터베이스에 끌어오기 구독을 추가하려는 경우 @publisher 매개 변수의 sp_addpullsubscription 또는 sp_addmergepullsubscription에 대해 미러 이름 대신 보안 주체 이름을 지정해야 합니다.

    장애 조치(페일오버) 후 미러에서 게시 데이터베이스를 사용하도록 설정하는 경우, 시스템 테이블에 저장된 게시자 인스턴스 이름은 미러의 이름이 됩니다. 이 경우, @publisher 매개 변수로 미러의 이름을 사용하십시오.

    비고

    sp_addpublication 같은 경우에 @publisher 매개 변수는 SQL Server가 아닌 게시자에 대해서만 지원됩니다. 이 경우 SQL Server 데이터베이스 미러링과는 관련이 없습니다.

  • 장애 조치 후 Management Studio에서 구독을 동기화하려면, 먼저 구독자에서 끌어오기 구독을 동기화하고, 그 다음에 활성 게시자에서 푸시 구독을 동기화합니다.

미러링이 제거된 경우 복제 동작

게시된 데이터베이스에서 데이터베이스 미러링이 제거되는 경우 다음 문제를 염두에 두어야 합니다.

  • 기본 서버에서 게시 데이터베이스가 더 이상 미러링되지 않을 경우, 원래 기본 서버에 대해 복제가 변경 없이 계속 작동합니다.

  • 게시 데이터베이스가 주 서버에서 미러로 전환되고 미러링 관계가 비활성화되거나 제거되면 복제 에이전트가 미러에 대해 작동하지 않습니다. 보안 주체가 영구적으로 손실되면 복제를 사용하지 않도록 설정한 다음 게시자로 지정된 미러로 다시 구성합니다.

  • 데이터베이스 미러링이 완전히 제거된 경우 미러 데이터베이스는 복구 상태이며 작동하려면 복원해야 합니다. 복제와 관련하여 복구된 데이터베이스의 동작은 KEEP_REPLICATION 옵션이 지정되었는지 여부에 따라 달라집니다. 이 옵션은 게시된 데이터베이스를 백업이 만들어진 서버가 아닌 다른 서버로 복원할 때 복제 설정을 유지하도록 복원 작업을 강제합니다. 다른 게시 데이터베이스를 사용할 수 없는 경우에만 KEEP_REPLICATION 옵션을 사용합니다. 다른 게시 데이터베이스가 여전히 복제 중인 경우 이 옵션은 지원되지 않습니다. KEEP_REPLICATION 대한 자세한 내용은 RESTORE(Transact-SQL)를 참조하세요.

로그 판독기 에이전트 동작

다음 표에서는 데이터베이스 미러링의 다양한 운영 모드에 대한 로그 판독기 에이전트 동작에 대해 설명합니다.

운영 모드 미러를 사용할 수 없는 경우 로그 판독기 에이전트 동작
높은 안전 모드 및 자동 장애 조치 미러를 사용할 수 없는 경우 로그 판독기 에이전트는 배포 데이터베이스에 명령을 전파합니다. 주 서버는 미러가 다시 온라인 상태가 되고 주 서버의 모든 트랜잭션이 동기화될 때까지 미러로 장애 조치(failover)할 수 없습니다.
성능 우선 모드 미러를 사용할 수 없는 경우 주 데이터베이스가 노출됨(즉, 미러링되지 않음)으로 실행되고 있습니다. 그러나 로그 판독기 에이전트는 미러에서 강화된 트랜잭션만 복제합니다. 서비스가 강제되면 미러 서버가 주 서버 역할을 담당하고, 로그 판독기 에이전트는 미러를 대상으로 하며 새로운 트랜잭션을 수집하기 시작합니다.

미러가 주 서버보다 뒤처지면 복제 지연이 증가합니다.
자동 장애 조치(Failover)를 지원하지 않는 보호 우선 모드 커밋된 모든 트랜잭션은 미러 디스크에 안전하게 저장됩니다. 로그 판독기 에이전트는 미러에서 강화된 트랜잭션만 복제합니다. 미러를 사용할 수 없는 경우 보안 주체는 데이터베이스에서 추가 작업을 허용하지 않습니다. 따라서 로그 판독기 에이전트에는 복제할 트랜잭션이 없습니다.

또한 참조하십시오

SQL Server 복제
로그 전달 및 복제(SQL Server)