AlwaysOn 게시 데이터베이스 유지 관리(SQL Server)
이 항목에서는 AlwaysOn 가용성 그룹을 사용할 경우 게시 데이터베이스 유지 관리와 관련하여 특별히 고려해야 할 사항에 대해 설명합니다.
항목 내용:
가용성 그룹에서 게시된 데이터베이스 유지 관리
가용성 그룹에서 게시된 데이터베이스 제거
관련 태스크
가용성 그룹에서 게시된 데이터베이스 유지 관리
AlwaysOn 게시 데이터베이스를 유지 관리하는 작업은 표준 게시 데이터베이스를 유지 관리하는 작업과 기본적으로 동일하지만 다음 사항을 고려해야 합니다.
관리는 주 복제본 호스트에서 수행되어야 합니다. SQL Server Management Studio에서 게시는 로컬 게시 폴더 아래에 주 복제본 호스트 및 읽을 수 있는 보조 복제본을 표시됩니다. 읽을 수 없는 보조 복제본이 주 복제본으로 승격된 경우 장애 조치(failover) 후 수동으로 Management Studio를 새로 고쳐 변경 내용을 반영해야 합니다.
복제 모니터는 항상 원래 게시자에서 게시 정보를 표시합니다. 그러나 원래 게시자를 서버로 추가하면 어떤 복제본에서든지 복제 모니터에서 이 정보를 볼 수 있습니다.
게시자 이름 지정 등을 위해 저장 프로시저나 RMO(복제 관리 개체)를 사용하여 현재 주 복제본에서 복제를 관리할 때는 복제용으로 설정된 데이터베이스(원래 게시자)에서 인스턴스 이름을 지정해야 합니다. 올바른 이름을 확인하려면 PUBLISHINGSERVERNAME 함수를 사용하십시오. 게시 데이터베이스를 가용성 그룹에 조인하면 보조 데이터베이스 복제본에 저장된 복제 메타데이터가 주 데이터베이스 복제본의 복제 메타데이터와 동일해집니다. 따라서 주 서버에서 복제용으로 설정된 게시 데이터베이스의 경우 보조 서버에서 시스템 테이블에 저장된 게시자 인스턴스 이름은 보조 서버가 아닌 주 서버의 이름입니다. 이러한 방식은 게시 데이터베이스가 보조로 장애 조치되는 경우 복제 구성 및 유지 관리에 영향을 줍니다. 예를 들어 장애 조치 후에 보조 서버에서 저장 프로시저를 사용하여 복제를 구성할 때 다른 복제본에서 설정된 게시 데이터베이스에 끌어오기 구독을 추가하려면 sp_addpullsubscription 또는 sp_addmergepulllsubscription의 @publisher 매개 변수에 대해 현재 게시자 이름이 아닌 원래 게시자 이름을 지정해야 합니다. 그러나 장애 조치 후 게시 데이터베이스를 활성화하면 시스템 테이블에 저장된 게시자 인스턴스 이름이 현재 주 호스트의 이름이 됩니다. 이 경우 @publisher 매개 변수에 대해 현재 주 복제본의 호스트 이름을 사용합니다.
[!참고]
sp_addpublication 같은 일부 프로시저의 경우 @publisher 매개 변수는 SQL Server 인스턴스 이외 게시자에 대해서만 지원되며, 이 경우 SQL Server AlwaysOn과는 관련이 없습니다.
장애 조치 후 Management Studio에서 구독을 동기화하려면 구독자에서 끌어오기 구독을 동기화하고 활성 게시자에서 밀어넣기 구독을 동기화합니다.
[맨 위]
가용성 그룹에서 게시된 데이터베이스 제거
게시된 데이터베이스를 가용성 그룹에서 제거하거나 게시된 멤버 데이터베이스가 있는 가용성 그룹을 삭제할 경우 다음 문제를 고려하십시오.
원래 게시자의 게시 데이터베이스를 가용성 그룹 주 복제본에서 제거할 경우 @redirected\_publisher 매개 변수 값을 지정하지 않고 sp_redirect_publisher를 실행하여 게시자/데이터베이스 쌍에 대한 리디렉션을 제거해야 합니다.
EXEC sys.sp_redirect_publisher @original_publisher = 'MyPublisher', @published_database = 'MyPublishedDB';
주 복제본에서 데이터베이스가 복구 중 상태로 남게 되므로 복원해야 합니다. 이렇게 하면 원래 게시자에 대해 복제가 변함 없이 작동합니다.
게시 데이터베이스를 원래 게시자에서 복제본으로 장애 조치하며 데이터베이스를 가용성 그룹 주 복제본에서 제거할 경우 sp_redirect_publisher 저장 프로시저를 실행하여 원래 게시자를 명시적으로 새 게시자로 리디렉션합니다. 데이터베이스가 복구 중 상태로 남게 되므로 복원해야 합니다. 이렇게 하면 가용성 그룹에 있을 때와 마찬가지로 복제가 작동합니다.
EXEC sys.sp_redirect_publisher @original_publisher = 'MyPublisher', @published_database = 'MyPublishedDB', @redirected_publisher = 'MyNewPublisher';
서버에 더 이상 액세스할 수 없더라도 원래 게시자의 원격 서버를 배포자에서 제거하지 마십시오. 게시 메타데이터 쿼리를 충족하려면 배포자에 원래 게시자의 서버 메타데이터가 필요합니다.
가용성 그룹 전체를 제거할 경우 복제된 멤버 데이터베이스와 관련된 동작은 게시된 데이터베이스를 가용성 그룹에서 제거할 때와 동일합니다. 데이터베이스를 복원하고 리디렉션을 수정한 후 곧바로 마지막 주 복제본부터 복제를 다시 시작할 수 있습니다. 데이터베이스를 원래 게시자에서 복원하는 경우 리디렉션을 제거해야 합니다. 데이터베이스를 다른 호스트에서 복원하는 경우 새 호스트로 명시적으로 리디렉션을 설정해야 합니다.
[!참고]
게시된 멤버 데이터베이스가 있는 가용성 그룹을 제거하거나 게시된 데이터베이스를 가용성 그룹에서 제거하면 게시된 데이터베이스의 모든 복사본이 복구 중 상태로 남게 됩니다. 데이터베이스를 복원하면 각각이 게시된 데이터베이스로 표시됩니다. 한 복사본에만 게시 메타데이터를 유지해야 합니다. 게시된 데이터베이스 복사본에 대해 복제를 비활성화하려면 먼저 모든 구독 및 게시를 데이터베이스에서 제거합니다.
sp_dropsubscription을 실행하여 게시의 구독을 제거합니다. @ignore\_distributributor 매개 변수를 1로 설정하여 배포자의 활성 게시 데이터베이스에 대한 메타데이터를 유지합니다.
USE MyDBName; GO EXEC sys.sp_dropsubscription @subscriber = 'MySubscriber', @publication = 'MyPublication', @article = 'all', @ignore_distributor = 1;
sp_droppublication을 실행하여 모든 게시를 제거합니다. 다시 @ignore\_distributor 매개 변수를 1로 설정하여 배포자의 활성 게시 데이터베이스에 대한 메타데이터를 유지합니다.
EXEC sys.sp_droppublication @publication = 'MyPublication', @ignore_distributor = 1;
sp_replicationdboption을 실행하여 데이터베이스에 대해 복제를 비활성화합니다.
EXEC sys.sp_replicationdboption @dbname = 'MyDBName', @optname = 'publish', @value = 'false';
이때 게시된 데이터베이스의 복사본을 유지하거나 삭제할 수 있습니다.
[맨 위]
관련 태스크
[맨 위]
참고 항목
개념
온라인 설명서의 AlwaysOn 가용성 그룹(SQL Server)에 대한 사전 요구 사항, 제한 사항 및 권장 사항
AlwaysOn 가용성 그룹 개요(SQL Server)