다음을 통해 공유


병합 복제

적용 대상:SQL Server

병합 복제는 트랜잭션 복제처럼 일반적으로 게시 데이터베이스 개체 및 데이터의 스냅샷으로 시작됩니다. 게시자 및 구독자에서 수행한 후속 데이터 변경 및 스키마 수정은 트리거를 사용하여 추적됩니다. 구독자는 네트워크에 연결될 때 게시자와 동기화하여 마지막 동기화 이후 게시자와 구독자 간에 변경된 모든 행을 교환합니다.

병합 복제는 일반적으로 서버-클라이언트 환경에서 사용됩니다. 병합 복제는 다음과 같은 경우에 적합합니다.

  • 여러 구독자가 여러 번 동일한 데이터를 업데이트하고 해당 변경 내용을 게시자 및 다른 구독자에게 전파할 수 있습니다.

  • 구독자는 데이터를 받고, 오프라인으로 변경하고, 나중에 변경 내용을 게시자 및 기타 구독자와 동기화해야 합니다.

  • 각 구독자에는 다른 데이터 파티션이 필요합니다.

  • 충돌이 발생할 수 있으며, 충돌이 발생할 경우 이를 감지하고 해결할 수 있는 기능이 필요합니다.

  • 애플리케이션에는 중간 데이터 상태에 액세스하는 대신 순 데이터 변경이 필요합니다. 예를 들어 행이 게시자와 동기화되기 전에 구독자에서 5번 변경되는 경우, 행은 게시자에서 한 번만 변경되어 순 데이터 변경(즉, 다섯 번째 값)을 반영합니다.

병합 복제를 사용하면 다양한 사이트가 자율적으로 작동하고 나중에 업데이트를 단일 균일한 결과로 병합할 수 있습니다. 둘 이상의 노드에서 업데이트가 이루어지므로 게시자와 둘 이상의 구독자가 동일한 데이터를 업데이트했을 수 있습니다. 업데이트가 병합될 때 충돌이 발생할 수 있으며, 병합 복제는 충돌을 처리하기 위한 여러 가지 방법을 제공합니다.

병합 복제는 SQL Server 스냅샷 에이전트 및 병합 에이전트 의해 구현됩니다. 게시가 필터링되지 않거나 정적 필터를 사용하는 경우 스냅샷 에이전트가 단일 스냅샷을 만듭니다. 게시에서 매개 변수가 있는 필터를 사용하는 경우 스냅샷 에이전트가 데이터의 각 파티션에 대한 스냅샷을 만듭니다. 병합 에이전트 초기 스냅샷을 구독자에 적용합니다. 또한 초기 스냅샷이 만들어진 후 게시자 또는 구독자에서 발생한 증분 데이터 변경 내용을 병합하고 사용자가 구성한 규칙에 따라 충돌을 감지하고 해결합니다.

변경 내용을 추적하기 위해 병합 복제와 지연 업데이트 구독이 있는 트랜잭션 복제는 게시된 모든 테이블에 있는 모든 행을 고유하게 식별할 수 있어야 합니다. 이 병합 복제를 수행하려면 테이블에 속성 집합이 있는 데이터 형식 rowguid 열이 이미 없는 경우(이 열이 사용되는 경우) 모든 테이블에 열을 추가 ROWGUIDCOL 합니다. 게시에서 테이블이 삭제되면 rowguid 열은 제거됩니다. 그러나 기존 열이 추적 목적으로 사용된 경우에는 그 열은 제거되지 않습니다. 필터는 행 식별을 위해 복제에 사용된 rowguidcol 을 포함하지 않아야 합니다. newid() 함수는 열의 rowguid 기본값으로 제공되지만 고객은 필요한 경우 각 행에 대한 GUID를 제공할 수 있습니다. 그러나 값을 00000000-0000-0000-0000-000000000000제공하지 마세요.

다음 다이어그램에서는 병합 복제에 사용되는 구성 요소를 보여 줍니다.

병합 복제 구성 요소 및 데이터 흐름 다이어그램

TLS 1.3 암호화 구성

SQL Server 2025(17.x)에서는 다음을 포함하는 병합 복제에 대한 TDS 8.0 지원을 도입했습니다.

  • SQL Server 2025(17.x) 인스턴스와 SQL Server 2025(17.x) 및 Azure SQL Managed Instance 간에 TLS 1.3 암호화 를 사용하도록 복제 에이전트를 구성합니다.
  • 복제 토폴로지의 SQL Server 2025(17.x) 인스턴스 간 인스턴스 간 연결 서버 통신에 대한 기본 암호화입니다. SQL Server 2025(17.x)의 연결된 서버는 암호화를 기본값 Encrypt=Mandatory 으로 하는 OLE DB v19 드라이버를 사용합니다.

이 부분에서는