Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

새 기사 추가 및 기존 SQL Server 트랜잭션 복제 다시 초기화

이전 블로그에서 데이터베이스 백업을 사용하여 대규모 데이터베이스에 대한 복제를 초기화하는 방법에 대해 논의했습니다. 이제 새 기사를 추가하고 백업을 통해 구성된 기존 SQL Server 트랜잭션 복제를 다시 초기화하는 방법에 대해 논의하겠습니다.

소개

일반적으로 사용자는 스냅샷 에이전트를 사용하여 새 기사를 게시에 추가하거나 구독자를 다시 초기화하는 경향이 있지만 이 시나리오에서는 이미 데이터베이스 백업을 사용하여 트랜잭션 복제를 구성했습니다. 자세한 단계는 다음과 같습니다.

  1. 백업으로 초기화된 기존 발행물에 새 기사를 추가합니다.
  2. 이미 백업으로 초기화된 구독자를 다시 초기화합니다.

시나리오 1:새 기사를 추가하는 방법 백업으로 초기화된 기존 발행물:

이 시나리오에서는 다음과 같이 백업 파일을 사용하여 트랜잭션 복제가 이미 구성되어 있습니다.

-게시자 + 배포자 :Node1-구독자 :Node2-게시자 데이터베이스 :ABC_Pub-구독자 데이터베이스 :ABC_Sub-간행물 :ABC_Pub_Bkp-구독 :ABC_Sub_Bkp-기사 :자동차, 자전거

기존 발행물에 새 기사를 추가하는 것은 발행인과 구독자 간의 데이터(자세한 단계에서 논의할 것임)를 수동으로 동기화하여 수행할 수 있습니다.

프로세스 단계 개요:

  1. 인기 있는 가져오기/내보내기 방법을 사용하여 게시자에서 구독자로 새 기사에 대한 데이터를 동기화합니다.
  • 게시자 데이터베이스에 새 테이블을 추가하고 몇 개의 행을 삽입합니다.
  • 새 테이블에 대한 생성 정의를 스크립팅하고 구독자 데이터베이스에서 실행합니다.
  • export\import 방법을 사용하여 게시자와 구독자 간에 데이터를 동기화합니다.
<올 시작="2">
  • 로그 판독기 및 배포자 에이전트 작업을 중지합니다.
  • GUI를 사용하여 발행물에 새 기사를 추가하여 구성을 완료합니다.
  • 로그 판독기 및 배포자 에이전트 작업을 활성화하고 시작합니다.
  • 게시자에 대한 새 데이터를 삽입합니다.
  • 가입자 데이터를 확인합니다.
  • 1단계:다음을 사용하여 게시자에서 구독자로 새 기사에 대한 데이터 동기화 가져오기/내보내기 방법.

    기존 복제에는 두 개의 기사가 있으며 게시자 데이터베이스에 대해 두 개의 테이블을 더 만들고 나중에 복제에 추가할 것입니다.

    기존 복제에 대한 문서:

    게시자 데이터베이스에 두 개의 새 테이블을 만들고 각 테이블에 몇 개의 행을 추가했습니다. 이제 두 테이블에 대한 생성 정의를 스크립팅하고 구독자 데이터베이스에서 실행합니다.

    게시자 데이터베이스에 두 개의 새 테이블이 생성되었습니다.

    게시자의 정의를 사용하여 구독자에 대한 테이블 생성:

    이제 import\export 메서드를 사용하여 게시자와 구독자 간에 데이터를 동기화합니다.

    게시자 데이터베이스를 마우스 오른쪽 버튼으로 클릭 -> 데이터 내보내기 선택 -> 마법사를 따라 필요한 정보를 전달합니다.

    소스 서버(게시자) 및 데이터베이스 이름 선택:

    다음 단계에서 대상 서버(구독자) 및 데이터베이스 이름 선택:

    데이터를 전송할 테이블 이름을 선택하고 다음을 클릭합니다.

    다음 단계에서 내보내기가 성공했습니다.

    데이터 검증: 보시다시피 게시자와 구독자 간에 데이터가 동기화되었습니다.

    2. 로그 판독기 및 배포자 에이전트 작업 중지–

    기사로 작업을 수행하기 전에 복제 에이전트를 중지하는 것이 가장 좋습니다.

    3. GUI를 사용하여 발행물에 새 기사를 추가하여 구성을 완료하십시오.

    복제 폴더 아래의 발행물을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택 -> 기사 페이지로 이동 -> 목록에서 선택한 기사만 표시를 선택 취소합니다. -> 게시할 개체 아래에서 두 개의 새 기사를 선택합니다. 즉, 이 경우 국가 및 고객을 입력하고 확인을 클릭하여 구성을 완료합니다.

    4. 로그 판독기 및 배포자 에이전트 작업 활성화 및 시작 –

    에이전트가 활성화되고 시작되면 새로 추가된 레코드를 로그 판독기가 캡처한 다음 배포자 에이전트가 구독자에게 복제해야 합니다. 다음 단계에서 데이터가 검증됩니다.

    5. 게시자에 새 데이터를 삽입합니다.

    이제 두 게시자 테이블에 데이터를 추가하여 각 테이블에 5개의 레코드를 추가하겠습니다.

    6. 구독자의 데이터 확인:

    데이터 유효성 검사 후 이제 두 테이블에 5개의 새 레코드(총 10개 행 포함)가 추가된 것을 볼 수 있습니다. 동일한 내용이 구독자에게 복제되었습니다.

    복제 상태:

    시나리오 2:백업으로 이미 초기화된 구독자를 다시 초기화하는 방법

    구독자를 다시 초기화하여 복제와 동기화 문제를 해결할 수 있는 마지막 옵션이 남아 있는 경우가 있는 두 번째 시나리오로 이동합니다.

    우리의 경우 백업을 통해 복제를 초기화했으며 구독자를 다시 초기화하는 절차는 다음과 같습니다.

    1. 로그 판독기, 배포자 에이전트 및 배포자 정리 작업을 중지합니다.
    2. 게시자 데이터베이스에 대한 전체 백업을 수행하고 T-Log 백업 작업을 비활성화합니다.
    3. 교체로 구독자 데이터베이스의 데이터베이스를 복원합니다.
    4. 데이터를 검증합니다.
    5. sp_addsubscription 실행
    6. 로그 판독기 및 배포자 작업을 활성화하고 게시자 데이터베이스에 새 레코드를 삽입하고 구독자의 데이터를 확인합니다.

    1. 로그 판독기 및 배포자 에이전트 작업을 중지합니다.

    기사로 작업을 수행하기 전에 복제 에이전트를 중지하는 것이 가장 좋습니다.

    2. 게시자 데이터베이스에 대한 전체 백업을 수행하고 T-Log 백업 작업을 비활성화합니다.

    게시자 서버의 ABC_Pub 데이터베이스에 대한 전체 백업을 트리거하고 T-Log 백업 작업이 있는 경우 비활성화합니다.

    3. replace 및 norecovery를 사용하여 구독자 데이터베이스의 데이터베이스 복원

    대체로 구독자 데이터베이스 ABC_Sub 복원:

    4. 게시자와 구독자 데이터베이스 간의 데이터를 확인합니다.

    데이터가 검증되었으며 다음 스냅샷과 같이 Cars and Bikes 테이블에는 각각 5개의 레코드가 있고 Country 및 customer 테이블에는 각각 10개의 레코드가 있습니다.

    5. sp_addsubscription 실행:

    이제 구독자를 다시 초기화하는 데 필요한 매개변수를 사용하여 다음 저장 프로시저를 실행합니다.

    6. 로그 판독기, 배포자 에이전트 및 정리 작업을 활성화합니다. 게시자 데이터베이스에 새 레코드를 삽입하고 구독자의 데이터를 확인합니다.

    복제 에이전트 작업 활성화 및 시작:

    다음 두 개의 복제된 테이블에 추가로 5개의 레코드를 삽입합니다.

    지금 구독자 데이터베이스에서 데이터 검증:

    이제 유효성 검사가 완료되었으며 새로 추가된 5개의 레코드가 구독자로 대체되었으며 모든 테이블에는 이제 각각 10개의 레코드가 있습니다.

    복제 상태 확인:

    결론

    위에서 설명한 두 가지 시나리오가 새 기사를 추가하고 백업을 통해 이미 초기화된 구독자를 다시 초기화하는 데 유용하기를 바랍니다.

    피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.