mongorestore은 mongodump 바이너리 내보내기를 읽고 데이터를 MongoDB deployment 로 복원하는 도구입니다.mongorestore를 사용하여 mongodump 백업 에서 샤딩된 클러스터 복원 .
시작하기 전에
소스 클러스터 의 mongodump 백업 있는지 확인하세요. 생성하려면 데이터베이스 덤프를 사용하여 자체 관리형 샤드 클러스터 백업을 참조하세요. 파일 시스템 스냅샷이 있는 경우 스냅샷 에서 자체 관리형 샤드 클러스터 복원을 참조하세요.
단계
밸런서 를 중지합니다.
청크 마이그레이션으로 인해 복원이 중단되는 것을 방지하려면 mongos 에 연결하고 밸런서를 중지합니다.
sh.stopBalancer()
밸런서가 중지되었는지 확인하려면 다음을 실행합니다.
use config while( sh.isBalancerRunning().mode != "off" ) { print( "Waiting for Balancer to stop..." ); sleep( 1000 ); }
대상 클러스터에서 컬렉션을 사전 샤딩합니다.
소스 클러스터의 각 샤딩된 컬렉션에 대해 데이터를 복원하기 전에 대상 클러스터에 컬렉션을 만들고 동일한 샤드 키를 사용하여 샤딩합니다.
각 컬렉션의 샤드 키를 찾으려면 라이브 소스 클러스터에 쿼리합니다.
use config db.collections.find()
또는 bsondump를 사용하여 덤프 디렉토리 에서 config/collections.bson 파일 검사할 수 있습니다.
bsondump /path/to/dump/config/collections.bson
{ "_id": "<database>.<collection>", ... "key": { "<shardKeyField>": "<key>" }, ... }
참고
유효한 샤드 키 값은 1 또는 "hashed"입니다.
각 샤딩된 컬렉션에 대해 동일한 샤드 키를 사용하여 대상 클러스터에서 컬렉션을 샤딩합니다.
sh.shardCollection( "<database-name>.<collection-name>", { <shardKeyField>: <key> } )
클러스터를 복원합니다.
mongorestore를 사용하여 mongos에 연결하고 클러스터 를 복원 . 대상 클러스터의 기존 구성을 유지하려면 config 데이터베이스 제외합니다.
mongorestore \ --host <host> \ --port 27017 \ --username <username> \ --password "<password>" \ --authenticationDatabase admin \ --nsExclude='config.*' \ /path/to/backup
중요
--drop 옵션은 복원하기 전에 컬렉션 삭제합니다. 컬렉션을 사전 샤딩한 후 --drop을(를) 사용하는 경우mongorestore은(는) 샤딩 구성을 제거합니다.
클러스터 접근성 검증
mongos 에 연결하고 sh.status() 를 실행하여 전체 클러스터 상태를 확인합니다.
sh.status()
모든 샤드에 액세스할 수 있고 통신할 수 있는지 확인하려면 임시 컬렉션에 테스트 문서를 삽입합니다.
db.testRestore.insertOne({ test: 1 })
그 다음 각 샤드 프라이머리에 연결하여 db.collection.find() 를 실행하여 문서가 있는지 확인합니다.
db.testRestore.find()