현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

Step by Step: SQL Server 트랜잭션 복제 구성 방법

소개
SQL Server 트랜잭션 복제(Replication)를 통해 한 데이터베이스에서 다른 데이터베이스로 데이터와 데이터베이스 개체를 거의 실시간으로 동기화할 수 있습니다. 이 문서에서는 SQL Server 2008 Management Studio에서 트랜잭션 복제를 구성하는 방법에 대해 설명합니다.

용어 설명

  • 게시자 (Publisher)
    복제를 통해 데이터를 다른 위치에서 사용할 수 있도록 만드는 원본 데이터베이스 인스턴스입니다.
  • 배포자 (Distributor)
    게시자로부터 전달된 데이터에 대한 저장소 역할을 하는 데이터베이스 인스턴스이며 이를 각 구독자에 배포하는 역할을 담당합니다.
  • 구독자 (Subscriber)
    복제된 데이터를 수신하는 대상 데이터베이스 인스턴스입니다.
  • 게시 (Publication)
    구독자로 복제되는 기본 단위입니다. 하나의 게시내에 여러 개의 아티클을 가질 수 있습니다. 즉, 여러 아티클을 게시로 그룹화하면 논리적으로 관련된 데이터베이스 개체 집합 및 단위로 복제된 데이터를 쉽게 지정할 수 있습니다.
  • 아티클 (Article)
    게시에 포함된 데이터베이스 개체(테이블, 뷰, 저장 프로시저, ..)를 의미합니다.
  • 구독 (Subscription)
    게시자에서 생성된 게시를 구독자에 전달해 줄 것을 요청하는 것입니다.

    위 용어들에 대한 이해를 돕기 위해 복제를 아래와 같이 잡지의 개념에 비유할 수 있습니다.
    • 잡지사(게시자)에서는 하나 이상의 출판물(게시)을 생산합니다.
    • 출판물(게시)에는 기사(아티클)가 있습니다.
    • 잡지사(게시자)에서는 잡지를 직접 배포하거나 배급업자(배포자)를 사용합니다.
    • 구독자는 각자가 구독하는 출판물(게시)을 받아 봅니다.

테스트 환경
이 문서에서는 동일 서버에서 SQL Server 트랜잭션 복제를 구성하는 절차를 설명드립니다.

  • 게시자 데이터베이스: replpub
  • 구독자 데이터베이스: replsub
  • 아티클: test

즉, replpub 데이터베이스에 존재하는 test 테이블을 replsub 데이터베이스로 복제해 데이터를 동기화하게 됩니다.
배포 구성
  1. Management Studio의 [복제] 메뉴에서 마우스 오른쪽 버튼을 클릭 후 [배포 구성(C)…] 을 선택합니다.




  2. 배포 구성 마법사에서 배포자가 위치할 서버를 지정해 줍니다.



  3. 다음으로 스냅숏 폴더를 지정하게 됩니다. 이는 최초 게시자 데이터를 구독자에 초기화하기 위한 스냅숏 데이터가 위치하는 폴더를 지정하는 단계입니다. 기본적으로 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\ReplData 폴더가 지정됩니다.



  4. 다음으로 배포 데이터베이스 이름 및 데이터베이스 파일 위치를 지정하는 단계입니다. 배포 데이터베이스는 게시자로부터 전달된 데이터를 저장하는 보관소 역할을 하게 됩니다.



  5. 다음으로 게시자 서버를 지정하는 단계입니다. 기본적으로 현재의 서버가 게시자로 체크되어 있습니다.



  6. 만일 다른 게시자를 추가하고자 한다면 [추가] 버튼을 눌러 SQL Server 및 Oracle Server를 게시자로 추가할 수 있습니다.
    Oracle 게시와 관련 MSDN 문서를 참조하시길 바랍니다. [마침]을 눌러 배포자가 정상적으로 구성된 것을 확인합니다.



  7. 배포자가 정상적으로 구성되면 아래와 같이 Distribution 시스템 데이터베이스가 생성됩니다.


게시 생성
  1. 배포자가 정상적으로 구성되면 이제 게시자에서 다른 서버로 복제하고자 하는 개체 집합(게시)를 생성할 수 있습니다.
    Management Studio의 [복제] > [로컬 게시]에서 마우스 오른쪽 버튼을 클릭 후 [새 게시(P)…]를 선택합니다.




  2. 복제에 사용될 원본 데이터 또는 개체가 있는 데이터베이스를 선택합니다. 본 테스트에서는 replpub 데이터베이스를 게시 데이터베이스로 사용하게 됩니다.



  3. 게시 유형을 선택합니다. 본 테스트에서는 SQL Server에서 가장 많이 사용되는 트랜잭션 게시를 사용할 것입니다.



    각 게시 유형에 대한 설명은 MSDN 문서를 참조하시길 바랍니다.

  4. 복제하고자 하는 개체(테이블, 뷰, 저장 프로시저,..)를 선택합니다. 본 테스트에서는 TEST 테이블을 다른 데이터베이스로 복제하게 됩니다.



  5. 테이블 데이터를 복제할 때 필터를 적용해 일부 데이터만을 전달할 수 있습니다.



  6. 필터를 추가하고자 한다면 아래 필터 추가 창의 필터 문(F): 부분의 쿼리에 WHERE 조건을 지정해 주시면 됩니다. 본 테스트에서는 필터를 주지 않고 모든 테이블 데이터를 복제합니다.



  7. 스냅숏 에이전트는 게시에 포함된 개체들에 대한 스키마 및 데이터에 대한 스냅숏을 받는 스케줄 작업입니다. 최초 복제를 구성하려면 현재의 게시 데이터를 구독자로 초기화해 줄 필요가 있습니다. 본 테스트에서는 게시를 생성한 다음 수동으로 스냅숏을 만들도록 하겠습니다.



  8. 다음 단계는 트랜잭션 복제의 주요 에이전트 작업에 대한 실행 계정을 지정해 주는 단계입니다.



  9. 로그 판독기 에이전트는 게시자 데이터베이스의 변경내용을 읽어 이를 배포 데이터베이스에 저장하는 역할을 담당합니다. 따라서, 로그 판독기 에이전트 시작계정은 게시자 및 배포자 서버로의 연결 권한이 있어야 합니다.



  10. 이후 단계를 진행해 게시가 정상적으로 생성됨을 확인합니다.



  11. 생성된 게시는 Management Studio의 [복제] > [로컬 게시]에서 확인하실 수 있습니다.




구독 추가
  1. 이제 위 단계에서 생성된 게시에 대한 동기화를 원하는 서버에 대해 구독을 추가해 주는 단계입니다. 위 단계에서 생성된 게시에 대해 오른쪽 마우스를 클릭한 후 [새 구독(S)…]를 선택합니다.




  2. 새 구독 마법사 창이 뜨면 먼저 구독을 신청할 게시를 선택하고 [다음]을 클릭합니다.



  3. 구독 유형(밀어넣기/끌어오기)을 선택합니다.



  4. 배포 에이전트는 게시자로부터 전달되어 배포 데이터베이스에 저장된 데이터를 각 구독자로 배포하는 역할을 담당합니다. 위 단계는 배포 에이전트를 배포자 서버에 둘 것인지 (밀어넣기 구독) 아니면 각 구독자 서버에 둘 것인지 (끌어오기 구독)을 지정하는 단계입니다.

    각 유형에 관련 MSDN문서를 참조 하시길 바랍니다.

    구독자 및 구독자 데이터베이스를 지정합니다. 한 게시에 대해 여러 구독자를 지정할 수 있습니다.



  5. 배포 에이전트에 대한 실행 계정을 지정합니다.



  6. 앞서 설명 드린 것처럼 배포 에이전트는 배포자 서버의 배포 데이터베이스 데이터를 각 구독자에 전달하게 됩니다. 따라서, 배포 에이전트 시작 계정이 배포자/구독자로 연결 권한이 없을 경우 별도의 계정을 지정해 주셔야 합니다.



  7. 동기화 일정을 지정하는 단계로 [계속 실행]을 선택할 경우 게시자의 변경 내용이 바로 구독자로 반영될 수 있습니다.



  8. 다음으로 게시자의 초기 데이터를 구독자에 초기화하는 시점을 선택합니다.



  9. 첫 번째 동기화 시는 배포 에이전트가 최초 구독자로 데이터를 복제하는 시점을 의미합니다.
    즉시는 바로 스냅숏을 생성해 이를 구독자에 반영함을 의미합니다. 이후 단계를 진행해 구독이 정상 생성됨을 확인합니다.



  10. 게시에 대한 초기 스냅숏을 생성해 주시려면 해당 게시에 대해 오른쪽 마우스를 클릭한 후 [스냅숏 에이전트 상태 보기(E)]를 선택합니다.






  11. 아직 스냅숏 에이전트를 실행한 적이 없으므로 [시작] 버튼을 눌러 초기 스냅숏을 생성해 줍니다.



구독자로의 데이터 동기화
  1. 초기 스냅숏이 생성되면 이는 각 구독자로 반영됩니다. 구독자로의 데이터 동기화 상태는 Management Studio의 복제 모니터에서 확인 하실 수 있습니다.



  2. 아래 복제 모니터 창에서 각 구독자로의 데이터 동기화 상태 및 구독자로 동기화하는데 얼마나 시간이 걸리는지 확인이 가능합니다.



  3. 특정 구독을 두 번 클릭하면 보다 상세한 정보를 얻으실 수 있습니다.



  4. 즉, 위 창에서 구독자로 초기 스냅숏이 적용된 것을 확인할 수 있습니다.
    이 시점에 게시자/구독자 테이블을 조회해 보면 다음과 같이 두 테이블이 동기화 된 것을 확인할 수 있습니다.

    -- 게시자 테이블select * from replpub.dbo.test/*id          name----------- ---------------1           Scott2           Evan3           Jason4           Eric5           Steve*/-- 구독자 테이블select * from replsub.dbo.test/*id          name----------- ---------------1           Scott2           Evan3           Jason4           Eric5           Steve*/
    또한, 게시자 테이블에 변경이 일어날 경우 일정 시간이 지나면 구독자로 동기화 됩니다.

    -- 게시자 테이블 변경update replpub.dbo.test set name = 'Bill' where id = 5-- 게시자 테이블select * from replpub.dbo.test/*id          name----------- ---------------1           Scott2           Evan3           Jason4           Eric5           Bill*/-- 구독자 테이블select * from replsub.dbo.test/*id          name----------- ---------------1           Scott2           Evan3           Jason4           Eric5           Bill*/
의견 보내기
의견 보내기
Microsoft 고객지원 사이트에서는 고객님의 소리를 귀담아 듣습니다. 아래 의견 보내기로 소중한 의견 보내주시기 바랍니다.

속성

문서 ID: 2275657 - 마지막 검토: 05/23/2014 08:52:00 - 수정: 1.3

Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition

  • kbstepbystep kbhowto KB2275657
피드백
;did=1&t=">cript>");