다음을 통해 공유


자습서: 두 개의 완전히 연결된 서버 간 복제 구성(트랜잭션)

적용 대상: SQL Server

트랜잭션 복제는 지속적으로 연결되는 서버 간에 데이터를 이동할 때 발생하는 문제를 해결하는 좋은 방법입니다. 복제 마법사를 사용하여 복제 토폴로지 구성 및 관리를 쉽게 수행할 수 있습니다.

이 자습서에서는 지속적으로 연결되는 서버에 대한 트랜잭션 복제 토폴로지를 구성하는 방법을 보여 줍니다. 트랜잭션 복제의 작동 방식에 대한 자세한 내용은 트랜잭션 복제 개요를 참조하세요.

학습할 내용

이 자습서에서는 트랜잭션 복제를 사용하여 한 데이터베이스에서 다른 데이터베이스로 데이터를 게시하는 방법을 설명합니다.

이 자습서에서는 다음을 수행하는 방법을 배우게 됩니다.

  • 트랜잭션 복제를 통해 게시자를 만듭니다.
  • 트랜잭션 게시에 구독을 만듭니다.
  • 구독의 유효성을 검사하고 대기 시간을 측정합니다.

필수 조건

이 자습서는 기본적인 데이터베이스 작업에는 익숙하지만 복제에 대한 경험은 풍부하지 않은 사용자를 위한 것입니다. 이 자습서를 시작하기 전에 자습서: 복제용 SQL 서버 준비를 완료해야 합니다.

이 자습서를 완료하려면 SQL Server, SSMS(SQL Server Management Studio), 및 AdventureWorks 데이터베이스가 필요합니다.

  • 게시자 서버(원본)에서 다음을 설치합니다.

    • SQL Server Express 또는 SQL Server Compact를 제외한 모든 SQL Server 버전 이들 버전은 복제 게시자가 될 수 없습니다.
    • AdventureWorks2022 샘플 데이터베이스 보안을 강화하기 위해 샘플 데이터베이스는 기본적으로 설치되지 않습니다.
  • 구독자 서버(대상)에서 SQL Server Compact를 제외한 모든 버전의 SQL Server를 설치합니다. SQL Server Compact는 트랜잭션 복제에서 구독자가 될 수 없습니다.

  • SQL Server Management Studio를 설치합니다.

  • SQL Server 2017 Developer 버전을 설치합니다.

  • AdventureWorks 샘플 데이터베이스를 다운로드합니다. SSMS에서 데이터베이스를 복원하는 방법에 대한 지침은 데이터베이스 복원을 참조하세요.

참고 항목

두 개 이상의 버전이 떨어져 있는 SQL Server 인스턴스에서는 복제가 지원되지 않습니다.

SQL Server Management Studio에서는 sysadmin 고정 서버 역할의 멤버인 로그인을 사용하여 게시자 및 구독자에 연결해야 합니다. 이 역할에 대한 자세한 내용은 서버 수준 역할을 참조하세요.

이 자습서에 소요되는 예상 시간: 60분

트랜잭션 복제를 위한 게시자 구성

이 섹션에서는 SQL Server Management Studio를 통해 AdventureWorks2022 샘플 데이터베이스에 Product 테이블의 필터링된 하위 집합을 게시하여 트랜잭션 게시를 만듭니다. 또한 배포 에이전트에 사용된 SQL Server 로그인을 PAL(게시 액세스 목록)에 추가합니다.

게시 만들기 및 문서 정의

  1. SQL Server Management Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.

  2. SQL Server 에이전트를 마우스 오른쪽 단추로 클릭한 다음, 시작을 선택합니다. SQL Server 에이전트는 게시를 만들기 전에 실행되어야 합니다. 이 단계에서 에이전트를 시작하지 않으면 SQL Server 구성 관리자에서 수동으로 시작해야 합니다.

  3. 복제 폴더를 확장하고 로컬 게시 폴더를 마우스 오른쪽 단추로 클릭한 후 새 게시를 선택합니다. 이 단계에서는 새 게시 마법사를 시작합니다.

    새 게시 마법사를 시작하기 위한 선택 항목

  4. 게시 데이터베이스 페이지에서 AdventureWorks2022를 선택한 후, 다음을 선택합니다.

  5. 게시 유형 페이지에서 트랜잭션 게시를 선택한 후 다음을 선택합니다.

    게시 유형이 선택된

  6. 문서 페이지에서 테이블 노드를 확장하고 제품 확인란을 선택합니다. 그런 다음 제품을 확장하고 ListPriceStandardCost 옆에 있는 확인란의 선택을 취소합니다. 다음을 선택합니다.

    게시할 선택한 문서가 있는

  7. 테이블 행 필터링 페이지에서 추가를 선택합니다.

  8. 필터 추가 대화 상자에서 SafetyStockLevel 열을 선택합니다. 오른쪽 화살표를 선택하여 필터 쿼리의 필터 문 WHERE 절에 열을 추가합니다. 그런 다음 다음과 같이 WHERE 절 한정자를 수동으로 입력합니다.

    WHERE [SafetyStockLevel] < 500  
    

  9. 확인을 선택하고 다음을 선택합니다.

  10. 즉시 스냅샷을 만들고 구독 초기화에 사용할 수 있도록 스냅샷 유지 확인란을 선택하고 다음을 선택합니다.

    확인란이 선택된

  11. 에이전트 보안 페이지에서 스냅샷 에이전트의 보안 설정 사용 확인란을 선택 취소합니다.

    스냅샷 에이전트에 대한 보안 설정을 선택합니다. 프로세스 계정 상자에 <Publisher_Machine_Name>\repl_snapshot을 입력하고 이 계정의 암호를 입력한 후 확인을 선택합니다.

  12. 이전 단계를 반복하여 <Publisher_Machine_Name>\repl_logreader를 로그 판독기 에이전트의 프로세스 계정으로 설정합니다. 그런 다음 확인을 선택합니다.

  13. 마법사 완료 페이지에서 게시 이름 상자에 AdvWorksProductTrans를 입력하고 종료를 선택합니다.

    게시 이름이 있는

  14. 게시를 만든 후 닫기 를 선택하여 마법사를 완료합니다.

게시를 만들려고 할 때 SQL Server 에이전트 실행되고 있지 않으면 다음 오류가 발생할 수 있습니다. 이 오류는 게시가 성공적으로 만들어졌지만 스냅샷 에이전트를 시작하지 못했음을 나타냅니다. 이 경우 SQL Server 에이전트를 시작한 다음 스냅샷 에이전트를 수동으로 시작해야 합니다. 다음 섹션에서는 지침을 제공합니다.

스냅샷 에이전트가 시작하지 못했다는 경고

스냅샷 생성 상태 보기

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans를 마우스 오른쪽 단추로 클릭한 다음 스냅샷 에이전트 상태 보기를 선택합니다.
    스냅샷 에이전트 상태 보기를 위한 바로 가기 메뉴의 명령

  3. 게시에 대한 스냅샷 에이전트 작업의 현재 상태가 나타납니다. 다음 섹션을 진행하기 전에 스냅샷 작업이 성공했는지 확인합니다.

게시를 만들 때 SQL Server 에이전트가 실행되고 있지 않은 경우, 게시의 스냅샷 에이전트 상태를 확인하면 스냅샷 에이전트가 실행되지 않음으로 표시됩니다. 이 경우 시작을 선택하여 스냅샷 에이전트를 시작합니다.

스냅샷 에이전트가 실행되었음을 보여주는

여기서 오류가 표시되면 스냅샷 에이전트 오류 해결을 참조하세요.

PAL에 배포 에이전트 로그인 추가

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 게시 속성 대화 상자가 나타납니다.

    a. 게시 액세스 목록 페이지를 선택하고 추가를 선택합니다.
    b. 게시 액세스 추가 대화 상자에서 <Publisher_Machine_Name>\repl_distribution을 선택하고 확인을 선택합니다.

    로그인을 게시 액세스 목록에 추가하기 위한 선택 항목

자세한 내용은 복제 프로그래밍 개념을 참조하세요.

트랜잭션 게시에 구독 만들기

이 섹션에서는 이전에 만든 게시에 구독자를 추가합니다. 이 자습서에서는 원격 구독자(NODE2\SQL2016)를 사용하지만 게시자에 로컬로 구독을 추가할 수도 있습니다.

구독 만들기

  1. SQL Server Management Studio에서 게시자에 연결하고 해당 서버 노드를 확장한 후 복제 폴더를 확장합니다.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans 게시를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 선택합니다. 새 구독 마법사가 시작합니다.

    새 구독 마법사를 시작하기 위한 선택 영역

  3. 게시 페이지에서 AdvWorksProductTrans를 선택한 후, 다음을 선택합니다.

    선택된 게시가 있는

  4. 배포 에이전트 위치 페이지에서 배포자에서 모든 에이전트 실행을 선택하고 다음을 선택합니다. 끌어오기 및 밀어넣기 구독에 대한 자세한 내용은 게시 구독을 참조하세요.

    배포자에서 모든 에이전트를 실행하도록 옵션이 선택된

  5. 구독자 페이지에서 구독자 인스턴스 이름이 표시되지 않는 경우 구독자 추가를 선택한 다음, 드롭다운 목록에서 SQL Server 구독자 추가를 선택합니다. 이 단계에서는 서버에 연결 대화 상자가 열립니다. 구독자 인스턴스 이름을 입력한 후 연결을 선택합니다.

    구독자가 추가된 후 구독자의 인스턴스 이름 옆에 있는 확인란을 선택합니다. 그런 다음, 구독 데이터베이스에서 새 데이터베이스를 선택합니다.

    구독자 서버를 추가하기 위한 선택 영역이 있는

  6. 새 데이터베이스 대화 상자가 나타납니다. 데이터베이스 이름 상자에 ProductReplica를 입력하고 확인을 선택한 후 다음을 선택합니다.

    구독 데이터베이스에 대한 이름 입력

  7. 배포 에이전트 보안 페이지에서 줄임표(...) 버튼을 선택합니다. 프로세스 계정 상자에 <Publisher_Machine_Name>\repl_distribution을 입력하고 이 계정의 비밀번호를 입력한 후 확인을 선택하고 다음을 선택합니다.

  8. 종료를 선택하여 나머지 페이지의 기본값을 적용하고 마법사를 완료합니다.

구독자에서 데이터베이스 사용 권한 설정

  1. SQL Server Management Studio에서 구독자에 연결합니다. 보안을 확장하고 로그인을 마우스 오른쪽 단추로 클릭한 후 새 로그인을 선택합니다.

    a. 일반 페이지의 로그인 이름에서 검색을 선택하고 <Subscriber_Machine_Name>\repl_distribution에 대한 로그인을 추가합니다.

    b. 사용자 매핑 페이지에서 ProductReplica 데이터베이스에 대한 로그인 db_owner 멤버 자격을 부여합니다.

    구독자에서 로그인을 구성하기 위한 선택 영역

  2. 확인을 선택하여 새 로그인 대화 상자를 닫습니다.

구독의 동기화 상태 보기

  1. SQL Server Management Studio에서 게시자에 연결합니다. 서버 노드를 확장한 다음, 복제 폴더를 확장합니다.

  2. 로컬 게시 폴더에서 AdvWorksProductTrans 게시를 확장하고 ProductReplica 데이터베이스에서 구독을 마우스 오른쪽 단추로 클릭한 다음 동기화 상태 보기를 선택합니다. 구독의 현재 동기화 상태가 표시됩니다.

  3. AdvWorksProductTrans 아래에 구독이 표시되지 않는 경우 F5 키를 선택하여 목록을 새로 고칩니다.

자세한 내용은 다음을 참조하세요.

복제 대기 시간 측정

이 섹션에서는 추적 프로그램 토큰을 사용하여 변경 내용이 구독자에 복제되고 있는지 확인하고 대기 시간을 확인합니다. 대기 시간은 게시자에서 변경한 내용이 구독자에게 표시되는 데 걸리는 시간입니다.

  1. SQL Server Management Studio에서 게시자에 연결합니다. 서버 노드를 확장하고 복제 폴더를 마우스 오른쪽 단추로 클릭한 후 복제 모니터 시작을 선택합니다.

    바로 가기 메뉴의

  2. 왼쪽 창에서 게시자 그룹을 확장하고 게시자 인스턴스를 확장한 후 AdvWorksProductTrans 게시를 선택합니다.

    a. 추적 프로그램 토큰 탭을 선택합니다.
    b. 추적 프로그램 삽입을 선택합니다.
    c. 게시자에서 배포자로 연결 시 대기 시간, 배포자에서 구독자로 연결 시 대기 시간, 총 대기 시간열에서 추적 프로그램 토큰에 대한 경과 시간을 확인합니다. 보류 중 값은 토큰이 지정된 지점에 도달하지 않았음을 나타냅니다.

    추적 프로그램 토큰에 대한 정보

자세한 내용은 다음을 참조하세요.

다음 단계

트랜잭션 복제를 위해 게시자와 구독자를 모두 성공적으로 구성했습니다. 이제 게시자의 제품 테이블에서 데이터를 삽입, 업데이트 또는 삭제할 수 있습니다. 그런 다음, 구독자에서 제품 테이블을 쿼리하여 복제된 변경 내용을 볼 수 있습니다.

다음 문서에서는 병합 복제를 구성하는 방법을 설명합니다.