스냅숏 및 트랜잭션 복제의 백업 및 복원을 위한 전략Strategies for Backing Up and Restoring Snapshot and Transactional Replication

스냅숏 및 트랜잭션 복제에 대한 백업 및 복원 전략을 설계할 때 다음 세 가지 영역을 고려해야 합니다.When you design a backup and restore strategy for snapshot and transactional replication, there are three areas to consider:

  • 백업할 데이터베이스Which databases to back up.

  • 트랜잭션 복제에 대한 백업 설정Backup settings for transactional replication.

  • 데이터베이스를 복원하는 데 필요한 단계.The steps that are required to restore a database. 이 단계는 선택한 복제 유형 및 옵션에 따라 달라집니다.These depend on the type of replication and options chosen.

    이 항목에서는 다음 3개의 섹션에서 각 영역을 설명합니다.This topic covers each of these areas in the next three sections. Oracle 게시에 대한 백업 및 복원에 대한 자세한 내용은 Oracle 게시자 백업 및 복원을 참조하세요.For information about backup and restore for Oracle publishing, see Backup and Restore for Oracle Publishers.

데이터베이스 백업Backing up Databases

스냅숏 및 트랜잭션 복제의 경우 다음 데이터베이스를 정기적으로 백업해야 합니다.For snapshot and transactional replication, you should regularly back up the following databases:

  • 게시자의 게시 데이터베이스The publication database at the Publisher.

  • 배포자의 배포 데이터베이스The distribution database at the Distributor.

  • 각 구독자의 구독 데이터베이스The subscription database at each Subscriber.

  • 게시자, 배포자 및 모든 구독자의 mastermsdb 시스템 데이터베이스.The master and msdb system databases at the Publisher, Distributor and all Subscribers. 이러한 데이터베이스는 각각 그리고 관련 복제 데이터베이스와 동시에 백업되어야 합니다.These databases should be backed up at the same time as each other and the relevant replication database. 예를 들어 게시 데이터베이스를 백업할 때는 게시자의 mastermsdb 데이터베이스를 동시에 백업합니다.For example, back up the master and msdb databases at the Publisher at the same time that you back up the publication database. 게시 데이터베이스를 복원한 경우에는 mastermsdb 데이터베이스의 복제 구성 및 설정이 게시 데이터베이스와 일치하는지 확인해야 합니다.If the publication database is restored, make sure that the master and msdb databases are consistent with the publication database with regard to replication configuration and settings.

    정기적인 로그 백업을 수행할 경우 모든 복제 관련 변경 내용은 로그 백업에 캡처됩니다.If you perform regular log backups, any replication-related changes should be captured in the log backups. 로그 백업을 수행하지 않는 경우 복제와 관련된 설정이 변경될 때마다 백업을 수행해야 합니다.If you do not perform log backups, a backup should be performed whenever a setting relevant to replication is changed. 자세한 내용은 Common Actions Requiring an Updated Backup을 참조하세요.For more information, see Common Actions Requiring an Updated Backup.

트랜잭션 복제에 대한 백업 설정Backup Settings for Transactional Replication

트랜잭션 복제 과정에는 배포 데이터베이스 및 게시 데이터베이스에 설정할 수 있는 sync with backup 옵션이 사용됩니다.Transactional replication includes using the sync with backup option, which can be set on the distribution database and the publication database:

  • 배포 데이터베이스에는 이 옵션을 항상 설정하는 것이 좋습니다.We recommend that you always set this option on the distribution database.

    배포 데이터베이스에 이 옵션을 설정하면 게시 데이터베이스 로그의 트랜잭션은 배포 데이터베이스에서 백업될 때까지 잘리지 않습니다.Setting this option on the distribution database ensures that transactions in the log of the publication database will not be truncated until they have been backed up at the distribution database. 배포 데이터베이스는 마지막 백업으로 복원할 수 있으며 손실된 트랜잭션은 게시 데이터베이스에서 배포 데이터베이스로 배달됩니다.The distribution database can be restored to the last backup, and any missing transactions are delivered from the publication database to the distribution database. 복제는 아무런 영향 없이 계속됩니다.Replication continues unaffected.

    배포 데이터베이스에 이 옵션을 설정해도 복제 지연 시간에는 영향을 주지 않습니다.Setting this option on the distribution database does not affect replication latency. 그러나 배포 데이터베이스의 해당 트랜잭션이 백업될 때까지 게시 데이터베이스의 로그 잘라내기가 지연됩니다.However, the option will delay the truncation of the log on the publication database until the corresponding transactions in the distribution database have been backed up. 이로 인해 게시 데이터베이스에 더 큰 트랜잭션 로그가 만들어질 수 있습니다.(This can create a larger transaction log in the publication database.)

  • 응용 프로그램에서 추가 대기 시간을 허용할 수 있는 경우 게시 데이터베이스에 이 옵션을 설정하는 것이 좋습니다.We recommend that you set this option on the publication database if your application can tolerate additional latency.

    게시 데이터베이스에 이 옵션을 설정하면 트랜잭션은 게시 데이터베이스에서 백업될 때까지 배포 데이터베이스로 배달되지 않습니다.Setting this option on the publication database ensures that transactions are not delivered to the distribution database until they are backed up at the publication database. 그러면 복원된 게시 데이터베이스에 없는 트랜잭션이 배포 데이터베이스에 있을 수 없으므로 게시자에서 마지막 게시 데이터베이스 백업을 복원할 수 있습니다.The last publication database backup can then be restored at the Publisher without any chance of the distribution database having transactions that the restored publication database does not have.

    트랜잭션이 게시자에서 백업될 때까지 배포 데이터베이스로 배달될 수 없으므로 지연 시간 및 처리량에 영향을 받습니다.Latency and throughput are affected because transactions cannot be delivered to the distribution database until they have been backed up at the Publisher. 예를 들어 트랜잭션 로그가 5분마다 백업되는 경우에는 트랜잭션이 게시자에서 커밋된 후 배포 데이터베이스와 구독자로 차례로 배달되기까지 5분의 추가 대기 시간이 발생합니다.For example, if the transaction log is backed up every five minutes, there is an additional five minutes of latency between when a transaction is committed at the Publisher and when the transaction is delivered to the distribution database, and subsequently the Subscriber.

    참고

    sync with backup 옵션을 사용하면 게시 데이터베이스와 배포 데이터베이스 간의 일관성을 유지할 수 있지만 데이터가 손실될 수도 있습니다.The sync with backup option ensures consistency between the publication database and the distribution database, but the option does not guarantee against data loss. 예를 들어 트랜잭션 로그가 손실되는 경우 마지막 트랜잭션 로그 백업 이후에 커밋된 트랜잭션은 게시 데이터베이스 또는 배포 데이터베이스에서 사용할 수 없습니다.For example, if the transaction log is lost, transactions that have been committed since the last transaction log backup will not be available in the publication database or the distribution database. 이 동작은 복제되지 않는 데이터베이스에서도 같습니다.This is the same behavior as a nonreplicated database.

    sync with backup 옵션을 설정하려면To set the sync with backup option

  • 복제 Transact-SQLTransact-SQL 프로그래밍: 트랜잭션 복제에 대해 통합 백업 사용(복제 Transact-SQL 프로그래밍)Replication Transact-SQLTransact-SQL programming: Enable Coordinated Backups for Transactional Replication (Replication Transact-SQL Programming)

복제와 관련된 데이터베이스 복원Restoring Databases Involved in Replication

최근 백업을 사용할 수 있는 상태에서 적절한 단계를 수행하면 복제 토폴로지의 모든 데이터베이스를 복원할 수 있습니다.You can restore all databases in a replication topology if recent backups are available and the appropriate steps are followed. 게시 데이터베이스의 복원 단계는 사용된 복제 유형 및 옵션에 따라 다르지만 다른 모든 데이터베이스의 복원 단계는 유형 및 옵션과 상관이 없습니다.The restore steps for the publication database depend on the type of replication and options that are used; however, the restore steps for all other databases are independent of the type and options.

복제에서는 복제된 데이터베이스를 백업이 생성된 서버 및 데이터베이스로 복원할 수 있습니다.Replication supports restoring replicated databases to the same server and database from which the backup was created. 복제된 데이터베이스의 백업을 다른 서버 또는 데이터베이스로 복원할 경우 복제 설정은 유지되지 않습니다.If you restore a backup of a replicated database to another server or database, replication settings cannot be preserved. 이 경우 백업 복원 후 모든 게시 및 구독을 다시 만들어야 합니다.In this case, you must re-create all publications and subscriptions after backups are restored.

게시자Publisher

다음과 같은 복제 유형에 대한 복원 단계가 제공됩니다.There are restore steps provided for the following types of replication:

  • 스냅숏 복제Snapshot replication

  • 읽기 전용 트랜잭션 복제Read-only transactional replication

  • 구독 업데이트가 있는 트랜잭션 복제Transactional replication with updating subscriptions

  • 피어 투 피어 트랜잭션 복제Peer-to-peer transactional replication

    이 4가지 복제에 대한 msdb 데이터베이스 및 master 데이터베이스(이 섹션에서 함께 설명됨)의 복원은 모두 동일합니다.The restore of the msdb and master databases, which are also covered in this section, is the same for all four types.

게시 데이터베이스: 스냅숏 복제Publication Database: Snapshot Replication

  1. 게시 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the publication database. 2단계로 이동합니다.Go to step 2.

  2. 게시 데이터베이스 백업이 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does the publication database backup contain the latest configuration for all publications and subscriptions? 그렇다면 복원이 완료된 것이며,If yes, the restore is completed. 그렇지 않으면 3단계로 이동합니다.If no, go to step 3.

  3. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 이 단계로 복원이 완료됩니다.Restore is completed.

    복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

게시 데이터베이스: 읽기 전용 트랜잭션 복제Publication Database: Read-Only Transactional Replication

  1. 게시 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the publication database. 2단계로 이동합니다.Go to step 2.

  2. 실패하기 전에 게시 데이터베이스에 sync with backup 옵션을 설정했는지 확인합니다.Was the sync with backup setting enabled on the publication database before the failure? 옵션을 설정했으면 3단계로 이동하고, 그렇지 않으면 5단계로 이동합니다.If yes, go to step 3; if no, go to step 5.

    옵션이 설정되어 있으면 SELECT DATABASEPROPERTYEX('<PublicationDatabaseName>', 'IsSyncWithBackup') 쿼리가 '1'을 반환합니다.If the setting is enabled, the query SELECT DATABASEPROPERTYEX('<PublicationDatabaseName>', 'IsSyncWithBackup') returns '1'.

  3. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 복원이 완료된 것이며,If yes, the restore is completed. 그렇지 않으면 4단계로 이동합니다.If no, go to step 4.

  4. 복원된 게시 데이터베이스의 구성 정보가 최신 상태가 아닙니다.The configuration information in the restored publication database is not up-to-date. 따라서 배포 데이터베이스의 처리 중인 모든 명령이 구독자에 배포되었는지 확인한 다음 복제 구성을 삭제하고 다시 만들어야 합니다.Therefore, you must make sure that the Subscribers have all outstanding commands in the distribution database, and then drop and re-create the replication configuration.

    1. 모든 구독자가 배포 데이터베이스의 처리 중인 명령과 동기화될 때까지 배포 에이전트를 실행합니다.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. 복제 모니터에서 배포되지 않은 명령 탭을 사용하거나 배포 데이터베이스에서 MSdistribution_status 뷰를 쿼리하여 모든 명령이 구독자에 배달되었는지 확인합니다.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor or by querying the MSdistribution_status view in the distribution database. b 단계로 이동합니다.Go to step b.

      배포 에이전트를 실행하는 방법은 복제 에이전트 시작 및 중지(SQL Server Management Studio)복제 에이전트 실행 파일 개념을 참조하세요.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

      명령을 확인하는 방법은 배포 데이터베이스의 복제된 명령 및 기타 정보 보기(복제 Transact-SQL 프로그래밍)구독 관련 에이전트에 대한 정보 보기 및 태스크 수행(복제 모니터)을 참조하세요.For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

    2. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create subscriptions, specify that the Subscriber already has the data. 이로써 복원이 완료됩니다.The restore is completed.

      복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

  5. 게시 데이터베이스에 sync with backup 옵션이 설정되지 않아서The sync with backup option was not set on the publication database. 복원된 백업에 포함되지 않은 트랜잭션이 배포자 및 구독자에 배달되었을 수 있습니다.Therefore, transactions that were not included in the restored backup might have been delivered to the Distributor and Subscribers. 배포 데이터베이스의 처리 중인 모든 명령이 구독자에 배달되었는지 확인한 다음 복원된 백업에 포함되지 않은 모든 트랜잭션을 게시 데이터베이스에 수동으로 적용해야 합니다.You must now make sure that Subscribers have all outstanding commands in the distribution database, and then manually apply to the publication database any transactions that are not included in the restored backup.

    중요

    이 과정을 수행하면 게시된 테이블이 백업에서 복원된 다른 비게시 테이블보다 더 최신 시점으로 복원될 수 있습니다.Performing this process can cause published tables to be restored to a point in time that is more recent than the point in time of other nonpublished tables that are restored from the backup.

    1. 모든 구독자가 배포 데이터베이스의 처리 중인 명령과 동기화될 때까지 배포 에이전트를 실행합니다.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. 복제 모니터에서 배포되지 않은 명령 탭을 사용하거나 배포 데이터베이스에서 MSdistribution_status 뷰를 쿼리하여 모든 명령이 구독자에 배달되었는지 확인합니다.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor or by querying the MSdistribution_status view in the distribution database. b 단계로 이동합니다.Go to step b.

      배포 에이전트를 실행하는 방법은 복제 에이전트 시작 및 중지(SQL Server Management Studio)복제 에이전트 실행 파일 개념을 참조하세요.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

      명령을 확인하는 방법은 배포 데이터베이스의 복제된 명령 및 기타 정보 보기(복제 Transact-SQL 프로그래밍)구독 관련 에이전트에 대한 정보 보기 및 태스크 수행(복제 모니터)을 참조하세요.For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

    2. tablediff 유틸리티 또는 다른 도구를 사용하여 게시자를 구독자와 수동으로 동기화합니다.Use the tablediff utility or another tool to manually synchronize the Publisher with the Subscriber. 이렇게 하면 게시 데이터베이스 백업에 포함되지 않은 데이터를 구독 데이터베이스에서 복구할 수 있습니다.This enables you to recover data from the subscription database that was not contained in the publication database backup. c 단계로 이동합니다.Go to step c.

      tablediff 유틸리티에 대한 자세한 내용은 복제된 테이블의 차이점 비교(복제 프로그래밍)를 참조하세요.For more information about the tablediff utility, see Compare Replicated Tables for Differences (Replication Programming).

    3. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 저장 프로시저 sp_replrestart 를 실행하여 게시자 메타데이터를 배포자 메타데이터와 다시 동기화합니다.If yes, execute the sp_replrestart stored procedure to resynchronize the Publisher metadata with the Distributor metadata. 이로써 복원이 완료됩니다.The restore is completed. 그렇지 않으면 d 단계로 이동합니다.If no, go to step d.

    4. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create subscriptions, specify that the Subscriber already has the data. 이로써 복원이 완료됩니다.The restore is completed.

      복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

게시 데이터베이스: 구독 업데이트가 있는 트랜잭션 복제Publication Database: Transactional Replication with Updating Subscriptions

  1. 게시 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the publication database. 2단계로 이동합니다.Go to step 2.

  2. 모든 구독자가 배포 데이터베이스의 처리 중인 명령과 동기화될 때까지 배포 에이전트를 실행합니다.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. 복제 모니터에서 배포되지 않은 명령 탭을 사용하거나 배포 데이터베이스에서 MSdistribution_status 뷰를 쿼리하여 모든 명령이 구독자에 배달되었는지 확인합니다.Verify that all commands are delivered to Subscribers by using the Undistributed Commands tab in Replication Monitor, or by querying the MSdistribution_status view in the distribution database. 3단계로 이동합니다.Go to step 3.

    배포 에이전트를 실행하는 방법은 복제 에이전트 시작 및 중지(SQL Server Management Studio)복제 에이전트 실행 파일 개념을 참조하세요.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

    명령을 확인하는 방법은 배포 데이터베이스의 복제된 명령 및 기타 정보 보기(복제 Transact-SQL 프로그래밍)구독 관련 에이전트에 대한 정보 보기 및 태스크 수행(복제 모니터)을 참조하세요.For more information about how to verify commands, see View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) and View Information and Perform Tasks for the Agents Associated With a Subscription (Replication Monitor).

  3. 지연 업데이트 구독을 사용하는 경우 각 구독자에 연결하고 구독 데이터베이스에 있는 MSreplication_queue(Transact-SQL) 테이블의 모든 행을 삭제합니다.If you are using queued updating subscriptions, connect to each Subscriber and delete all rows from the MSreplication_queue (Transact-SQL) table in the subscription database. 4단계로 이동합니다.Go to step 4.

    참고

    지연 업데이트 구독을 사용하고 있으며 테이블에 ID 열이 있는 경우 복원 후에 올바른 ID 범위가 지정되었는지 확인해야 합니다.If you are using queued updating subscriptions and any tables contain identity columns, you must make sure that the correct identity ranges are assigned after a restore. 자세한 내용은 ID 열 복제를 참조하세요.For more information, see Replicate Identity Columns.

  4. 배포 데이터베이스의 처리 중인 모든 명령이 구독자에 배달되었는지 확인한 다음 복원된 백업에 포함되지 않은 모든 트랜잭션을 게시 데이터베이스에 수동으로 적용해야 합니다.You must now make sure that Subscribers have all outstanding commands in the distribution database, and then manually apply to the publication database any transactions that are not included in the restored backup.

    중요

    이 과정을 수행하면 게시된 테이블이 백업에서 복원된 다른 비게시 테이블보다 더 최신 시점으로 복원될 수 있습니다.Performing this process can cause published tables to be restored to a point in time that is more recent than the point in time of other nonpublished tables that are restored from the backup.

    1. 모든 구독자가 배포 데이터베이스의 처리 중인 명령과 동기화될 때까지 배포 에이전트를 실행합니다.Run the Distribution Agent until all Subscribers are synchronized with the outstanding commands in the distribution database. 복제 모니터를 사용하거나 배포 데이터베이스에서 MSdistribution_status 뷰를 쿼리하여 모든 명령이 구독자에 배달되었는지 확인합니다.Verify that all commands are delivered to Subscribers by using Replication Monitor or by querying the MSdistribution_status view in the distribution database. b 단계로 이동합니다.Go to step b.

    2. tablediff Utility 또는 다른 도구를 사용하여 게시자를 구독자와 수동으로 동기화합니다.Use the tablediff Utility or another tool to manually synchronize the Publisher with the Subscriber. 이렇게 하면 게시 데이터베이스 백업에 포함되지 않은 데이터를 구독 데이터베이스에서 복구할 수 있습니다.This enables you to recover data from the subscription database that was not contained in the publication database backup. c 단계로 이동합니다.Go to step c.

      tablediff 유틸리티에 대한 자세한 내용은 복제된 테이블의 차이점 비교(복제 프로그래밍)를 참조하세요.For more information about the tablediff utility, see Compare Replicated Tables for Differences (Replication Programming).

    3. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 저장 프로시저 sp_replrestart 를 실행하여 게시자 메타데이터를 배포자 메타데이터와 다시 동기화합니다.If yes, execute the sp_replrestart stored procedure to resynchronize the Publisher metadata with the Distributor metadata. 이로써 복원이 완료됩니다.The restore is completed. 그렇지 않으면 d 단계로 이동합니다.If no, go to step d.

    4. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create subscriptions, specify that the Subscriber already has the data. 이로써 복원이 완료됩니다.The restore is completed.

      복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see and sp_removedbreplication (Transact-SQL).

      구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

게시 데이터베이스: 피어 투 피어 트랜잭션 복제Publication Database: Peer-to-Peer Transactional Replication

다음 단계에서 게시 데이터베이스 A, BC 는 피어 투 피어 트랜잭션 복제 토폴로지에 있습니다.In the following steps, publication databases A, B, and C are in a peer-to-peer transactional replication topology. AC 데이터베이스는 온라인 상태이며 제대로 작동하고 있습니다. B 데이터베이스는 복원될 데이터베이스입니다.Databases A and C are online and functioning properly; database B is the database to be restored. 여기에서 설명하는 절차, 특히 7, 10 및 11단계는 피어 투 피어 토폴로지에 노드를 추가하는 데 필요한 절차와 매우 비슷합니다.The process described here, especially steps 7, 10, and 11, is very similar to the process required to add a node to a peer-to-peer topology. 이러한 단계를 가장 간단하게 수행하려면 피어 투 피어 토폴로지 구성 마법사를 사용하면 되지만, 저장 프로시저를 사용할 수도 있습니다.The most straightforward way to perform these steps is to use the Configure Peer-to-Peer Topology Wizard, but you can also use stored procedures.

  1. 배포 에이전트를 실행하여 AC 데이터베이스의 구독을 동기화합니다. 2단계로 이동합니다.Run the Distribution Agents to synchronize the subscriptions at databases A and C. Go to step 2.

    배포 에이전트를 실행하는 방법은 복제 에이전트 시작 및 중지(SQL Server Management Studio)복제 에이전트 실행 파일 개념을 참조하세요.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

  2. B에서 사용하는 배포 데이터베이스를 아직 사용할 수 있는 경우 배포 에이전트를 실행하여 B 데이터베이스와 A 데이터베이스 간의 구독과 B 데이터베이스와 C 데이터베이스 간의 구독을 동기화합니다. 3단계로 이동합니다.If the distribution database that B uses is still available, run Distribution Agents to synchronize subscriptions between databases B and A and databases and B and C. Go to step 3.

  3. B에 대한 배포 데이터베이스에서 sp_removedistpublisherdbreplication을 실행하여 B에서 사용하는 배포 데이터베이스의 메타데이터를 제거합니다. 4단계로 이동합니다.Remove metadata from the distribution database that B uses by executing sp_removedistpublisherdbreplication at the distribution database for B. Go to step 4.

  4. AC 데이터베이스에서 B 데이터베이스의 게시에 대한 구독을 삭제합니다. 5단계로 이동합니다.At databases A and C, drop the subscriptions to the publication at database B. Go to step 5.

    구독 삭제 방법은 Subscribe to Publications을 참조하십시오.For more information about how to drop subscriptions, see Subscribe to Publications.

  5. A 데이터베이스의 로그 백업 또는 전체 백업을 수행합니다. 6단계로 이동합니다.Perform a log backup or full backup of database A. Go to step 6.

  6. A 데이터베이스의 백업을 B 데이터베이스에 복원합니다. 이제 B 데이터베이스에는 A 데이터베이스의 데이터는 있지만 복제 구성은 없습니다.Restore the backup of database A at database B. Database B now has the data from database A, but not the replication configuration. 백업을 다른 서버로 복원하면 복제가 제거되므로 이 경우 B 데이터베이스에서 복제가 제거된 것입니다. 7단계로 이동합니다.When you restore a backup to another server, replication is removed; therefore, replication has been removed from database B. Go to step 7.

  7. B 데이터베이스에 게시를 다시 만든 후 A 데이터베이스와 B 데이터베이스 간에 구독을 다시 만듭니다. C 데이터베이스와 관련된 구독은 이후 단계에서 처리합니다.Re-create the publication at database B, and then re-create subscriptions between databases A and B. (Subscriptions that involve database C are handled at a later stage.).

    1. B 데이터베이스에 게시를 다시 만듭니다. b 단계로 이동합니다.Re-create the publication at database B. Go to step b.

    2. 구독자에 이미 데이터가 있음을 지정하여 B 데이터베이스에서 A데이터베이스의 게시에 대한 구독을 다시 만들고 해당 구독이 백업으로 초기화되도록 지정합니다. 즉, sp_addsubscription@sync_type 매개 변수에 initialize with backup값을 지정합니다.Re-create the subscription at database B to the publication at database A, specifying that the subscription should be initialized with a backup (a value of initialize with backup for the @sync_type parameter of sp_addsubscription). c 단계로 이동합니다.Go to step c.

    3. 구독자에 이미 데이터가 있음을 지정하여 A 데이터베이스에서 B데이터베이스의 게시에 대한 구독을 다시 만들고 해당 구독자에 이미 데이터가 있다고 지정합니다. 즉, sp_addsubscription@sync_type 매개 변수에 initialize with backup값을 지정합니다.Re-create the subscription at database A to the publication at database B, specifying that the Subscriber already has the data (a value of replication support only for the @sync_type parameter of sp_addsubscription). 8단계로 이동합니다.Go to step 8.

  8. 배포 에이전트를 실행하여 AB 데이터베이스의 구독을 동기화합니다. 게시된 테이블에 ID 열이 있으면 9단계로 이동합니다.Run the Distribution Agents to synchronize the subscriptions at databases A and B. If there are any identity columns in published tables, go to step 9. 그렇지 않은 경우에는 10단계로 이동합니다.If not, go to step 10.

  9. 복원 후에 A 데이터베이스의 각 테이블에 할당한 ID 범위는 B 데이터베이스에서도 사용됩니다. 복원된 B 데이터베이스가 실패한 B 데이터베이스의 모든 변경 내용(A 데이터베이스와 C 데이터베이스로 전파됨)을 받았는지 확인한 다음 각 테이블의 ID 범위에 대한 초기값을 다시 설정합니다.After the restore, the identity range that you assigned for each table in database A would also be used in database B. Make sure that the restored database B has received all changes from the failed database B that were propagated to database A and database C; and then reseed the identity range for each table.

    1. B 데이터베이스에서 sp_requestpeerresponse를 실행하고 출력 매개 변수 @request_id를 검색합니다.Execute sp_requestpeerresponse at database B and retrieve the output parameter @request_id. b 단계로 이동합니다.Go to step b.

    2. 기본적으로 배포 에이전트는 연속적으로 실행되도록 설정되므로 토큰이 모든 노드로 자동 전송됩니다.By default, the Distribution Agent is set to run continuously; therefore, tokens should be sent to all nodes automatically. 배포 에이전트가 연속 모드로 실행되지 않을 경우에는 에이전트를 실행합니다.If the Distribution Agent is not running in continuous mode, run the agent. 자세한 내용은 복제 에이전트 실행 파일 개념 또는 복제 에이전트 시작 및 중지(SQL Server Management Studio)를 참조하세요.For more information, see Replication Agent Executables Concepts or Start and Stop a Replication Agent (SQL Server Management Studio). c 단계로 이동합니다.Go to step c.

    3. sp_helppeerresponses를 실행하고 b 단계에서 검색한 @request_id 값을 지정합니다.Execute sp_helppeerresponses, providing the @request_id value retrieved in step b. 모든 노드가 피어 요청을 받았음을 표시할 때까지 기다립니다.Wait until all nodes indicate they have received the peer request. d 단계로 이동합니다.Go to step d.

    4. DBCC CHECKIDENT 를 통해 B 데이터베이스에 있는 각 테이블의 ID 범위에 대한 초기값을 다시 설정하여 적절한 범위가 사용되도록 합니다.Use DBCC CHECKIDENT to reseed each table in database B to make sure that an appropriate range is used. 10단계로 이동합니다.Go to step 10.

      ID 범위 관리 방법은 ID 열 복제의 "ID 범위 수동 관리를 위한 범위 할당" 섹션을 참조하세요.For more information about how to manage identity ranges, see the "Assigning ranges for manual identity range management" section of Replicate Identity Columns.

  10. 이 시점에서 B 데이터베이스와 C 데이터베이스는 직접 연결되어 있지 않지만 A 데이터베이스를 통해 변경 내용을 받습니다. 토폴로지에 SQL Server 2005SQL Server 2005가 실행되는 노드가 들어 있으면 11단계로 이동하고, 그렇지 않으면 12단계로 이동합니다.At this point, database B and database C are not directly connected, but they will receive changes through database A. If the topology contains any nodes that are running SQL Server 2005SQL Server 2005, go to step 11; otherwise, go to step 12.

  11. 시스템을 정지하고 BC 데이터베이스 간에 구독을 다시 만듭니다. 시스템 정지 과정에서는 모든 노드에서 게시된 테이블에 대한 작업을 중지하고 각 노드가 다른 모든 노드의 변경 내용을 받았는지 확인합니다.Quiesce the system, and then re-create the subscription between databases B and C. Quiescing a system involves stopping activity on published tables at all nodes and making sure of that each node has received all changes from all other nodes.

    1. 피어 투 피어 토폴로지의 게시된 테이블에 대한 모든 작업을 중지합니다.Stop all activity on published tables in the peer-to-peer topology. b 단계로 이동합니다.Go to step b.

    2. B 데이터베이스에서 sp_requestpeerresponse를 실행하고 출력 매개 변수 @request_id를 검색합니다.Execute sp_requestpeerresponse at database B and retrieve the output parameter @request_id. c 단계로 이동합니다.Go to step c.

    3. 기본적으로 배포 에이전트는 연속적으로 실행되도록 설정되므로 토큰이 모든 노드로 자동 전송됩니다.By default, the Distribution Agent is set to run continuously; therefore, tokens should be sent to all nodes automatically. 배포 에이전트가 연속 모드로 실행되지 않을 경우에는 에이전트를 실행합니다.If the Distribution Agent is not running in continuous mode, run the agent. d 단계로 이동합니다.Go to step d.

    4. sp_helppeerresponses를 실행하고 b 단계에서 검색한 @request_id 값을 지정합니다.Execute sp_helppeerresponses, providing the @request_id value retrieved in step b. 모든 노드가 피어 요청을 받았음을 표시할 때까지 기다립니다.Wait until all nodes indicate they have received the peer request. e 단계로 이동합니다.Go to step e.

    5. 구독자에 이미 데이터가 있음을 지정하여 B 데이터베이스에서 C데이터베이스의 게시에 대한 구독을 다시 만듭니다.Re-create the subscription at database B to the publication at database C, specifying that the Subscriber already has the data. b 단계로 이동합니다.Go to step b.

    6. 구독자에게 이미 데이터가 있음을 지정하여 C 데이터베이스에서 B데이터베이스의 게시에 대한 구독을 다시 만듭니다.Re-create the subscription at database C to the publication at database B, specifying that the Subscriber already has the data. 13단계로 이동합니다.Go to step 13.

  12. B 데이터베이스와 C데이터베이스 간에 구독을 다시 만듭니다.Re-create the subscription between databases B and C:

    1. B데이터베이스에서 MSpeer_lsns 테이블을 쿼리하여 B 데이터베이스에서 C데이터베이스로부터 받은 최신 트랜잭션의 LSN(로그 시퀀스 번호)을 검색합니다.At database B, query the MSpeer_lsns table to retrieve the log sequence number (LSN) of the most recent transaction that database B has received from database C.

    2. 구독자에 이미 데이터가 있음을 지정하여 B 데이터베이스에서 C데이터베이스의 게시에 대한 구독을 다시 만들고 LSN을 기반으로 구독이 초기화되도록 지정합니다. 즉, sp_addsubscription@sync_type 매개 변수에 initialize with backup값을 지정합니다.Re-create the subscription at database B to the publication at database C, specifying that the subscription should be initialized based on LSN (a value of initialize from lsn for the @sync_type parameter of sp_addsubscription). b 단계로 이동합니다.Go to step b.

    3. 구독자에게 이미 데이터가 있음을 지정하여 C 데이터베이스에서 B데이터베이스의 게시에 대한 구독을 다시 만듭니다.Re-create the subscription at database C to the publication at database B, specifying that the Subscriber already has the data. 13단계로 이동합니다.Go to step 13.

  13. 배포 에이전트를 실행하여 BC 데이터베이스의 구독을 동기화합니다. 이로써 복원이 완료됩니다.Run the Distribution Agents to synchronize the subscriptions at databases B and C. The restore is completed.

msdb 데이터베이스(게시자)msdb Database (Publisher)

  1. msdb 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the msdb database.

  2. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 복구가 완료된 것이며If yes, recovery is completed. 그렇지 않으면 3단계로 이동합니다.If no, go to step 3.

  3. 복제 스크립트에서 구독 정리 작업을 다시 만듭니다.Re-create the subscription cleanup job from your replication scripts. 복구가 완료되었습니다.Recovery is completed.

master 데이터베이스(게시자)master Database (Publisher)

  1. master 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the master database.

  2. 해당 데이터베이스의 복제 구성 및 설정이 게시 데이터베이스의 복제 구성 및 설정과 일치하는지 확인합니다.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

배포자의 데이터베이스Databases at the Distributor

배포 데이터베이스Distribution Database

  1. 배포 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the distribution database.

  2. 실패하기 전에 배포 데이터베이스에 sync with backup 옵션을 설정했는지 확인합니다.Was the sync with backup setting enabled on the distribution database before the failure? 그렇다면 3단계로 이동하고, 그렇지 않으면 4단계로 이동합니다.If yes, go to step 3; if no, go to step 4.

    옵션이 설정되어 있으면 SELECT DATABASEPROPERTYEX('<DistributionDatabaseName>', 'IsSyncWithBackup') 쿼리가 '1'을 반환합니다.If the setting is enabled, the query SELECT DATABASEPROPERTYEX('<DistributionDatabaseName>', 'IsSyncWithBackup') returns '1'.

  3. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 복구가 완료된 것이며If yes, recovery is completed. 그렇지 않으면 4단계로 이동합니다.If no, go to step 4.

  4. 복원된 배포 데이터베이스의 구성 정보가 최신 상태가 아니거나 배포 데이터베이스에 sync with backup 옵션이 설정되지 않았습니다.Either the configuration information in the restored distribution database is not up-to-date, or the sync with backup option was not set on the distribution database. 복원 후 게시자에서 커밋되었지만 구독자로 배달되지 않은 트랜잭션이 배포 데이터베이스에는 없을 수도 있습니다. 복제를 삭제하고 다시 만든 다음 유효성 검사를 실행합니다.(After the restore, the distribution database might be missing transactions that were committed at the Publisher but have not yet been delivered to Subscribers.) Drop and re-create replication, and then run validation.

    1. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create subscriptions, specify that the Subscriber already has the data. b 단계로 이동합니다.Go to step b.

      복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

      구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

    2. 모든 게시의 유효성을 검사하도록 표시합니다.Mark all publications for validation. 유효성 검사에 실패한 모든 구독을 다시 초기화합니다.Reinitialize any subscriptions that fail validation. 복구가 완료되었습니다.Recovery is completed.

      유효성 검사에 대한 자세한 내용은 Validate Replicated Data를 참조하십시오.For more information about validation, see Validate Replicated Data. 다시 초기화에 대한 자세한 내용은 구독 다시 초기화를 참조하세요.For more information about reinitialization, see Reinitialize Subscriptions.

msdb 데이터베이스(배포자)msdb Database (Distributor)

  1. msdb 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the msdb database.

  2. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all publications and subscriptions? 그렇다면 복구가 완료된 것이며If yes, recovery is completed. 그렇지 않으면 3단계로 이동합니다.If no, go to step 3.

  3. 게시자, 배포자 및 구독자에서 복제 구성을 제거한 후 구성을 다시 만듭니다.Remove the replication configuration from the Publisher, Distributor and Subscribers, and then re-create the configuration. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create subscriptions, specify that the Subscriber already has the data. 4단계로 이동합니다.Go to step 4.

    복제를 제거하는 방법은 sp_removedbreplication(Transact-SQL)을 참조하세요.For more information about how to remove replication, see sp_removedbreplication (Transact-SQL).

    구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

  4. 모든 게시의 유효성을 검사하도록 표시합니다.Mark all publications for validation. 유효성 검사에 실패한 모든 구독을 다시 초기화합니다.Reinitialize any subscriptions that fail validation. 복구가 완료되었습니다.Recovery is completed.

    유효성 검사에 대한 자세한 내용은 Validate Replicated Data를 참조하십시오.For more information about validation, see Validate Replicated Data. 다시 초기화에 대한 자세한 내용은 구독 다시 초기화를 참조하세요.For more information about reinitialization, see Reinitialize Subscriptions.

master 데이터베이스(배포자)master Database (Distributor)

  1. master 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the master database.

  2. 해당 데이터베이스의 복제 구성 및 설정이 게시 데이터베이스의 복제 구성 및 설정과 일치하는지 확인합니다.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

구독자의 데이터베이스Databases at the Subscriber

구독 데이터베이스Subscription Database

  1. 최신 구독 데이터베이스 백업이 배포 데이터베이스의 최소 배포 보존 기간 설정보다 최신인지 확인합니다.Is the latest subscription database backup more recent than the minimum distribution retention setting on the distribution database? 이를 통해 배포자에 구독자를 최신 상태로 만들기 위해 필요한 명령이 모두 있는지 여부를 확인합니다. 그렇다면 2단계로 이동합니다.(This determines whether the Distributor still has all the commands that are required to bring the Subscriber up-to-date.) If yes, go to step 2. 그렇지 않으면 구독을 다시 초기화합니다.If no, reinitialize the subscription. 복구가 완료되었습니다.Recovery is completed.

    최대 배포 보존 기간 설정을 확인하려면 sp_helpdistributiondb 를 실행하고 max_distretention 열의 값을 검색합니다. 이 값은 시간 단위로 표시됩니다.To determine the maximum distribution retention setting, execute sp_helpdistributiondb and retrieve the value from the max_distretention column (this value is in hours).

    구독을 다시 초기화하는 방법은 Reinitialize a Subscription를 참조하십시오.For more information about how to reinitialize a subscription, see Reinitialize a Subscription.

  2. 최신 구독 데이터베이스 백업을 복원합니다.Restore the latest subscription database backup. 3단계로 이동합니다.Go to step 3.

  3. 구독 데이터베이스에 밀어넣기 구독만 있는 경우 4단계로 이동합니다.If the subscription database contains only push subscriptions, go to step 4. 구독 데이터베이스에 끌어오기 구독이 있는 경우에는 구독 정보가 최신 정보인지,If the subscription database contains any pull subscriptions, ask the following questions: Is the subscription information current? 이 데이터베이스에 오류 발생 시 설정된 테이블과 옵션이 모두 포함되어 있는지 확인합니다.Does the database include all tables and options that were set at the time of failure. 그렇다면 4단계로 이동합니다.If yes, go to step 4. 그렇지 않으면 구독을 다시 초기화합니다.If no, reinitialize the subscription. 복구가 완료되었습니다.Recovery is completed.

  4. 구독자를 동기화하려면 배포 에이전트를 실행합니다.To synchronize the Subscriber, run the Distribution Agent. 복구가 완료되었습니다.Recovery is completed.

    배포 에이전트를 실행하는 방법은 복제 에이전트 시작 및 중지(SQL Server Management Studio)복제 에이전트 실행 파일 개념을 참조하세요.For more information about how to run the Distribution Agent, see Start and Stop a Replication Agent (SQL Server Management Studio) and Replication Agent Executables Concepts.

msdb 데이터베이스(구독자)msdb Database (Subscriber)

  1. msdb 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the msdb database. 이 구독자에서 끌어오기 구독이 사용되는지 확인합니다.Are pull subscriptions used at this Subscriber? 그렇지 않으면 복원이 완료된 것입니다.If no, the restore is completed. 그렇다면 2단계로 이동합니다.If yes, go to step 2.

  2. 복원된 백업이 완료되었으며 최신 상태인지 확인합니다.Is the restored backup complete and up-to-date? 또한 모든 게시 및 구독에 대한 최신 구성을 포함하고 있는지 확인합니다.Does it contain the latest configuration for all pull subscriptions? 그렇다면 복구가 완료된 것이며If yes, recovery is completed. 그렇지 않으면 3단계로 이동합니다.If no, go to step 3.

  3. 끌어오기 구독을 삭제하고 다시 만듭니다.Drop and re-create the pull subscriptions. 구독을 다시 만들 때 구독자에 이미 데이터가 있다고 지정합니다.When you re-create the subscriptions, specify that the Subscriber already has the data. 이로써 복원이 완료됩니다.The restore is completed.

    구독 삭제 방법은 Subscribe to Publications을 참조하십시오.For more information about how to drop subscriptions, see Subscribe to Publications.

    구독자에 이미 데이터가 있다고 지정하는 방법은 Initialize a Subscription Manually를 참조하십시오.For more information about how to specify that the Subscriber already has the data, see Initialize a Subscription Manually.

master 데이터베이스(구독자)master Database (Subscriber)

  1. master 데이터베이스의 최신 백업을 복원합니다.Restore the latest backup of the master database.

  2. 해당 데이터베이스의 복제 구성 및 설정이 게시 데이터베이스의 복제 구성 및 설정과 일치하는지 확인합니다.Make sure that the database is consistent with the publication database with regard to replication configuration and settings.

관련 항목:See Also

SQL Server 데이터베이스 백업 및 복원 Back Up and Restore of SQL Server Databases
복제된 데이터베이스 백업 및 복원 Back Up and Restore Replicated Databases
배포 구성 Configure Distribution
데이터 및 데이터베이스 개체 게시 Publish Data and Database Objects
Subscribe to Publications Subscribe to Publications
구독 초기화 Initialize a Subscription
데이터 동기화 Synchronize Data