문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ /

복제본 세트의 구성원 동기화

이 페이지의 내용

  • 절차

복제 프로세스가 너무 늦어져 복제본 세트 멤버아 아직 복제하지 못한 oplog를 프라이머리가 덮어쓰면 복제본 세트 멤버는 '부실' 상태가 됩니다. 멤버는 이를 따라잡을 수 없고 '부실' 상태가 됩니다. 이 경우 해당 멤버의 데이터를 제거하고 초기 동기화를 수행하여 멤버를 완전히 다시 동기화해야 합니다.

이 튜토리얼에서는 부실 멤버를 다시 동기화하는 방법과 다른 멤버의 시드 데이터를 사용하여 새 멤버를 만드는 방법을 모두 설명하며, 이 두 가지 방법 모두 복제본 세트 멤버를 복원하는 데 사용할 수 있습니다. 멤버를 동기화할 때 시스템이 데이터를 대량으로 이동할 수 있는 대역폭을 보유한 시간을 선택합니다. 사용량이 적은 시간이나 유지 관리 기간 동안 동기화를 예약합니다.

MongoDB는 초기 동기화를 수행하기 위한 두 가지 방법을 제공합니다.

참고

쓰기 쿼럼 변경을 방지하려면 한 번에 두 개 이상의 복제본 세트 멤버를 교체하지 마세요.

경고

초기 동기화 과정에서 mongoddbPath 디렉토리의 콘텐츠를 제거합니다.

이 절차는 MongoDB의 일반 프로세스를 이용하여 복제본 세트 동기화를 진행합니다. 멤버의 현재 데이터를 저장합니다. MongoDB 초기 동기화 프로세스에 대한 개요는 복제본 세트 동기화 섹션에서 확인 가능합니다.

초기 동기화 작업은 세트의 다른 멤버에 영향을 미치고 프라이머리에 추가 트래픽을 생성할 수 있습니다. 동기화 멤버에는 해당 세트에서 액세스 가능한 최신 상태인 다른 멤버가 필요합니다.

인스턴스에 데이터가 없는 경우 복제본 세트에 멤버 추가 또는 복제본 세트 멤버 변경 절차에 따라 복제본 세트에 새 멤버를 추가할 수 있습니다.

dbPath 디렉토리의 콘텐츠 없이 인스턴스를 다시 시작하여 이미 세트 멤버인 mongod이 초기 동기화를 수행하도록 강제할 수도 있습니다:

  1. 멤버의 인스턴스를 mongod 중지합니다. 정상적으로 종료하려면 db.shutdownServer() mongosh 의 메서드 또는 Linux 시스템의 경우 mongod --shutdown 옵션을 사용합니다.

  2. (선택 사항) 멤버의 dbPath 디렉토리에서 모든 데이터와 하위 디렉토리의 백업을 생성합니다. 전체 백업이 필요하지 않은 경우에는 diagnostic.data 디렉토리만 백업하여 문제 발생 시 유용한 문제 해결 데이터를 보존하는 것이 좋습니다. 자세한 내용은 풀타임 진단 데이터 캡처에서 확인할 수 있습니다.

  3. 멤버의 dbPath 디렉토리에서 모든 데이터 및 하위 디렉토리를 삭제합니다.

  4. mongod 프로세스를 다시 시작합니다.

이 시점에서 mongod은 초기 동기화를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스 크기와 복제본 세트 멤버 간 네트워크 지연 시간에 따라 달라집니다.

이 방식은 복제본 세트 기존 멤버의 데이터 파일을 이용하여 신규 또는 부실 멤버를 '시딩'합니다. 새 멤버가 oplog를 따라잡을 수 있도록 데이터 파일이 충분히 최신 상태여야 합니다. 그렇지 않으면 멤버가 초기 동기화를 수행해야 합니다.

데이터 파일을 스냅샷이나 직접 복사본으로 캡처할 수 있습니다. 그러나 대부분의 경우 파일 복사 작업 중 데이터 파일이 변경되므로 실행 중인 mongod 인스턴스에서 다른 인스턴스로 데이터 파일을 복사할 수 없습니다.

중요

데이터 파일을 복사하는 경우 복사본에 local 데이터베이스의 콘텐츠가 포함되어 있는지 확인합니다.

데이터 파일에 백업을 mongodump 사용할 없으며 스냅샷 백업만 가능합니다 . 실행 중인 인스턴스의 일관된 스냅샷을 mongod 캡처하는 방법은 MongoDB 백업 방법 설명서를 참조하세요.

"seed" 소스에서 데이터 파일을 복사한 후, mongod 인스턴스를 새 members[n]._id로 시작하고 복제본 세트의 현재 상태를 반영할 때까지 oplog의 모든 작업을 적용하도록 허용합니다. 복제본 세트의 현재 상태를 확인하려면 rs.printSecondaryReplicationInfo() 또는 rs.status()를 사용합니다.

← 멤버를 기본 멤버로 강제 설정

이 페이지의 내용