자체 관리형 복제본 세트의 구성원 재동기화
이 페이지의 내용
복제 프로세스가 너무 늦어져 복제본 세트 멤버가 아직 복제하지 못한 oplog를 프라이머리가 덮어쓰면 복제본 세트 멤버는 '부실' 상태가 됩니다. 멤버는 이를 따라잡을 수 없고 '부실' 상태가 됩니다. 이 경우 해당 멤버의 데이터를 제거하고 초기 동기화를 수행하여 멤버를 완전히 다시 동기화해야 합니다.
이 튜토리얼에서는 부실 멤버를 다시 동기화하는 방법과 다른 멤버의 시드 데이터를 사용하여 새 멤버를 만드는 방법을 모두 설명하며, 이 두 가지 방법 모두 복제본 세트 멤버를 복원하는 데 사용할 수 있습니다. 멤버를 동기화할 때 시스템이 데이터를 대량으로 이동할 수 있는 대역폭을 보유한 시간을 선택합니다. 사용량이 적은 시간이나 유지 관리 기간 동안 동기화를 예약합니다.
MongoDB는 초기 동기화를 수행하기 위한 두 가지 방법을 제공합니다.
빈 데이터 디렉토리로
mongod
을 다시 시작하고 MongoDB의 일반적인 초기 동기화 기능으로 데이터를 복원합니다. 이 방법은 간단하지만 데이터를 교체하는 시간이 더 오래 걸릴 수 있습니다.멤버 자동 동기화에서 관련 내용을 확인할 수 있습니다.
복제본 세트의 다른 멤버가 최근 데이터 디렉토리 복제본을 사용하여 머신을 재시작합니다. 이 절차는 데이터를 빠르게 교체할 수 있지만 수작업 단계가 더욱 많이 필요합니다.
다른 멤버의 데이터 파일을 복사하여 동기화에서 관련 내용을 확인할 수 있습니다.
절차
참고
쓰기 쿼럼 변경을 방지하려면 한 번에 두 개 이상의 복제본 세트 멤버를 교체하지 마세요.
멤버 자동 동기화
이 절차는 MongoDB의 일반 프로세스를 이용하여 복제본 세트 동기화를 진행합니다. 멤버의 현재 데이터를 저장합니다. MongoDB 초기 동기화 프로세스에 대한 개요는 복제본 세트 동기화 섹션에서 확인 가능합니다.
초기 동기화 작업은 설정하다 의 다른 멤버에게 영향 소스 멤버에 추가 트래픽을 생성할 수 있습니다. 동기화 멤버에는 액세스할 수 있고 최신 상태인 다른 설정하다 멤버가 필요합니다.
인스턴스에 데이터가 없는 경우 자체 관리 복제본 세트에 멤버 추가 또는 자체 관리 복제본 세트 멤버 교체 절차에 따라 복제본 세트에 새 멤버를 추가할 수 있습니다.
dbPath
디렉토리의 콘텐츠 없이 인스턴스를 다시 시작하여 이미 세트 멤버인 mongod
이 초기 동기화를 수행하도록 강제할 수도 있습니다:
멤버의
mongod
인스턴스를 중지합니다. 정상적으로 종료하려면db.shutdownServer()
mongosh
의 메서드 또는 Linux 시스템의 경우mongod --shutdown
옵션을 사용합니다.(선택 사항) 멤버의
dbPath
디렉토리에서 모든 데이터와 하위 디렉토리의 백업을 생성합니다. 전체 백업이 필요하지 않은 경우에는diagnostic.data
디렉토리만 백업하여 문제 발생 시 유용한 문제 해결 데이터를 보존하는 것이 좋습니다. 자세한 내용은 풀타임 진단 데이터 캡처에서 확인할 수 있습니다.멤버의
dbPath
디렉토리에서 모든 데이터 및 하위 디렉토리를 삭제합니다.
이 시점에서 mongod
은 초기 동기화를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스 크기와 복제본 세트 멤버 간 네트워크 지연 시간에 따라 달라집니다.
다른 멤버의 데이터 파일 복사하여 동기화하기
이 방식은 복제본 세트 기존 멤버의 데이터 파일을 이용하여 신규 또는 부실 멤버를 '시딩'합니다. 새 멤버가 oplog를 따라잡을 수 있도록 데이터 파일이 충분히 최신 상태여야 합니다. 그렇지 않으면 멤버가 초기 동기화를 수행해야 합니다.
데이터 파일 복사
데이터 파일을 스냅샷이나 직접 복사본으로 캡처할 수 있습니다. 그러나 대부분의 경우 파일 복사 작업 중 데이터 파일이 변경되므로 실행 중인 mongod
인스턴스에서 다른 인스턴스로 데이터 파일을 복사할 수 없습니다.
중요
데이터 파일을 복사하는 경우 복사본에 local
데이터베이스의 콘텐츠가 포함되어 있는지 확인합니다.
데이터 파일에 mongodump
백업을 사용할 수 없습니다. 스냅샷 백업만 사용할 수 있습니다. 실행 중인 mongod
인스턴스의 일관된 스냅샷을 캡처하는 방법에 대한 자세한 내용은 자체 관리 배포를 위한 백업 방법 문서를 참조하세요.
멤버 동기화
"seed" 소스에서 데이터 파일을 복사한 후, mongod
인스턴스를 새 members[n]._id
로 시작하고 복제본 세트의 현재 상태를 반영할 때까지 oplog의 모든 작업을 적용하도록 허용합니다. 복제본 세트의 현재 상태를 확인하려면 rs.printSecondaryReplicationInfo()
또는 rs.status()
를 사용합니다.