Always On 게시 데이터베이스 유지 관리(SQL Server)Maintaining an Always On Publication Database (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 가용성 그룹을 사용할 경우 게시 데이터베이스 유지 관리와 관련하여 특별히 고려해야 할 사항에 대해 설명합니다.This topic discusses special considerations for maintaining a publication database when you use Always On availability groups.

항목 내용:In This Topic:

가용성 그룹에서 게시된 데이터베이스 유지 관리 Maintaining a Published Database in an Availability Group

Always On 게시 데이터베이스를 유지 관리하는 작업은 표준 게시 데이터베이스를 유지 관리하는 작업과 기본적으로 동일하지만 다음 사항을 고려해야 합니다.Maintaining an Always On publication database is basically the same as maintaining a standard publication database, with the following considerations:

  • 관리는 주 복제본 호스트에서 수행되어야 합니다.Administration must occur at the primary replica host. SQL Server Management StudioSQL Server Management Studio에서 게시는 로컬 게시 폴더 아래에 주 복제본 호스트 및 읽을 수 있는 보조 복제본을 표시됩니다.In SQL Server Management StudioSQL Server Management Studio, publications appear under the Local Publications folder for the primary replica host and also for readable secondary replicas. 읽을 수 없는 보조 복제본이 주 복제본으로 승격된 경우 장애 조치(failover) 후 수동으로 Management StudioManagement Studio 를 새로 고쳐 변경 내용을 반영해야 합니다.After failover, you might have to manually refresh Management StudioManagement Studio for the change to be reflected if the secondary that was promoted to primary was not readable.

  • 복제 모니터는 항상 원래 게시자에서 게시 정보를 표시합니다.Replication Monitor always displays publication information under the original publisher. 그러나 원래 게시자를 서버로 추가하면 어떤 복제본에서든지 복제 모니터에서 이 정보를 볼 수 있습니다.However, this information can be viewed in Replication Monitor from any replica by adding the original publisher as a server.

  • 게시자 이름 지정 등을 위해 저장 프로시저나 RMO(복제 관리 개체)를 사용하여 현재 주 복제본에서 복제를 관리할 때는 복제용으로 설정된 데이터베이스(원래 게시자)에서 인스턴스 이름을 지정해야 합니다.When using stored procedures or Replication Management Objects (RMO) to administer replication at the current primary, 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 (the original publisher). 올바른 이름을 확인하려면 PUBLISHINGSERVERNAME 함수를 사용하십시오.To determine the appropriate name, use the PUBLISHINGSERVERNAME function. 게시 데이터베이스를 가용성 그룹에 조인하면 보조 데이터베이스 복제본에 저장된 복제 메타데이터가 주 데이터베이스 복제본의 복제 메타데이터와 동일해집니다.When a publishing database joins an availability group, the replication metadata stored in the secondary database replicas is identical to that at the primary. 따라서 주 서버에서 복제용으로 설정된 게시 데이터베이스의 경우 보조 서버에서 시스템 테이블에 저장된 게시자 인스턴스 이름은 보조 서버가 아닌 주 서버의 이름입니다.Consequently, for publication databases enabled for replication at the primary, the publisher instance name stored in system tables at the secondary is the name of the primary, not the secondary. 이러한 방식은 게시 데이터베이스가 보조로 장애 조치되는 경우 복제 구성 및 유지 관리에 영향을 줍니다.This affects replication configuration and maintenance if the publication database fails over to a secondary. 예를 들어 장애 조치 후에 보조 서버에서 저장 프로시저를 사용하여 복제를 구성할 때 다른 복제본에서 설정된 게시 데이터베이스에 끌어오기 구독을 추가하려면 @publisher 또는 sp_addmergepulllsubscription@publisher매개 변수로 현재 게시자 이름이 아닌 원래 게시자 이름을 지정해야 합니다.For example, if you are configuring replication with stored procedures at a secondary after failover, and you want a pull subscription to a publication database that was enabled at a different replica, you must specify the name of the original publisher instead of the current publisher as the @publisher parameter of sp_addpullsubscription or sp_addmergepulllsubscription. 그러나 장애 조치 후 게시 데이터베이스를 활성화하면 시스템 테이블에 저장된 게시자 인스턴스 이름이 현재 주 호스트의 이름이 됩니다.However, if you enable a publication database after failover, the publisher instance name stored in the system tables is the name of the current primary host. 이 경우 @publisher 매개 변수에 대해 현재 주 복제본의 호스트 이름을 사용합니다.In this case, you would use the host name of the current primary replica for the @publisher parameter.

    참고

    sp_addpublication와 같은 일부 프로시저의 경우 @publisher 매개 변수는 SQL ServerSQL Server 인스턴스가 아닌 게시자에 대해서만 지원되며, 이 경우 SQL ServerSQL Server Always On과는 관련이 없습니다.For some procedures, such as sp_addpublication, the @publisher parameter is supported only for publishers that are not instances of SQL ServerSQL Server; in these cases, it is not relevant for SQL ServerSQL Server Always On.

  • 장애 조치 후 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.

가용성 그룹에서 게시된 데이터베이스 제거 Removing a Published Database from an Availability Group

게시된 데이터베이스를 가용성 그룹에서 제거하거나 게시된 멤버 데이터베이스가 있는 가용성 그룹을 삭제할 경우 다음 문제를 고려하세요.Consider the following issues if a published database is removed from an availability group, or if an availability group that has a published member database is dropped.

  • 원래 게시자의 게시 데이터베이스를 가용성 그룹 주 복제본에서 제거할 경우 @redirected_publisher 매개 변수 값을 지정하지 않고 @redirected_publisher 를 실행하여 게시자/데이터베이스 쌍에 대한 리디렉션을 제거해야 합니다.If the publication database at the original publisher is removed from an availability group primary replica, you must run sp_redirect_publisher without specifying a value for the @redirected_publisher parameter in order to remove the redirection for the publisher/database pair.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB';  
    

    주 복제본에서 데이터베이스가 복구 중 상태로 남게 되므로 복원해야 합니다.The database will be left in the recovering state at the primary and must be restored. 이렇게 하면 원래 게시자에 대해 복제가 변함 없이 작동합니다.Once you do this, replication should work unchanged against the original Publisher.

  • 게시 데이터베이스를 원래 게시자에서 복제본으로 장애 조치하며 데이터베이스를 가용성 그룹 주 복제본에서 제거할 경우 sp_redirect_publisher 저장 프로시저를 실행하여 원래 게시자를 명시적으로 새 게시자로 리디렉션합니다.If the publication database fails over from the original publisher to a replica and the database is removed from the availability group primary replica, use the stored procedure sp_redirect_publisher to explicitly redirect the original publisher to the new publisher. 데이터베이스가 복구 중 상태로 남게 되므로 복원해야 합니다.The database will be left in the recovering state and must be restored. 이렇게 하면 가용성 그룹에 있을 때와 마찬가지로 복제가 작동합니다.Once you do this, replication should continue to work as it did under the availability group.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB',  
        @redirected_publisher = 'MyNewPublisher';  
    

    서버에 더 이상 액세스할 수 없더라도 원래 게시자의 원격 서버를 배포자에서 제거하지 마세요.Do not remove the remote server for the original publisher from the distributor, even if the server can no longer be accessed. 게시 메타데이터 쿼리를 충족하려면 배포자에 원래 게시자의 서버 메타데이터가 필요합니다.The server metadata for the original publisher is needed at the distributor to satisfy publication metadata queries.

  • 가용성 그룹 전체를 제거할 경우 복제된 멤버 데이터베이스와 관련된 동작은 게시된 데이터베이스를 가용성 그룹에서 제거할 때와 동일합니다.If a complete availability group is removed, the behavior with regard to a member replicated database is the same as when a published database is removed from an availability group. 데이터베이스를 복원하고 리디렉션을 수정한 후 곧바로 마지막 주 복제본부터 복제를 다시 시작할 수 있습니다.Replication can be resumed from the last primary as soon as the database has been restored and the redirection has been modified. 데이터베이스를 원래 게시자에서 복원하는 경우 리디렉션을 제거해야 합니다.If the database is restored at its original publisher, redirection should be removed. 데이터베이스를 다른 호스트에서 복원하는 경우 새 호스트로 명시적으로 리디렉션을 설정해야 합니다.If the database is restored at a different host, redirection should be explicitly directed to the new host.

    참고

    게시된 멤버 데이터베이스가 있는 가용성 그룹을 제거하거나 게시된 데이터베이스를 가용성 그룹에서 제거하면 게시된 데이터베이스의 모든 복사본이 복구 중 상태로 남게 됩니다.When an availability group is removed that has published member databases, or a published database is removed from an availability group, all copies of the published databases will be left in the recovering state. 데이터베이스를 복원하면 각각이 게시된 데이터베이스로 표시됩니다.If restored, each will appear as a published database. 한 복사본에만 게시 메타데이터를 유지해야 합니다.Only one copy should be retained with publication metadata. 게시된 데이터베이스 복사본에 대해 복제를 비활성화하려면 먼저 모든 구독 및 게시를 데이터베이스에서 제거합니다.To disable replication for a published database copy, first remove all subscriptions and publications from the database.

    sp_dropsubscription 을 실행하여 게시 구독을 제거합니다.Run sp_dropsubscription to remove publication subscriptions. 배포자에서 활성 게시 데이터베이스에 대한 메타데이터를 유지하려면 @ignore_distributributor 매개 변수를 1로 설정해야 합니다.Make sure to set the parameter @ignore_distributributor to 1 to preserve the metadata for the active publishing database at the distributor.

    USE MyDBName;  
    GO  
    
    EXEC sys.sp_dropsubscription   
        @subscriber = 'MySubscriber',  
        @publication = 'MyPublication',  
        @article = 'all',  
        @ignore_distributor = 1;  
    

    sp_droppublication 을 실행하여 모든 게시를 제거합니다.Run sp_droppublication to remove all publications. 다시 @ignore_distributor 매개 변수를 1로 설정하여 배포자의 활성 게시 데이터베이스에 대한 메타데이터를 유지합니다.Again, set the parameter @ignore_distributor to 1 to preserve the metadata for the active publishing database at the distributor.

    EXEC sys.sp_droppublication   
        @publication = 'MyPublication',  
        @ignore_distributor = 1;  
    

    sp_replicationdboption 을 실행하여 데이터베이스에 대한 복제를 사용하지 않도록 설정합니다.Run sp_replicationdboption to disable replication for the database.

    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'false';  
    

    이때 게시된 데이터베이스의 복사본을 유지하거나 삭제할 수 있습니다.At this point, the copy of the published database can be retained or dropped.

참고 항목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