Always On 가용성 그룹을 사용한 복제 구성
적용 대상: SQL Server - Windows만 해당
SQL Server 복제본 및 Always On 가용성 그룹을 구성하는 데는 7단계가 포함됩니다. 각 단계에 대해서는 다음 섹션에서 자세하게 설명합니다.
1. 데이터베이스 게시물 및 구독 구성
배포자 구성
배포 데이터베이스는 SQL Server 2012 및 SQL Server 2014를 사용한 가용성 그룹에 배치할 수 없습니다. 배포 데이터베이스를 가용성 그룹에 배치하는 것은 병합, 양방향 또는 피어 투 피어 복제본 토폴로지에서 사용하는 배포 데이터베이스를 제외하고 SQL 2016 이상에서 지원됩니다. 더 자세한 정보는 가용성 그룹의 배포 데이터베이스 구성을 참조해 주세요.
배포자에서 배포를 구성합니다. 배포자 구성에 대한 저장 프로시저를 사용하는 경우 sp_adddistpublisher를 실행합니다. 원격 게시자가 배포자에 연결할 때 사용할 암호를 식별하기 위해서 @password 매개 변수를 사용합니다. 원격 배포자를 설정할 때 각 원격 게시자도 암호가 필요합니다.
USE master; GO EXEC sys.sp_adddistributor @distributor = 'MyDistributor', @password = '**Strong password for distributor**';
배포자에서 배포 데이터베이스를 만듭니다. 배포자 구성이 저장 프로시저를 사용하는 경우, sp_adddistpublisher를 실행합니다.
USE master; GO EXEC sys.sp_adddistributiondb @database = 'distribution', @security_mode = 1;
원격 게시자를 구성합니다. 배포자 구성에 저장 프로시저를 사용하는 경우 sp_adddistpublisher를 실행합니다. @security_mode 매개 변수는 복제 에이전트에서 실행되는 게시자 유효성 검사 저장 프로시저에서 현재 주 복제본에 연결하는 방식을 결정하는 데 사용됩니다. 1로 설정된 경우 현재 주 데이터베이스를 연결하는 데 Windows 통합 인증을 사용하여 현재 주 복제본에 연결합니다. 0으로 설정하면 SQL Server 인증을 지정된 @login 및 @password 값과 함께 사용합니다. 유효성 검사 저장 프로시저가 해당 복제본에 성공적으로 연결되기 위해서는 지정된 로그인 및 암호가 각 보조 복제본에서 유효해야 합니다.
참고 항목
수정된 복제본 에이전트가 배포자와는 다른 컴퓨터에서 실행될 경우 Windows 통합 인증으로 주 복제본에 연결하기 위해서는 복제본 호스트 컴퓨터 사이에서의 통신에 대한 Kerberos 인증이 구성되어 있어야 합니다. 현재 주 복제본에 대한 연결에 SQL Server 로그인을 사용하는 것에는 Kerberos 인증이 필요하지 않습니다.
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)를 참조하세요.
원래 게시자에서 게시자 구성
원격 배포를 구성합니다. 게시자 구성에 저장 프로시저를 사용하는 경우 sp_adddistributor를 실행합니다. @password 값은 배포를 설정하기 위해 배포자에서 sp_adddistrbutor 를 실행할 때 사용한 것과 동일한 값으로 지정합니다.
exec sys.sp_adddistributor @distributor = 'MyDistributor', @password = 'MyDistPass'
복제에 데이터베이스를 활성화합니다. 게시자 구성하기 위해 저장 프로시저를 사용하는 경우 sp_adddistributor를 실행합니다. 데이터베이스에 대해 트랜잭션 및 병합 복제본을 모두 구성하려면 모두 각각을 활성화해야 합니다.
USE master; GO EXEC sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'true'; EXEC sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'merge publish', @value = 'true';
복제본 게시, 문서 및 구독을 생성합니다. 복제본을 구성하는 방법에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조해 주세요.
2. Always On 가용성 그룹 구성
의도된 주 복제본에 게시되거나 게시될 데이터베이스를 멤버 데이터베이스로 사용하여 가용성 그룹을 만듭니다. 가용성 그룹 마법사를 사용하는 경우 마법사에서 보조 복제본(replica) 데이터베이스를 초기에 동기화하거나 백업 및 복원을 사용해서 초기화를 수동으로도 실행할 수 있습니다.
복제본(replica) 에이전트에서 현재 주 데이터베이스에 연결하는 데 사용할 가용성 그룹에 대한 DNS 수신기를 만듭니다. 지정한 수신기 이름은 원래 게시자/게시된 데이터베이스 쌍의 리디렉션 대상으로 사용됩니다. 예를 들어 DDL을 사용하여 가용성 그룹을 구성하는 경우 다음 코드 예제를 사용하여 MyAG라는 기존 MyAG
가용성 그룹에 대한 가용성 그룹 수신기를 지정할 수 있습니다:
ALTER AVAILABILITY GROUP 'MyAG'
ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));
자세한 내용은 가용성 그룹의 생성 및 구성(SQL Server)을 참조하세요.
3. 복제에 대해 모든 보조 복제본 호스트가 구성되었는지 확인
각 보조 복제본 호스트에서 SQL Server가 복제본을 지원하도록 구성되었는지 확인합니다. 각 보조 복제본 호스트에서 다음 쿼리를 실행하여 복제본이 설치되어 있는지 확인할 수 있습니다:
USE master;
GO
DECLARE @installed int;
EXEC @installed = sys.sp_MS_replication_installed;
SELECT @installed;
@installed가 0이면 SQL Server 설치에 복제를 추가해야 합니다.
4. 보조 복제본 호스트를 복제 게시자로 구성
보조 복제본은 복제 게시자나 재게시자로 작동할 수 없지만 복제가 구성되어 있어야만 장애 조치(failover) 후 보조 복제본이 작업을 넘겨 받을 수 있습니다. 배포자에서 각 보조 복제본 호스트에 대해 배포를 구성합니다. 원래 게시자를 배포자에 추가할 때 지정한 것과 동일한 배포 데이터베이스 및 작업 디렉터리를 지정합니다. 저장 프로시저를 사용하여 배포를 구성하는 경우 sp_adddistpublisher 사용하여 원격 게시자를 배포자에 연결합니다. 원래 게시자에 @login 및 @password 를 사용한 경우 보조 복제본 호스트를 게시자로 추가할 때 각각에 대해 동일한 값을 지정합니다.
EXEC sys.sp_adddistpublisher
@publisher = 'AGSecondaryReplicaHost',
@distribution_db = 'distribution',
@working_directory = '\\MyReplShare\WorkingDir',
@login = 'MyPubLogin',
@password = '**Strong password for publisher**';
각 보조 복제본 호스트에서 배포를 구성합니다. 원래 게시자의 배포자를 원격 배포자로 식별합니다. 원격 배포자에서 sp_adddistributor를 처음으로 실행하게 될 때 사용한 것과 동일한 암호를 사용해 주세요. 저장 프로시저를 사용해서 배포를 구성하는 경우 sp_adddistributor의 @password 매개 변수를 사용하여 암호를 지정합니다.
EXEC sp_adddistributor
@distributor = 'MyDistributor',
@password = '**Strong password for distributor**';
각 보조 복제본 호스트에서 데이터베이스 게시의 밀어넣기 구독자가 연결된 서버로 표시되는지 확인합니다. 원격 게시자 구성에 저장 프로시저를 사용하는 경우 sp_addlinkedserver 를 사용하여 구독자(아직 없는 경우)를 게시자에 연결된 서버로 추가합니다.
EXEC sys.sp_addlinkedserver
@server = 'MySubscriber';
5. 원래 게시자를 AG 수신기 이름으로 리디렉션
배포자의 배포 데이터베이스에서 sp_redirect_publisher 저장 프로시저를 실행하여 원래 게시자와 게시된 데이터베이스를 가용성 그룹의 가용성 그룹 수신기 이름에 연결합니다.
USE distribution;
GO
EXEC sys.sp_redirect_publisher
@original_publisher = 'MyPublisher',
@publisher_db = 'MyPublishedDB',
@redirected_publisher = 'MyAGListenerName';
6. 복제 유효성 검사 저장 프로시저를 실행하여 구성 확인
배포자의 배포 데이터베이스에서 sp_validate_replica_hosts_as_publishers 저장 프로시저를 실행하여 이제 모든 복제본 호스트가 게시된 데이터베이스의 게시자로 작동하도록 구성되었는지 확인합니다.
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을 실행해야 합니다. sp_validate_redirected_publisher와는 달리 이 저장 프로시저는 가용성 그룹 복제본에 연결할 때 호출자의 자격 증명을 사용하며 msdb.dbo.MSdistpublishers에 저장된 로그인을 사용하지는 않습니다.
참고 항목
sp_validate_복제본(replica)_hosts_as_publishers 읽기 액세스를 허용하지 않거나 읽기 의도를 지정해야 하는 보조 복제본(replica) 호스트의 유효성을 검사할 때 다음 오류와 함께 실패합니다.
Msg 21899, 수준 11, 상태 1, 프로시저 sp_hadr_verify_subscribers_at_publisher, 줄 109
원래 게시자 'MyOriginalPublisher'의 구독자에 대해 sysserver 항목이 있는지 확인하기 위한 리디렉션된 게시자 'MyReplicaHostName'의 쿼리가 실패하고 '976' 오류가 발생했습니다. 오류 메시지는 다음과 같습니다. '오류 976, 수준 14, 상태 1, 메시지: 대상 데이터베이스 'MyPublishedDB'가 가용성 그룹에 참여 중이며, 쿼리가 현재 이 대상 데이터베이스에 액세스할 수 없습니다. 데이터 이동이 일시 중지되었거나 가용성 복제본이 읽기 액세스로 설정되지 않았습니다. 가용성 그룹의 이 데이터베이스 및 다른 데이터베이스에 대한 읽기 전용 액세스를 허용하려면 그룹에 있는 하나 이상의 보조 가용성 복제본 대한 읽기 액세스를 사용하도록 설정합니다. 자세한 내용은 SQL Server 온라인 설명서의 ALTER AVAILABILITY GROUP 문을 참조해 주세요.'.
복제본 호스트 'MyReplicaHostName'에 대해 하나 이상의 게시자 유효성 검사 오류가 발생했습니다.
이는 정상적인 동작입니다. 호스트에서 직접 sysserver 항목을 쿼리하여 이러한 보조 복제본 호스트에서 구독자 서버 항목이 있는지 확인해야 합니다.
7. 원래 게시자를 복제 모니터에 추가
각 가용성 그룹 복제본에서 원래 게시자를 복제 모니터에 추가합니다.
관련 작업
복제
가용성 그룹을 만들고 구성하려면