로그 전달 및 복제(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 옵션을 사용하여 트랜잭션 복제 및 로그 전달을 구성하려면
게시 데이터베이스에서 sync with backup 옵션이 설정되지 않은 경우
sp_replicationdboption '<publicationdatabasename>', 'sync with backup', 'true'
를 실행합니다. 자세한 내용은 sp_replicationdboption(Transact-SQL)을 참조하세요.게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.
게시자가 실패하면 RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server) 및 RESTORE(Transact-SQL)를 참조하세요.
msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.
이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.
보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기 및 SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.
보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.
sync with backup 옵션을 사용하지 않고 트랜잭션 복제 및 로그 전달을 구성하려면
게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.
게시자가 실패하면 RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server) 및 RESTORE(Transact-SQL)를 참조하세요.
msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.
이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.
보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기 및 SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.
로그 판독기 에이전트에서 게시 데이터베이스와 배포 데이터베이스가 동기화되지 않는다는 오류 메시지가 표시될 수 있습니다.
보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.
sp_replrestart를 실행합니다. 이 저장 프로시저를 사용하여 로그 판독기 에이전트가 게시 데이터베이스 로그에서 이전에 복제된 트랜잭션을 모두 무시하도록 강제할 수 있습니다. 저장 프로시저가 완료된 후 적용된 트랜잭션은 로그 판독기 에이전트에 의해 처리됩니다. 자세한 내용은 sp_replrestart(Transact-SQL)를 참조하세요.
저장 프로시저가 성공적으로 실행된 후 로그 판독기 에이전트를 다시 시작합니다. 자세한 내용은 복제 에이전트 시작 및 중지(SQL Server Management Studio)를 참조하세요.
구독자에 이미 배포된 트랜잭션은 게시자에 적용될 수 있습니다. 배포 에이전트가 구독자에서 이러한 트랜잭션을 다시 적용하려고 할 때 오류로 실패하지 않도록 하려면 데이터 일관성 오류 발생 시 계속이라는 에이전트 프로필을 지정합니다.
병합 복제와 로그 전달
병합 복제와 로그 전달을 구성하려면 아래 절차의 단계를 따르십시오.
병합 복제 및 로그 전달을 구성하려면
게시 데이터베이스에 대한 로그 전달을 구성합니다. 자세한 내용은 로그 전달 구성(SQL Server)을 참조하세요.
게시자가 실패하면 보조 서버에서 컴퓨터의 이름을 바꾼 다음 SQL Server 인스턴스의 이름을 주 서버 이름과 일치하도록 바꿉니다. 컴퓨터의 이름을 바꾸는 방법은 Windows 설명서를 참조하십시오. 서버 이름 바꾸기에 대한 자세한 내용은 SQL Server의 독립 실행형 인스턴스를 호스팅하는 컴퓨터 이름 바꾸기 및 SQL Server 장애 조치(failover) 클러스터 인스턴스 이름 바꾸기를 참조하세요.
RESTORE LOG의 KEEP_REPLICATION 옵션을 사용하여 데이터베이스의 마지막 로그를 보조 서버로 복원합니다. 이렇게 하면 데이터베이스에 대한 모든 복제 설정이 유지됩니다. 자세한 내용은 로그 전달 보조 데이터베이스로 장애 조치(Failover)(SQL Server) 및 RESTORE(Transact-SQL)를 참조하세요.
msdb 데이터베이스 및 master 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다. 자세한 내용은 시스템 데이터베이스 백업 및 복원(SQL Server)을 참조하세요. 주 데이터베이스가 배포자이기도 한 경우 배포 데이터베이스를 주 데이터베이스에서 보조 데이터베이스로 복원합니다.
이러한 데이터베이스는 복제 구성 및 설정 측면에서 주 데이터베이스의 게시 데이터베이스와 일치해야 합니다.
보조 서버에서 주 서버로부터 백업한 서비스 마스터 키를 복원합니다. 자세한 내용은 RESTORE SERVICE MASTER KEY(Transact-SQL)를 참조하세요.
하나 이상의 구독 데이터베이스와 게시 데이터베이스를 동기화합니다. 이렇게 하면 이전에 게시 데이터베이스에서 수행되었지만 복원된 백업에는 표시되지 않은 변경 내용을 업로드할 수 있습니다. 업로드할 수 있는 데이터는 게시가 필터링되는 방식에 따라 달라집니다.
게시가 필터링되지 않은 경우 최신 구독자와 동기화하여 게시 데이터베이스를 최신 상태로 유지할 수 있어야 합니다.
게시가 필터링된 경우 게시 데이터베이스를 최신 상태로 만들 수 없을 수도 있습니다. 각 구독이 동부, 서부, 남부 및 북부 중 한 지역에 대한 고객 데이터만 수신하도록 분할된 테이블을 고려해 봅시다. 데이터의 각 파티션에 구독자가 하나 이상 있는 경우 각 파티션의 구독자와 동기화하면 게시 데이터베이스가 최신 상태로 유지됩니다. 그러나 예를 들어 서부 파티션의 데이터가 어떤 구독자에도 복제되지 않은 경우 게시자의 이 데이터를 최신 상태로 유지할 수 없습니다. 이 경우에는 게시자 및 구독자의 데이터가 일치하도록 모든 구독을 다시 초기화하는 것이 좋습니다. 자세한 내용은 구독 다시 초기화를 참조하세요.
SQL Server 2005(9.x) 이전 버전의 SQL Server를 실행하는 구독자와 동기화하는 경우 구독은 익명일 수 없으며 클라이언트 구독 또는 서버 구독(이전 릴리스에서는 로컬 구독 및 전역 구독이라고 함)이어야 합니다. 자세한 내용은 데이터 동기화를 참조하세요.
참고 항목
SQL Server 복제
로그 전달 정보(SQL Server)Always On 가용성 그룹을 사용하여 복제 구성