복제 구독자 및 Always On 가용성 그룹(SQL Server)Replication Subscribers and Always On Availability Groups (SQL Server)

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

복제 구독자인 데이터베이스를 포함하는 Always On 가용성 그룹이 장애 조치(Failover)되면 복제 구독은 실패할 수 있습니다.When an Always On availability group containing a database that is a replication subscriber fails over, the replication subscription might fail. 트랜잭션 구독자의 경우 구독에서 구독자의 가용성 그룹 수신기 이름을 사용 중인 경우 배포 에이전트가 자동으로 계속 복제합니다.For transactional subscribers, the distribution agent will continue to replicate automatically if the subscription is using the name of the availability group listener of the subscriber. 병합 구독자의 경우 복제 관리자가 복제를 다시 만들어 수동으로 구독자를 다시 구성해야 합니다.For merge subscribers, a replication administrator must manually reconfigure the subscriber, by recreating the subscription.

지원되는 기능What is Supported

SQL ServerSQL Server 복제는 게시자에 대한 자동 장애 조치, 트랜잭션 구독자에 대한 자동 장애 조치 및 병합 구독자에 대한 수동 장애 조치를 제공합니다. replication supports the automatic failover of the publisher, the automatic failover of transactional subscribers, and the manual failover of merge subscribers. 가용성 데이터베이스의 배포자에 대한 장애 조치는 지원되지 않습니다.The failover of a distributor on an availability database is not supported. Always On은 Websync 및 ssNoVersion Compact 시나리오와 함께 사용할 수 없습니다.Always On cannot be combined with Websync and ssNoVersion Compact scenarios.

병합 끌어오기 구독의 장애 조치Failover of a Merge Pull Subscription

서버 인스턴스가 실패하여 사용할 수 없으므로 끌어오기 에이전트가 주 복제본을 호스팅하는 서버 인스턴스의 msdb 데이터베이스에 저장된 작업을 찾을 수 없어 가용성 그룹 장애 조치 시 끌어오기 구독이 실패합니다.A pull subscription fails upon availability group failover, because pull agent cannot find the jobs stored in the msdb database of the server instance that hosts the primary replica; which is not available because the server instance has failed.

병합 밀어넣기 구독의 장애 조치Failover of a Merge Push Subscription

밀어넣기 에이전트가 더 이상 원래 구독자의 원래 구독 데이터베이스에 연결할 수 없으므로 가용성 그룹 장애 조치 시 밀어넣기 구독이 실패합니다.A push subscription fails upon availability group failover, because the push agent can no longer connect to original subscription database on original subscriber.

Always On 환경에서 트랜잭션 구독을 만드는 방법How to Create Transactional Subscription in an Always On Environment

트랜잭션 복제의 경우 다음 단계를 사용하여 구독자 가용성 그룹을 구성 및 장애 조치(Failover)합니다.For transactional replication, use the following steps to configure and failover a subscriber availability group:

  1. 구독을 만들기 전에 구독자 데이터베이스를 적절한 Always On 가용성 그룹에 추가합니다.Before creating the subscription, add the subscriber database to the appropriate Always On availability group.

  2. 가용성 그룹의 모든 노드에 구독자의 가용성 그룹 수신기를 연결된 서버로 추가합니다.Add the subscriber's availability group Listener as a linked server to all nodes of the availability group. 이 단계를 수행하면 모든 잠재적인 장애 조치(Failover) 파트너가 수신기를 인식하고 수신기에 연결할 수 있습니다.This step ensures that all potential failover partners are aware of and can connect to the listener.

  3. 아래 트랜잭션 복제 밀어넣기 구독 만들기 섹션의 스크립트를 사용하여 구독자의 가용성 그룹 수신기 이름으로 구독을 만듭니다.Using the script in the Creating a Transactional Replication Push Subscription section below, create the subscription using the name of the availability group listener of the subscriber. 장애 조치(Failover) 후 수신기 이름은 항상 유효하게 유지되지만 구독자의 실제 서버 이름은 새로운 주 서버가 된 실제 노드에 따라 달라집니다.After a failover, the listener name will always remain valid, whereas the actual server name of the subscriber will depend on the actual node that became the new primary.

    참고

    구독은 Transact-SQLTransact-SQL 스크립트를 사용하여 만들어야 하며 Management StudioManagement Studio를 사용해서는 만들 수 없습니다.The subscription must be created by using a Transact-SQLTransact-SQL script and cannot be created using Management StudioManagement Studio.

  4. 끌어오기 구독을 만드는 경우:If creating a pull subscription:

    1. Management StudioManagement Studio의 주 구독자 노드에서 SQL ServerSQL Server 에이전트를 엽니다.In Management StudioManagement Studio, on the primary subscriber node, open the SQL ServerSQL Server Agent tree.

    2. 끌어오기 배포 에이전트 작업을 식별하고 작업을 편집합니다.Identify the Pull Distribution Agent job and edit the job.

    3. 에이전트 실행 작업 단계에서 -Publisher-Distributor 매개 변수를 확인합니다.On the Run Agent job step, check the -Publisher and -Distributor parameters. 이러한 매개 변수에 올바른 직접 서버 및 게시자 및 배포자의 인스턴스 이름이 포함되어 있는지 확인합니다.Make sure that these parameters contain the correct direct server and instance names of the publisher and distributor server.

    4. -Subscriber 매개 변수를 구독자의 가용성 그룹 수신기 이름으로 변경합니다.Change the -Subscriber parameter to the subscriber's availability group listener name.

    다음 단계에 따라 구독을 만드는 경우 장애 조치 이후 아무 것도 수행하지 않아도 됩니다.When you create your subscription following these steps, then you won’t have to do anything after a failover.

트랜잭션 복제 밀어넣기 구독 만들기Creating a Transactional Replication Push Subscription

-- commands to execute at the publisher, in the publisher database:  
use [<publisher database name>]  
EXEC sp_addsubscription @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @destination_db = N'<subscriber database name>',   
       @subscription_type = N'Push',   
       @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;  
GO  

EXEC sp_addpushsubscription_agent @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @subscriber_db = N'<subscriber database name>',   
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;  
GO  

구독자의 가용성 그룹 장애 조치 이후 병합 에이전트를 다시 시작하려면To Resume the Merge Agents After the Availability Group of the Subscriber Fails Over

병합 복제의 경우 복제 관리자가 다음 단계에 따라 수동으로 구독자를 다시 구성해야 합니다.For merge replication, a replication administrator must manually reconfigure the subscriber with the following steps:

  1. sp_subscription_cleanup 을 실행하여 구독자의 이전 구독을 제거합니다.Execute sp_subscription_cleanup to remove the old subscription for the subscriber. 새로운 주 복제본(이전에 보조 복제본이었음)에서 이 동작을 수행합니다.Perform this action on the new primary replica (which was formerly the secondary replica).

  2. 새 구독을 만들고 새 스냅숏부터 시작하여 구독을 다시 만듭니다.Recreate the subscription by creating a new subscription, beginning with a new snapshot.

참고

현재 프로세스는 병합 복제 구독자에는 불편하지만 병합 복제의 기본 시나리오는 구독자에서 Always On 가용성 그룹을 사용하지 않는 연결이 끊긴 사용자(데스크톱, 노트북, 핸드셋 장치)입니다.The current process is inconvenient for merge replication subscribers, however the main scenario for merge replication is disconnected users (desktops, laptops, handset devices) which will not use Always On availability groups on the subscriber.