Always On 가용성 그룹에 대한 복제 구성(SQL Server)Configure Replication for 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

SQL ServerSQL Server 복제 및 Always On 가용성 그룹을 구성하는 과정은 7단계로 구성됩니다.Configuring SQL ServerSQL Server replication and Always On availability groups involves seven steps. 각 단계에 대해서는 다음 섹션에서 자세하게 설명합니다.Each step is described in more detail in the following sections.

  1. 데이터베이스 게시 및 구독 구성Configure the database publications and subscriptions.

  2. Always On 가용성 그룹을 구성합니다.Configure the Always On availability group.

  3. 모든 보조 복제본 호스트에 대해 복제가 구성되었는지 확인Insure that all secondary replica hosts are configured for replication.

  4. 보조 복제본 호스트를 복제 게시자로 구성Configure the secondary replica hosts as replication publishers.

  5. 원래 게시자를 가용성 그룹 수신기 이름으로 리디렉션Redirect the original publisher to the Availability Group Listener Name.

  6. 유효성 검사 저장 프로시저를 실행하여 구성 확인Run the validation stored procedure to verify the configuration.

  7. 원래 게시자를 복제 모니터에 추가Add the original publisher to Replication Monitor.

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

1. 데이터베이스 게시 및 구독 구성 1. Configure the Database Publications and Subscriptions

배포자 구성Configure the distributor

배포 데이터베이스를 가용성 그룹에 배치할 수 없습니다.The distribution database cannot be placed in an availability group.

  1. 배포자에서 배포를 구성합니다.Configure distribution at the distributor. 구성에 저장 프로시저를 사용하는 경우 sp_adddistributor를 실행합니다.If stored procedures are being used for configuration, run sp_adddistributor. @password 매개 변수를 사용하여 원격 게시자에서 배포자에 연결할 때 사용될 암호를 식별합니다.Use the @password parameter to identify the password that will be used when a remote publisher connects to the distributor. 암호는 원격 배포자를 설정할 때 각 원격 게시자에서도 필요합니다.The password will also be needed at each remote publisher when the remote distributor is set up.

    USE master;  
    GO  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. 배포자에서 배포 데이터베이스를 만듭니다.Create the distribution database at the distributor. 구성에 저장 프로시저를 사용하는 경우 sp_adddistributiondb를 실행합니다.If stored procedures are being used for configuration, run sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. 원격 게시자를 구성합니다.Configure the remote publisher. 배포자 구성에 저장 프로시저를 사용하는 경우 sp_adddistpublisher를 실행합니다.If stored procedures are being used to configure the distributor, run sp_adddistpublisher. @security_mode 매개 변수는 복제 에이전트에서 실행되는 게시자 유효성 검사 저장 프로시저에서 현재 주 복제본에 연결하는 방법을 결정하는 데 사용됩니다.The @security_mode parameter is used to determine how the publisher validation stored procedure that is run from the replication agents, connects to the current primary. 1로 설정하면 Windows 인증을 사용하여 현재 주 복제본에 연결합니다.If set to 1 Windows authentication is used to connect to the current primary. 0으로 설정하면 지정된 SQL ServerSQL Server @login @login @password @password 인증을 사용합니다.If set to 0, SQL ServerSQL Server authentication is used with the specified @login and @password values. 지정된 로그인 및 암호가 각 보조 복제본에서 유효해야만 유효성 검사 저장 프로시저가 해당 복제본에 연결할 수 있습니다.The login and password specified must be valid at each secondary replica for the validation stored procedure to successfully connect to that replica.

    참고

    수정된 복제 에이전트가 배포자와는 다른 컴퓨터에서 실행될 경우 Windows 인증으로 주 복제본에 연결하려면 복제본 호스트 컴퓨터 간 통신에 대해 Kerberos 인증이 구성되어 있어야 합니다.If any modified replication agents run on a computer other than the distributor, use of Windows authentication for the connection to the primary will require Kerberos authentication to be configured for the communication between the replica host computers. 현재 주 복제본 연결에 SQL ServerSQL Server 로그인을 사용하는 경우에는 Kerberos 인증이 필요하지 않습니다.Use of a SQL ServerSQL Server login for the connection to the current primary will not require Kerberos authentication.

    USE master;  
    GO  
    EXEC sys.sp_adddistpublisher  
        @publisher = 'AGPrimaryReplicaHost',  
        @distribution_db = 'distribution',  
        @working_directory = '\\MyReplShare\WorkingDir',  
        @login = 'MyPubLogin',  
        @password = '**Strong password for publisher**';  
    

    자세한 내용은 sp_adddistpublisher(Transact-SQL)를 참조하세요.For more information, see sp_adddistpublisher (Transact-SQL).

    원래 게시자에서 게시자 구성Configure the publisher at the original publisher

  4. 원격 배포를 구성합니다.Configure remote distribution. 게시자 구성에 저장 프로시저를 사용하는 경우 sp_adddistributor를 실행합니다.If stored procedures are being used to configure the publisher, run sp_adddistributor. @password 값은 배포를 설정하기 위해 배포자에서 sp_adddistrbutor를 실행할 때 사용한 것과 동일한 값으로 지정합니다.Specify the same value for @password as that used when sp_adddistrbutor was run at the distributor to set up distribution.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  5. 데이터베이스를 복제할 수 있도록 설정합니다.Enable the database for replication. 게시자 구성에 저장 프로시저를 사용하는 경우 sp_replicationdboption을 실행합니다.If stored procedures are being used to configure the publisher, run sp_replicationdboption. 데이터베이스에 대해 트랜잭션 복제와 병합 복제를 모두 구성하려는 경우 각각을 따로 설정해야 합니다.If both transactional and merge replication are to be configured for the database, each must be enabled.

    USE master;  
    GO  
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'true';  
    
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'merge publish',  
        @value = 'true';  
    
  6. 복제 게시, 아티클 및 구독을 만듭니다.Create the replication publication, articles, and subscriptions. 복제 구성 방법은 데이터 및 데이터베이스 개체 게시를 참조하세요.For more information about how to configure replication, see Publishing Data and Database objects.

2. Always On 가용성 그룹 구성 2. Configure the Always On Availability Group

의도한 주 복제본에서 게시되거나 게시할 데이터베이스를 멤버 데이터베이스로 추가하여 가용성 그룹을 만듭니다.At the intended primary, create the availability group with the published (or to be published) database as a member database. 가용성 그룹 마법사를 사용하는 경우 마법사가 초기에 보조 복제본 데이터베이스를 동기화하도록 할 수 있습니다. 또는 백업 및 복원을 사용하여 직접 초기화를 수행할 수 있습니다.If using the Availability Group Wizard, you can either allow the wizard to initially synchronize the secondary replica databases or you can perform the initialization manually by using backup and restore.

가용성 그룹에 대해 복제 에이전트가 현재 주 복제본에 연결할 때 사용할 DNS 수신기를 만듭니다.Create a DNS listener for the availability group that will be used by the replication agents to connect to the current primary. 지정한 수신기 이름은 원래 게시자/게시된 데이터베이스 쌍의 리디렉션 대상으로 사용됩니다.The listener name that is specified will be used as the target of redirection for the original publisher/published database pair. 예를 들어 DDL을 사용하여 가용성 그룹을 구성하는 경우 다음 코드 예제를 사용하여 MyAG라는 기존 가용성 그룹에 대한 가용성 그룹 수신기를 지정할 수 있습니다.For example, if you are using DDL to configure the availability group, the following code example can be used to specify an availability group listener for an existing availability group named MyAG:

ALTER AVAILABILITY GROUP 'MyAG'   
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));  

자세한 내용은 가용성 그룹의 생성 및 구성(SQL Server)을 참조하세요.For more information, see Creation and Configuration of Availability Groups (SQL Server).

3. 모든 보조 복제본 호스트에 대해 복제가 구성되었는지 확인 3. Insure that all of the Secondary Replica Hosts are Configured for Replication

각 보조 복제본 호스트에서 SQL ServerSQL Server가 복제를 지원하도록 구성되어 있는지 확인합니다.At each secondary replica host, verify that SQL ServerSQL Server has been configured to support replication. 각 보조 복제본 호스트에서 다음 쿼리를 실행하여 복제가 설치되었는지 확인할 수 있습니다.The following query can be run at each secondary replica host to determine whether replication is installed:

USE master;  
GO  
DECLARE @installed int;  
EXEC @installed = sys.sp_MS_replication_installed;  
SELECT @installed;  

원래 게시자에 @installed 가 0이면 SQL ServerSQL Server 설치에 복제를 추가해야 합니다.If @installed is 0, replication must be added to the SQL ServerSQL Server installation.

4. 보조 복제본 호스트를 복제 게시자로 구성 4. Configure the Secondary Replica Hosts as Replication Publishers

보조 복제본은 복제 게시자나 재게시자로 작동할 수 없지만 복제가 구성되어 있어야만 장애 조치(failover) 후 보조 복제본이 작업을 넘겨 받을 수 있습니다.A secondary replica cannot act as a replication publisher or republisher but replication must be configured so that the secondary can take over after a failover. 배포자에서 각 보조 복제본 호스트에 대해 배포를 구성합니다.At the distributor, configure distribution for each secondary replica host. 원래 게시자를 배포자에 추가할 때 지정한 것과 동일한 배포 데이터베이스 및 작업 디렉터리를 지정합니다.Specify the same distribution database and working directory as was specified when the original publisher was added to the distributor. 배포 구성에 저장 프로시저를 사용하는 경우 sp_adddistpublisher 를 사용하여 원격 게시자를 배포자에 연결합니다.If you are using stored procedures to configure distribution, use sp_adddistpublisher to associate the remote publishers with the distributor. 원래 게시자에 @login @password @password 를 사용한 경우 보조 복제본 호스트를 게시자로 추가할 때 각각에 대해 동일한 값을 지정합니다.If @login and @password were used for the original publisher, specify the same values for each when you add the secondary replica hosts as publishers.

EXEC sys.sp_adddistpublisher  
    @publisher = 'AGSecondaryReplicaHost',  
    @distribution_db = 'distribution',  
    @working_directory = '\\MyReplShare\WorkingDir',  
    @login = 'MyPubLogin',  
    @password = '**Strong password for publisher**';  

각 보조 복제본 호스트에서 배포를 구성합니다.At each secondary replica host, configure distribution. 원래 게시자의 배포자를 원격 배포자로 식별합니다.Identify the distributor of the original publisher as the remote distributor. 배포자에서 원래 sp_adddistributor 를 실행했을 때와 동일한 암호를 사용합니다.Use the same password as that used when sp_adddistributor was run originally at the distributor. 배포 구성에 저장 프로시저를 사용하는 경우 @passwordsp_adddistributor 매개 변수를 사용하여 암호를 지정합니다.If stored procedures are being used to configure distribution, the @password parameter of sp_adddistributor is used to specify the password.

EXEC sp_adddistributor   
    @distributor = 'MyDistributor',  
    @password = '**Strong password for distributor**';  

각 보조 복제본 호스트에서 데이터베이스 게시의 밀어넣기 구독자가 연결된 서버로 표시되는지 확인합니다.At each secondary replica host, make sure that the push subscribers of the database publications appear as linked servers. 원격 게시자 구성에 저장 프로시저를 사용하는 경우 sp_addlinkedserver 를 사용하여 구독자(아직 없는 경우)를 게시자에 연결된 서버로 추가합니다.If stored procedures are being used to configure the remote publishers, use sp_addlinkedserver to add the subscribers (if not already present) as linked servers to the publishers.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. 원래 게시자를 AG 수신기 이름으로 리디렉션 5. Redirect the Original Publisher to the AG Listener Name

배포자의 배포 데이터베이스에서 sp_redirect_publisher 저장 프로시저를 실행하여 원래 게시자와 게시된 데이터베이스를 가용성 그룹의 가용성 그룹 수신기 이름에 연결합니다.At the distributor, in the distribution database, run the stored procedure sp_redirect_publisher to associate the original publisher and the published database with the availability group listener name of the availability group.

USE distribution;  
GO  
EXEC sys.sp_redirect_publisher   
@original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = 'MyAGListenerName';  

6. 복제 유효성 검사 저장 프로시저를 실행하여 구성 확인 6. Run the Replication Validation Stored Procedure to Verify the Configuration

배포자의 배포 데이터베이스에서 sp_validate_replica_hosts_as_publishers 저장 프로시저를 실행하여 이제 모든 복제본 호스트가 게시된 데이터베이스의 게시자로 작동하도록 구성되었는지 확인합니다.At the distributor, in the distribution database, run the stored procedure sp_validate_replica_hosts_as_publishers to verify that all replica hosts are now configured to serve as publishers for the published database.

USE distribution;  
GO  
DECLARE @redirected_publisher sysname;  
EXEC sys.sp_validate_replica_hosts_as_publishers  
    @original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = @redirected_publisher output;  

가용성 그룹에 대한 정보를 쿼리하려면 각 가용성 그룹 복제본 호스트에서 충분한 권한이 있는 로그인으로 sp_validate_replica_hosts_as_publishers 저장 프로시저를 실행해야 합니다.The stored procedure sp_validate_replica_hosts_as_publishers should be run from a login with sufficient authorization at each availability group replica host to query for information about the availability group. sp_validate_redirected_publisher와는 달리 이 저장 프로시저는 가용성 그룹 복제본에 연결할 때 호출자의 자격 증명을 사용하며 msdb.dbo.MSdistpublishers에 저장된 로그인을 사용하지 않습니다.Unlike sp_validate_redirected_publisher, it uses the credentials of the caller and does not use the login retained in msdb.dbo.MSdistpublishers to connect to the availability group replicas.

참고

읽기 권한을 허용하지 않거나 읽기 전용으로 지정해야 하는 보조 복제본 호스트의 유효성을 검사할 경우에는 다음 오류와 함께sp_validate_replica_hosts_as_publishers 가 실패합니다.sp_validate_replica_hosts_as_publishers will fail with the following error when validating secondary replica hosts that do not allow read access, or require read intent to be specified.

메시지 21899, 수준 11, 상태 1, 프로시저 sp_hadr_verify_subscribers_at_publisher, 줄 109Msg 21899, Level 11, State 1, Procedure sp_hadr_verify_subscribers_at_publisher, Line 109

'976' 오류로 인해 리디렉션된 게시자 'MyReplicaHostName'에서 원래 게시자 'MyOriginalPublisher'의 구독자에 대한 sysserver 항목이 있는지 확인하기 위한 쿼리에 실패했습니다(오류 메시지 '오류 976, 수준 14, 상태 1, 메시지: 대상 데이터베이스 'MyPublishedDB'이(가) 가용성 그룹에 참여 중이며 현재 쿼리로 액세스할 수 없습니다.The query at the redirected publisher 'MyReplicaHostName' to determine whether there were sysserver entries for the subscribers of the original publisher 'MyOriginalPublisher' failed with error '976', error message 'Error 976, Level 14, State 1, Message: The target database, 'MyPublishedDB', is participating in an availability group and is currently not accessible for queries. 데이터 이동이 일시 중지되었거나 가용성 복제본이 읽기 액세스로 설정되지 않았습니다.Either data movement is suspended or the availability replica is not enabled for read access. 이 데이터베이스 및 가용성 그룹 내 다른 데이터베이스에 읽기 전용 액세스를 허용하려면 그룹 내 하나 이상의 보조 가용성 복제본에 읽기 액세스를 설정하세요.To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group. 자세한 내용은 온라인 설명서의 ALTER AVAILABILITY GROUP SQL ServerSQL Server 문을 참조하세요.'.For more information, see the ALTER AVAILABILITY GROUP statement in SQL ServerSQL Server Books Online.'.

복제본 호스트 'MyReplicaHostName'에 대해 하나 이상의 게시자 유효성 검사 오류가 발생했습니다.One or more publisher validation errors were encountered for replica host 'MyReplicaHostName'.

이 동작은 정상적인 동작입니다.This is expected behavior. 이러한 보조 복제본 호스트에서 직접 sysserver 항목을 쿼리하여 구독자 서버 항목이 있는지 확인해야 합니다.You must verify the presence of the subscriber server entries at these secondary replica hosts by querying for the sysserver entries directly at the host.

7. 원래 게시자를 복제 모니터에 추가 7. Add the Original Publisher to Replication Monitor

각 가용성 그룹 복제본에서 원래 게시자를 복제 모니터에 추가합니다.At each availability group replica, add the original publisher to Replication Monitor.

복제Replication

참고 항목See Also

Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server) Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)
Always On 가용성 그룹 개요(SQL Server) Overview of Always On Availability Groups (SQL Server)
Always On 가용성 그룹: 상호 운용성(SQL Server) Always On Availability Groups: Interoperability (SQL Server)
SQL Server 복제SQL Server Replication