로그 전달 및 복제(SQL Server)

적용 대상:SQL Server

로그 전달에는 일반적으로 서로 다른 컴퓨터에 있는 두 개의 단일 데이터베이스 복사본이 포함됩니다. 현재 클라이언트는 특정 시점에 데이터베이스 복사본을 하나만 사용할 수 있습니다. 이 복사본을 주 데이터베이스라고 합니다. 클라이언트에서 주 데이터베이스에 대해 수행한 업데이트는 로그 전달을 통해 보조 데이터베이스라고 하는 데이터베이스의 다른 복사본으로 전파됩니다. 로그 전달에는 주 데이터베이스에서 수행한 모든 삽입, 업데이트 또는 삭제의 트랜잭션 로그를 보조 데이터베이스에 적용하는 작업이 포함됩니다.

로그 전달은 다음과 같은 동작으로 복제과 함께 사용할 수 있습니다.

  • 로그 전달 장애 조치(failover) 후에는 복제가 계속되지 않습니다. 장애 조치가 발생하면 복제 에이전트가 보조 데이터베이스에 연결하지 않기 때문에 트랜잭션이 구독자에 복제되지 않습니다. 주 데이터베이스에 대한 장애 복구(failback)가 발생하면 복제가 다시 시작됩니다. 로그 전달이 보조 데이터베이스에서 다시 주 데이터베이스로 복사하는 모든 트랜잭션은 구독자에게 복제됩니다.

  • 주 데이터베이스가 영구적으로 손실된 경우 복제를 계속할 수 있도록 보조 데이터베이스의 이름을 바꿀 수 있습니다. 이 항목의 나머지 부분에서는 이 경우를 처리하기 위한 요구 사항 및 절차를 설명합니다. 제공된 예는 로그 전달에서 가장 일반적인 게시 데이터베이스이지만 구독 및 배포 데이터베이스에 더 간단한 프로세스를 적용할 수도 있습니다.

복제를 재구성하지 않고도 복제와 관련된 데이터베이스를 복구하는 방법에 대한 자세한 내용은 복제된 데이터베이스 백업 및 복원을 참조하세요.

참고 항목

로그 전달 대신 Always On 가용성 그룹을 사용하여 게시 데이터베이스에 대한 가용성을 제공합니다. 자세한 내용은 Always On 가용성 그룹을 사용하여 복제 구성을 참조하세요.

주 서버가 손실된 경우 보조 서버로부터 복제하기 위한 요구 사항 및 절차

다음 요구 사항 및 고려 사항에 유의하세요.

  • 주 데이터베이스가 둘 이상의 게시 데이터베이스를 포함하는 경우 로그는 모든 게시 데이터베이스를 동일한 보조 데이터베이스로 전달합니다.

  • 보조 서버 인스턴스의 설치 경로는 주 서버와 동일해야 합니다. 보조 서버의 사용자 데이터베이스 위치는 주 서버와 동일해야 합니다.

  • 주 데이터베이스에 서비스 마스터 키를 백업합니다. 이 키는 보조 서버에서 복원됩니다. 자세한 내용은 BACKUP SERVICE MASTER KEY(Transact-SQL)를 참조하세요.

  • 로그 전달은 데이터 손실 방지를 보장하지 않습니다. 주 데이터베이스에 오류가 발생하면 아직 백업되지 않은 데이터나 오류 중에 손실된 백업의 데이터가 손실될 수 있습니다.

트랜잭션 복제와 로그 전달

트랜잭션 복제의 경우 로그 전달 동작은 sync with backup 옵션에 따라 달라집니다. 이 옵션은 게시 데이터베이스 및 배포 데이터베이스에서 설정할 수 있습니다. 게시자에 대한 로그 전달에서는 게시 데이터베이스의 설정만 관련이 있습니다.

배포 데이터베이스에 이 옵션을 설정하면 트랜잭션은 게시 데이터베이스에서 백업될 때까지 배포 데이터베이스로 전달되지 않습니다. 그러면 복원된 게시 데이터베이스에 없는 트랜잭션이 배포 데이터베이스에 있을 수 없으므로 보조 서버에서 마지막 게시 데이터베이스 백업을 복원할 수 있습니다. 이 옵션은 게시자가 보조 서버로 장애 조치(fail over)되는 경우 게시자, 배포자 및 구독자 간의 일관성을 보장합니다. 트랜잭션이 게시자에서 백업될 때까지 배포 데이터베이스로 전달될 수 없으므로 대기 시간 및 처리량이 영향을 받습니다. 애플리케이션에서 이 대기 시간을 허용할 수 있으면 게시 데이터베이스에서 이 옵션을 설정하는 것이 좋습니다. sync with backup 옵션이 설정되지 않은 경우 구독자는 보조 서버에서 복구된 데이터베이스에 더 이상 포함되지 않은 변경 내용을 수신할 수 있습니다. 자세한 내용은 스냅샷 및 트랜잭션 복제의 백업 및 복원을 위한 전략을 참조하세요.

sync with backup 옵션을 사용하여 트랜잭션 복제 및 로그 전달을 구성하려면

  1. 게시 데이터베이스에서 sync with backup 옵션이 설정되지 않은 경우 sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'를 실행합니다. 자세한 내용은 sp_replicationdboption(Transact-SQL)을 참조하세요.

  2. 게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.

  3. 게시자가 실패하면 RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server)RESTORE(Transact-SQL)를 참조하세요.

  4. msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.

    이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.

  5. 보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.

  6. 보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.

sync with backup 옵션을 사용하지 않고 트랜잭션 복제 및 로그 전달을 구성하려면

  1. 게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.

  2. 게시자가 실패하면 RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server)RESTORE(Transact-SQL)를 참조하세요.

  3. msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.

    이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.

  4. 보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.

    로그 판독기 에이전트에서 게시 데이터베이스와 배포 데이터베이스가 동기화되지 않는다는 오류 메시지가 표시될 수 있습니다.

  5. 보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.

  6. sp_replrestart를 실행합니다. 이 저장 프로시저를 사용하여 로그 판독기 에이전트가 게시 데이터베이스 로그에서 이전에 복제된 트랜잭션을 모두 무시하도록 강제할 수 있습니다. 저장 프로시저가 완료된 후 적용된 트랜잭션은 로그 판독기 에이전트에 의해 처리됩니다. 자세한 내용은 sp_replrestart(Transact-SQL)를 참조하세요.

  7. 저장 프로시저가 성공적으로 실행된 후 로그 판독기 에이전트를 다시 시작합니다. 자세한 내용은 복제 에이전트 시작 및 중지(SQL Server Management Studio)를 참조하세요.

  8. 구독자에 이미 배포된 트랜잭션은 게시자에 적용될 수 있습니다. 배포 에이전트가 구독자에서 이러한 트랜잭션을 다시 적용하려고 할 때 오류로 실패하지 않도록 하려면 데이터 일관성 오류 발생 시 계속이라는 에이전트 프로필을 지정합니다.

병합 복제와 로그 전달

병합 복제와 로그 전달을 구성하려면 아래 절차의 단계를 따르십시오.

병합 복제 및 로그 전달을 구성하려면

  1. 게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.

  2. 게시자가 실패하면 보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.

  3. RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server)RESTORE(Transact-SQL)를 참조하세요.

  4. msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.

    이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.

  5. 보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.

  6. 하나 이상의 구독 데이터베이스와 게시 데이터베이스를 동기화합니다. 이렇게 하면 이전에 게시 데이터베이스에서 수행되었지만 복원된 백업에는 표시되지 않은 변경 내용을 업로드할 수 있습니다. 업로드할 수 있는 데이터는 게시가 필터링되는 방식에 따라 달라집니다.

    • 게시가 필터링되지 않은 경우 최신 구독자와 동기화하여 게시 데이터베이스를 최신 상태로 유지할 수 있어야 합니다.

    • 게시가 필터링된 경우 게시 데이터베이스를 최신 상태로 만들 수 없을 수도 있습니다. 각 구독이 동부, 서부, 남부 및 북부 중 한 지역에 대한 고객 데이터만 수신하도록 분할된 테이블을 고려해 봅시다. 데이터의 각 파티션에 구독자가 하나 이상 있는 경우 각 파티션의 구독자와 동기화하면 게시 데이터베이스가 최신 상태로 유지됩니다. 그러나 예를 들어 서부 파티션의 데이터가 어떤 구독자에도 복제되지 않은 경우 게시자의 이 데이터를 최신 상태로 유지할 수 없습니다. 이 경우에는 게시자 및 구독자의 데이터가 일치하도록 모든 구독을 다시 초기화하는 것이 좋습니다. 자세한 내용은 구독 다시 초기화를 참조하세요.

    SQL Server 2005(9.x) 이전 버전의 SQL Server를 실행하는 구독자와 동기화하는 경우 구독은 익명일 수 없으며 클라이언트 구독 또는 서버 구독(이전 릴리스에서는 로컬 구독 및 전역 구독이라고 함)이어야 합니다. 자세한 내용은 데이터 동기화를 참조하세요.

참고 항목

SQL Server 복제
로그 전달 정보(SQL Server)Always On 가용성 그룹을 사용하여 복제 구성