데이터베이스 미러링 및 복제(SQL Server)Database Mirroring and Replication (SQL Server)

데이터베이스 미러링은 게시 데이터베이스의 가용성을 제공하기 위해 복제와 함께 사용될 수 있습니다.Database mirroring can be used in conjunction with replication to improve availability for the publication database. 데이터베이스 미러링에는 일반적으로 서로 다른 컴퓨터에 있는 두 개의 단일 데이터베이스 복사본이 사용됩니다.Database mirroring involves two copies of a single database that typically reside on different computers. 클라이언트는 항상 하나의 데이터베이스 복사본만 사용할 수 있습니다.At any given time, only one copy of the database is currently available to clients. 이 복사본을 주 데이터베이스라고 합니다.This copy is known as the principal database. 클라이언트가 주 데이터베이스에 수행한 업데이트는 미러 데이터베이스라고 하는 다른 데이터베이스 복사본에 적용됩니다.Updates made by clients to the principal database are applied on the other copy of the database, known as the mirror database. 미러링에는 주 데이터베이스에 대해 수행된 모든 삽입, 업데이트 또는 삭제 작업의 트랜잭션 로그를 미러 데이터베이스에 적용하는 작업이 포함됩니다.Mirroring involves applying the transaction log from every insertion, update, or deletion made on the principal database onto the mirror database.

미러에 대한 복제 장애 조치(Failover)는 게시 데이터베이스에서 완전히 지원되지만 구독 데이터베이스에서는 지원이 제한적으로 제공됩니다.Replication failover to a mirror is fully supported for publication databases, with limited support for subscription databases. 배포 데이터베이스에서는 데이터베이스 미러링이 지원되지 않습니다.Database mirroring is not supported for the distribution database. 복제를 다시 구성할 필요 없이 배포 데이터베이스나 구독 데이터베이스를 복구하는 방법은 복제된 데이터베이스 백업 및 복원을 참조하세요.For information about recovering a distribution database or subscription database without any need to reconfigure replication, see Back Up and Restore Replicated Databases. 구독자 데이터베이스 미러링에 대한 자세한 내용은 다음을 참조하십시오.For information about mirroring the subscriber database, see the

참고

장애 조치 이후에는 미러 서버가 주 서버가 됩니다.After a failover, the mirror becomes the principal. 이 항목에서 "주" 및 "미러"는 항상 원래의 주 서버와 미러 서버를 의미합니다.In this topic, "principal" and "mirror" always refer to the original principal and mirror.

데이터베이스 미러링에서 복제 사용을 위한 요구 사항 및 고려 사항Requirements and Considerations for Using Replication with Database Mirroring

데이터베이스 미러링에서 복제를 사용할 때는 다음 요구 사항과 고려 사항에 주의하십시오.Be aware of the following requirements and considerations when using replication with database mirroring:

  • 주 서버와 미러 서버는 배포자를 공유해야 합니다.The principal and mirror must share a Distributor. 이러한 배포자는 게시자에 예기치 않은 장애 조치가 있는 경우 더 큰 내결함성을 제공하는 원격 배포자가 좋습니다.We recommend that this be a remote Distributor, which provides greater fault tolerance if the Publisher has an unplanned failover.

  • 복제에는 읽기 전용 구독자 또는 큐에 지정된 업데이트 구독자가 포함된 병합 복제 및 트랜잭션 복제에 대한 게시 데이터베이스 미러링이 지원됩니다.Replication supports mirroring the publication database for merge replication and for transactional replication with read-only Subscribers or queued updating Subscribers. 즉시 업데이트 구독자, Oracle 게시자, 피어 투 피어 토폴로지의 게시자 및 다시 게시는 지원되지 않습니다.Immediate updating Subscribers, Oracle Publishers, Publishers in a peer-to-peer topology, and republishing are not supported.

  • 데이터베이스 외부에 있는 메타데이터 및 개체(예: 로그인, 작업, 연결된 서버 등)는 미러 서버에 복사되지 않습니다.Metadata and objects that exist outside the database are not copied to the mirror, including logins, jobs, linked servers, and so on. 미러 서버에서 이러한 메타데이터 및 개체가 필요하면 이를 수동으로 복사해야 합니다.If you require the metadata and objects at the mirror, you must copy them manually. 자세한 내용은 역할 전환 후 로그인 및 작업 관리(SQL Server)를 참조하세요.For more information, see Management of Logins and Jobs After Role Switching (SQL Server).

데이터베이스 미러링에서 복제 구성Configuring Replication with Database Mirroring

복제와 데이터베이스 미러링은 다음 5단계에 따라 구성됩니다.Configuring replication and database mirroring involves five steps. 각 단계는 다음 섹션에서 자세히 설명됩니다.Each step is described in more detail in the following section.

  1. 게시자를 구성합니다.Configure the Publisher.

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

  3. 주 서버와 동일한 배포자를 사용하도록 미러 서버를 구성합니다.Configure the mirror to use the same Distributor as the principal.

  4. 장애 조치에 대한 복제 에이전트를 구성합니다.Configure replication agents for failover.

  5. 복제 모니터에 주 서버와 미러 서버를 추가합니다.Add the principal and mirror to Replication Monitor.

    1단계와 2단계는 순서를 바꿔서 수행할 수도 있습니다.Steps 1 and 2 can also be performed in the opposite order.

게시 데이터베이스에 대한 데이터베이스 미러링을 구성하려면To configure database mirroring for a publication database

  1. 게시자를 구성합니다.Configure the Publisher:

    1. 원격 배포자를 사용하는 것이 좋습니다.We recommend using a remote Distributor. 배포 구성에 대한 자세한 내용은 배포 구성을 참조하세요.For more information about configuring distribution, see Configure Distribution.

    2. 스냅숏용 데이터베이스와 트랜잭션 게시 및/또는 병합 게시를 설정할 수 있습니다.You can enable a database for snapshot and transactional publications and/or merge publications. 하나 이상의 게시 유형이 포함되는 미러된 데이터베이스의 경우에는 sp_replicationdboption을 사용하여 동일 노드에서 두 유형 모두에 대해 데이터베이스를 설정해야 합니다.For mirrored databases that will contain more than one type of publication, you must enable the database for both types at the same node using sp_replicationdboption. 예를 들어 주 서버에서 다음 저장 프로시저 호출을 실행할 수 있습니다.For example, you could execute the following stored procedure calls at the principal:

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

      게시를 만드는 방법은 데이터 및 데이터베이스 개체 게시를 참조하세요.For more information about creating publications, see Publish Data and Database Objects.

  2. 데이터베이스 미러링을 구성합니다.Configure database mirroring. 자세한 내용은 Windows 인증을 사용하여 데이터베이스 미러링 세션 구성(SQL Server Management Studio)데이터베이스 미러링 설정(SQL Server)을 참조하세요.For more information, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio) and Setting Up Database Mirroring (SQL Server).

  3. 미러 서버에 대한 배포를 구성합니다.Configure distribution for the mirror. 게시자로 미러 이름을 지정하고 주 서버에서 사용되는 것과 같은 배포자 및 스냅숏 폴더를 지정합니다.Specify the mirror name as the Publisher, and specify the same Distributor and snapshot folder that the principal uses. 예를 들어 저장 프로시저로 복제를 구성하는 경우 배포자에서 sp_adddistpublisher 를 실행한 다음 미러에서 sp_adddistributor 를 실행합니다.For example, if you are configuring replication with stored procedures, execute sp_adddistpublisher at the Distributor; and then execute sp_adddistributor at the mirror. sp_adddistpublisher의 경우 다음과 같이 합니다.For sp_adddistpublisher:

    • @publisher 매개 변수의 값을 미러 서버의 네트워크 이름으로 설정합니다.Set the value of the @publisher parameter to the network name of the mirror.

    • @working_directory 매개 변수의 값을 주 서버에서 사용되는 스냅숏 폴더로 설정합니다.Set the value of the @working_directory parameter to the snapshot folder used by the principal.

  4. –PublisherFailoverPartner 에이전트 매개 변수에 대한 미러 이름을 지정합니다.Specify the mirror name for the –PublisherFailoverPartner agent parameter. 이 에이전트 매개 변수는 다음 에이전트에서 장애 조치 후 미러 서버를 식별하는 데 필요합니다.Agent This parameter is required for the following agents to identify the mirror after failover:

    • 모든 게시에 대한 스냅숏 에이전트Snapshot Agent (for all publications)

    • 모든 트랜잭션 게시에 대한 로그 판독기 에이전트Log Reader Agent (for all transactional publications)

    • 지연 업데이트 구독을 지원하는 트랜잭션 게시에 대한 큐 판독기 에이전트Queue Reader Agent (for transactional publications that support queued updating subscriptions)

    • 병합 게시에 대한 병합 에이전트Merge Agent (for merge subscriptions)

    • SQL ServerSQL Server 복제 수신기(replisapi.dll: 웹 동기화를 사용하여 동기화된 병합 구독) replication listener (replisapi.dll: for merge subscriptions synchronized using Web synchronization)

    • 컨트롤로 동기화된 병합 구독에 대한 SQL 병합 ActiveX 컨트롤SQL Merge ActiveX Control (for merge subscriptions synchronized with the control)

      배포 에이전트 및 배포 ActiveX 컨트롤은 게시자에 연결되지 않기 때문에 이 매개 변수가 없습니다.The Distribution Agent and Distribution ActiveX Control do not have this parameter because they do not connect to the Publisher.

      에이전트 매개 변수에 대한 변경 사항은 다음에 에이전트가 시작될 때 적용됩니다.Agent parameter changes take effect the next time the agent is started. 에이전트가 연속적으로 실행되는 경우에는 에이전트를 중단했다가 다시 시작해야 합니다.If the agent runs continuously, you must stop and restart the agent. 에이전트 프로필 및 명령 프롬프트에서 매개 변수를 지정할 수 있습니다.Parameters can be specified in agent profiles and from the command prompt. 참조 항목:For more information, see:

    • 복제 에이전트의 명령 프롬프트 매개 변수 보기 및 수정(SQL Server Management Studio)View and Modify Replication Agent Command Prompt Parameters (SQL Server Management Studio)

    • 복제 에이전트 실행 파일 개념Replication Agent Executables Concepts

      에이전트 프로필에 –PublisherFailoverPartner 를 추가한 다음 프로필에 미러 이름을 지정하는 것이 좋습니다.We recommend adding the –PublisherFailoverPartner to an agent profile, and then specifying the mirror name in the profile. 예를 들어 저장 프로시저로 복제를 구성할 경우For example, if you are configuring replication with stored procedures:

    -- 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. 복제 모니터에 주 서버와 미러 서버를 추가합니다.Add the principal and mirror to Replication Monitor. 자세한 내용은 복제 모니터에서 게시자 추가 및 제거를 참조하세요.For more information, see Add and Remove Publishers from Replication Monitor.

미러된 게시 데이터베이스 유지 관리Maintaining a Mirrored Publication Database

미러된 게시 데이터베이스를 유지 관리하는 작업은 미러되지 않은 데이터베이스를 유지 관리하는 방법과 본질적으로 동일하지만 다음 사항을 고려해야 합니다.Maintaining a mirrored publication database is essentially the same as maintaining a non-mirrored database, with the following considerations:

  • 관리 및 모니터링은 활성 서버에서 수행되어야 합니다.Administration and monitoring must occur at the active server. SQL Server Management StudioSQL Server Management Studio에서 게시는 활성 서버의 경우에만 로컬 게시 폴더에 표시됩니다.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder only for the active server. 예를 들어 미러 서버로 장애 조치된 경우, 게시는 미러 서버에 표시되고 주 서버에는 더 이상 표시되지 않습니다.For example, if you failover to the mirror, the publications are displayed at the mirror and are no longer displayed at the principal. 데이터베이스가 미러 데이터베이스로 장애 조치된 경우에는 Management StudioManagement Studio 와 복제 모니터를 수동으로 새로 고쳐서 변경 내용을 적용해야 할 수 있습니다.If the database fails over to the mirror, you might need to manually refresh Management StudioManagement Studio and Replication Monitor for the change to be reflected.

  • 복제 모니터는 개체 트리에 주 서버와 미러 서버의 게시 노드를 표시합니다.Replication Monitor displays Publisher nodes in the object tree for both the principal and the mirror. 주 서버가 활성 서버이면 게시 정보가 복제 모니터의 주 노드 아래에만 표시됩니다.If the principal is the active server, publication information is displayed only under the principal node in Replication Monitor.

    미러 서버가 활성 서버인 경우:If the mirror is the active server:

    • 에이전트에서 오류가 발생한 경우 오류는 미러 노드가 아닌 주 노드에만 표시됩니다.If an agent has an error, the error is indicated only on the principal node, not on the mirror node.

    • 주 서버가 사용 가능하지 않은 경우 주 노드와 미러 노드는 동일한 게시 목록을 표시합니다.If the principal is unavailable, the principal and mirror nodes display identical lists of publications. 미러 노드 아래의 게시에 대해 모니터링이 수행됩니다.Monitoring should be performed on the publications under the mirror node.

  • 게시자 이름 지정 등을 위해 저장 프로시저나 RMO(복제 관리 개체)를 사용하여 미러 서버에서 복제를 관리할 때는 복제용으로 데이터베이스가 설정된 인스턴스 이름을 지정해야 합니다.When using stored procedures or Replication Management Objects (RMO) to administer replication at the mirror, for cases in which you specify the Publisher name, you must specify the name of the instance on which the database was enabled for replication. 올바른 이름을 확인하려면 publishingservername함수를 사용하십시오.To determine the appropriate name, use the function publishingservername.

    게시 데이터베이스가 미러된 경우 미러된 데이터베이스에 저장된 복제 메타데이터는 주 데이터베이스에 저장된 메타데이터와 동일합니다.When a publication database is mirrored, the replication metadata stored in the mirrored database is identical to the metadata stored in the principal database. 따라서 주 서버에서 복제용으로 설정된 게시 데이터베이스의 경우 미러 서버에서 시스템 테이블에 저장된 게시자 이름은 미러 서버가 아닌 주 서버의 이름입니다.Consequently, for publication databases enabled for replication at the principal, the Publisher instance name stored in system tables at the mirror is the name of the principal, not the mirror. 이러한 방식은 게시 데이터베이스가 미러 서버로 장애 조치되는 경우 복제 구성 및 유지 관리에 영향을 줍니다.This affects replication configuration and maintenance if the publication database fails over to the mirror. 예를 들어 장애 조치(failover) 후에 미러 서버에서 저장 프로시저로 복제를 구성할 때 주 서버에서 설정된 게시 데이터베이스에 끌어오기 구독을 추가하려면 @publisher 또는 sp_addmergepullsubscription@publisher을 참조하세요.For example, if you are configuring replication with stored procedures on the mirror after a failover, and you want to add a pull subscription to a publication database that was enabled at the principal, you must specify the principal name rather than the mirror name for the @publisher parameter of sp_addpullsubscription or sp_addmergepullsubscription.

    미러 서버로 장애 조치된 후 미러 서버에 게시 데이터베이스를 설정하면 시스템 테이블에 저장된 게시자 인스턴스 이름이 미러 서버의 이름이며, 이 경우 @publisher 매개 변수에 대해 미러 서버의 이름을 사용하게 됩니다.If you enable a publication database at the mirror after failover to the mirror, the Publisher instance name stored in system tables is the name of the mirror; in this case, you would use the name of the mirror for the @publisher parameter.

    참고

    sp_addpublication과 같은 일부 경우에는 @publisher 매개 변수가 비 SQL ServerSQL Server 게시자에 대해서만 지원되며, 이 경우 SQL ServerSQL Server 데이터베이스 미러링과는 관련이 없습니다.In some cases, such as sp_addpublication, the @publisher parameter is supported only for non- SQL ServerSQL Server Publishers; in these cases, it is not relevant for SQL ServerSQL Server database mirroring.

  • 장애 조치 후 Management StudioManagement Studio 에서 구독을 동기화하려면 구독자에서 끌어오기 구독을 동기화하고 활성 게시자에서 밀어넣기 구독을 동기화합니다.To synchronize a subscription in Management StudioManagement Studio after a failover: synchronize pull subscriptions from the Subscriber; and synchronize push subscriptions from the active Publisher.

미러링이 제거된 경우의 복제 동작Replication Behavior if Mirroring is Removed

게시된 데이터베이스에서 미러링이 제거된 경우에는 다음 문제에 주의하십시오.Keep the following issues in mind if database mirroring is removed from a published database:

  • 주 서버에서 게시 데이터베이스가 더 이상 미러되지 않는 경우에는 원래의 주 서버에 대해 변경되지 않은 상태로 복제가 계속 작동합니다.If the publication database at the principal is no longer mirrored, replication continues to work unchanged against the original principal.

  • 게시 데이터베이스가 주 서버에서 미러 서버로 장애 조치되고 미러링 관계가 이후에 해제되거나 제거되면 복제 에이전트가 미러 서버에 대해 더 이상 작동하지 않습니다.If the publication database fails over from the principal to the mirror and the mirroring relationship is subsequently disabled or removed, replication agents will not function against the mirror. 주 서버가 영구적으로 손실된 경우, 게시자로 지정된 미러 서버에서 복제를 해제하고 다시 구성하십시오.If the principal is permanently lost, disable and then reconfigure replication with the mirror specified as the Publisher.

  • 데이터베이스 미러링이 완전히 제거된 경우 미러 데이터베이스는 복구 상태에 있으며 작동하려면 복원되어야 합니다.If database mirroring is removed completely, the mirror database is in a recovery state and must be restored in order to become functional. 복제와 관련하여 복구된 데이터베이스의 동작은 KEEP_REPLICATION 옵션이 지정되었는지 여부에 따라 달라집니다.The behavior of the recovered database with respect to replication depends on whether the KEEP_REPLICATION option is specified. 이 옵션은 복원 작업에서 게시된 데이터베이스를 해당 데이터베이스가 만들어진 서버 외의 다른 서버로 복원할 경우 복제 설정을 보존하도록 지정합니다.This option forces the restore operation to preserve replication settings when restoring a published database to a server other than that on which the backup was created. KEEP_REPLICATION 옵션은 다른 게시 데이터베이스를 사용할 수 없는 경우에만 사용하십시오.Use the KEEP_REPLICATION option only when the other publication database is unavailable. 다른 게시 데이터베이스가 변경되지 않은 상태로 복제 중인 경우에는 옵션이 지원되지 않습니다.The option is not supported if the other publication database is still intact and replicating. KEEP_REPLICATION에 대한 자세한 내용은 RESTORE(Transact-SQL)를 참조하세요.For more information about KEEP_REPLICATION, see RESTORE (Transact-SQL).

로그 판독기 에이전트 동작Log Reader Agent Behavior

다음 표에서는 데이터베이스 미러링의 다양한 운영 모드에 대한 로그 판독기 에이전트 동작에 대해 설명합니다.The following table describes Log Reader Agent behavior for the various operating modes of database mirroring.

운영 모드Operating mode 미러 서버를 사용할 수 없는 경우의 로그 판독기 에이전트 동작Log Reader Agent behavior if the mirror is unavailable
자동 장애 조치 있는 보호 우선 모드High-safety mode with automatic failover 미러 서버를 사용할 수 없는 경우 로그 판독기 에이전트는 명령을 배포 데이터베이스에 전달합니다.If the mirror is unavailable, the Log Reader Agent propagates commands to the distribution database. 미러 서버가 다시 온라인 상태가 되고 주 서버의 모든 트랜잭션이 포함되기 전에는 주 서버가 미러 서버로 장애 조치될 수 없습니다.The principal cannot failover to the mirror until the mirror is back online and has all transactions from the principal.
성능 우선 모드High-performance mode 미러 서버를 사용할 수 없으면 주 데이터베이스가 노출된 상태(즉, 미러되지 않은 상태)로 실행됩니다.If the mirror is unavailable, the principal database is running exposed (that is, unmirrored). 하지만 로그 판독기 에이전트는 미러 서버에 저장된 트랜잭션만 복제합니다.However, the Log Reader Agent only replicates those transactions that are hardened on the mirror. 서비스가 강제되고 미러 서버가 주 서버의 역할을 수행하는 경우 로그 판독기 에이전트는 미러 서버에 따라 작동되며 새로운 트랜잭션을 가져오기 시작합니다.If service is forced and the mirror server assumes the role of the principal, the Log Reader Agent will work against the mirror and start picking up the new transactions.

미러 서버가 주 서버보다 뒤쳐지면 복제 지연이 증가할 수 있습니다.Be aware that replication latency will increase if the mirror falls behind the principal.
자동 장애 조치를 지원하지 않는 보호 우선 모드High-safety mode without automatic failover 커밋된 모든 트랜잭션이 미러 서버의 디스크에 확정됩니다.All committed transactions are guaranteed to be hardened to disk on the mirror. 로그 판독기 에이전트는 미러 서버에 확정된 트랜잭션만 복제합니다.The Log Reader Agent replicates only those transactions that are hardened on the mirror. 미러 서버를 사용할 수 없는 경우 주 서버는 데이터베이스에 대한 더 이상의 작동을 허용하지 않기 때문에 로그 에이전트에는 복제할 트랜잭션이 없게 됩니다.If the mirror is unavailable, the principal disallows further activity in the database; therefore the Log Reader Agent has no transactions to replicate.

참고 항목See Also

복제 기능 및 태스크 Replication Features and Tasks
로그 전달 및 복제(SQL Server)Log Shipping and Replication (SQL Server)