프로그래밍/DB

[DB] MSSQL DB트랜잭션 복제방법

ss-pro 2020. 10. 26. 23:52
반응형

데이터베이스 복제방법에 대하여 알아보도록 하겠습니다. 복제방법에는 크게 스냅샷 복제, 병합복제, 트랜잭션복제가 있습니다.  MSDN의 복제유형자료를 보면 다음과 같습니다. 이외에도 피어투피어, 양방향 복제도 있습니다. 

실시간으로 복제가 이루어지는 트랜잭션 복제하는 방법에 대하여 살펴보도록 하겠습니다.  먼저 DB인스턴스명으로 로그인을 합니다. 

복제시 주의사항 
1. 기본키가 설정되어있는 테이블이어여합니다. 
2. 서버연결시 인스턴스명으로 연결이 되어야합니다. 

복제설정방법
1. 배포구성 
복제 -> 배포구성을 선택합니다. 복제를 하기위해서는 먼저 배포자를 구성해야합니다. 

스냅샷폴더를 지정합니다. 트랙잭션복제시 구독자가 스냅샷을 먼저 실행후 처리하도록 설정하기위해 스냅숏 폴더를 지정합니다. SQL기본폴더인 RelpData폴더를 사용하도록 하겠습니다.


2. 게시설정
게시자를 설정합니다. 게시자의 경우 복제하고자 하는 원본 데이터베이스에 대하여 설정을 합니다. 복제->게시->새 게시항목을 클릭합니다. 

데이터베이스와  게시유형을 선택합니다. 게시유형은 트랜잭션 게시로 선택후 진행합니다.

복제하고하자 하는 테이블을 선택합니다. 이때 기본키가 설정되어 있지 않는 테이블은 복제를 할수 없습니다. 복제시에 조건을 걸수도 있는데 해당부분을 설정하려며면 테이블 행 필더 항목의 추가버튼을 클릭후 쿼리문을 입력하면됩니다. 

보안설정은 SQL에이전트 설정으로 진행하도록 하겠습니다. 게시자 연결설정은 sa계정으로 진행하겠습니다. 

게시자가 완료되면 아래와 같이 복제 메뉴에 로컬게시항목에 게시자가 설정된것을 확인할수 있습니다.


3. 구독설정
구독자를 설정해보겠습니다. 복제-> 로컬구독 -> 새 구독을 클립합니다.

게시자를 선택합니다. 게시자는 2게시설정에 설정한 서버명을 선택합니다. 배포에이전트 위치 에이전트 위치는 배포자에서 모든관리를 할수 있도록 배포자 에서 모든에이전트 실행으로 선택후 진행하도록 하겠습니다.

구독자의 서버명 및 구독 데이터베이스를 선택합니다. 

구독 초기화 옵션은 초기화시기를 즉시로 선택하여 진행하겠습니다. 

이제 로컬 구독항목을로 가보면 구독자가 생성된것을 확인할수 있습니다. 실제로 복제가 잘되는지를 확인해보려면 동기화 상태보기를 선택하여 아래와 같은 이미지가 나타나며 원본테이터베이스에서 트랜잭션 작업이 일어날경우 아래와 같이 복제되는 부분을 확인할수 있습니다. 


DB포트가 기본포트1433을 사용할경우에는 로컬에서의 복제, 로컬,원격지의 DB복제가 정상적으로 동작하는것을 확인하였습니다. 기본포트번호가 1433이 아닌경우에는 어떤이유인지는 모르겠으나 복제시 연결장애가 발생하여 연결이 되지 않습니다. 별칭으로 해결될수도 있을것같아 임의로 설정하여 해보았으나 여전히 연결이 되지 않습니다. 아마도 방법이 있을것 같은데 몇번 시도 해봤는데 잘되지 않네요. 해당부분에 해결책을 아신는 분이 있으시면 댓글 남겨주시기 바랍니다. 

참고) 
docs.microsoft.com/ko-kr/sql/relational-databases/replication/types-of-replication?view=sql-server-ver15