MongoDump 및 MongoRestore 대 MongoExport 및 MongoImport
MongoDB는 소스 사용 가능한 크로스 플랫폼 문서 지향 데이터베이스 프로그램입니다. NoSQL 데이터베이스 프로그램으로 분류되는 MongoDB는 선택적 스키마와 함께 JSON과 유사한 문서를 사용합니다.
이 블로그에서는 ' mongodump 및 mongorestore'와 'mongoexport 및 mongoimport' 의 사용법에 대해 이야기하겠습니다 . 블로그는 이 블로그의 독자가 MongoDB 배경에서 왔으며 사용된 용어가 MongoDB에만 밀접하게 관련되어 있다는 사실을 고려하고 있습니다 .
우리가 조직과 함께 작업하거나 데이터베이스에 많은 양의 데이터가 있는 거대한 코드베이스에서 작업할 때 이러한 명령을 자주 사용해야 하는 경우가 있으며 이러한 명령을 다음과 같이 사용하기 전에 많은 생각과 온전성 검사가 있습니다. 그들은 데이터를 조작하고 대용량 데이터의 조작은 데이터베이스의 가동 중지 시간 또는 데이터 중복으로 이어질 수 있으므로 기술 측면에서 큰 손실을 초래할 수 있으므로 주의해서 처리해야 하는 작업입니다. 데이터베이스를 다시) 또는 사용자의 신뢰를 잃을 수 있습니다.
이러한 유틸리티가 필요한 이유에 대해 이야기해 봅시다. 이름에서 데이터베이스에서 데이터를 내보내려면 mongodump와 mongoexport를 사용해야 하고, 데이터베이스로 데이터를 가져오려면 mongorestore와 mongoimport를 사용해야 한다는 결론을 내릴 수 있지만 중요한 부분은 유사한 작업에 여러 유틸리티를 사용하는 이유입니다. 그것이 우리가 이해할 것입니다.
몽고 덤프
mongodump는 데이터베이스 내용의 바이너리 내보내기 를 생성하기 위한 명령줄 유틸리티입니다 . mongodump는 mongod 또는 mongos 인스턴스 에서 데이터를 내보낼 수 있습니다 . 즉, 독립 실행형, 복제본 세트 및 분할된 클러스터 배포에서 데이터를 내보낼 수 있습니다. mongodump를 사용하는 샘플 명령은 다음과 같습니다.
$ mongodump --uri=<MONGO_URL> --db=<DB_NAME> --collection=<COLL_NAME>
mongodump를 사용하여 덤프를 꺼내기 위해 실행할 명령입니다. 기본적으로 덤프 폴더가 생성되고 동일한 폴더 내에 데이터베이스 덤프가 생성됩니다. 매개변수 에 MONGO_URL을 전달하거나 유틸리티를 MongoDB 클라이언트에 연결하는 데 --uri사용할 수 있습니다 . --user=myuser and --password=somepass매개변수 를 사용하여 덤프할 데이터베이스와 콜렉션을 지정할 수 --db and --collection있으며 매개 --out변수를 사용하여 덤프 디렉토리 이름을 변경할 수도 있습니다. 덤프를 가져올 때마다 모든 컬렉션에 대해 두 개의 파일이 생성됩니다. 하나는 파일 .bson이고 다른 하나는 .metadata.json파일입니다. mongodump에 대한 자세한 내용은 설명서를 참조하십시오. 필드 를 사용하여 데이터베이스 백업을 아카이브 파일로 실행할 수도 있습니다 --archive.
우리가 mongodump를 사용하는 이유는 바이너리 복사본을 생성하고 더 효율적이기 때문입니다( 효율적이라는 것은 mongoexport보다 빠르고 더 압축된 데이터 덤프를 생성함을 의미합니다 ). 또 다른 이유는 mongodump가 .bson 덤프를 만들기 때문에 BSON 리치 데이터 유형을 보존하기 때문 입니다 . 또한 파일의 인덱스 및 기타 통계를 보존하므로 .metadata.json데이터를 복원하면 인덱스가 암시적으로 생성됩니다. 따라서 일반적으로 cron 또는 다른 것을 통해 예약된 데이터 백업에 사용됩니다( MongoDB 에서 사용하도록 권장됨).
참고: 동일한 mongodump 명령에서 플래그와 플래그를 함께 사용할 수 없습니다 .--archive--out
몽고스토어
mongorestore는 mongodump를 보완하며 mongodump 또는 mongoexport를 통해 덤프된 데이터를 가져오는 데 사용됩니다. mongorestore는 삽입 전용 작업이므로 이미 존재하는 데이터베이스의 문서를 덮어쓰지 않습니다.
Mongorestore를 사용하면 데이터베이스로 복원하려는 컬렉션 또는 컬렉션 목록을 지정하여 일부 부분 복원 옵션을 수행할 수 있습니다. 하나의 컬렉션만 복원해야 하는 경우 복원할 데이터베이스와 컬렉션 파일의 경로를 --collection지정해야 하는 플래그를 사용할 수 있습니다 . 컬렉션 플래그 대신 플래그를 사용하는 것이 좋습니다 .--dbBSON--nsInclude
mongorestore데이터베이스를 가져오기 전에 가 작동하는지 테스트하려면 를 사용하여 --dryRun복원이 예상대로 작동하는지 테스트할 수 있습니다. --dryRun플래그를 사용하면 mongorestore는 데이터를 가져오지 않고 mongorestore 요약 정보를 반환합니다 .
$ mongorestore --db=mydb --nsInclude="staging.*" dump/
몽고익스포트
mongoexport는 mongodump와 같은 방식으로 작동하지만 공간 효율성이 떨어지고 사람이 읽을 수 있는 형식(예: JSON 형식) 으로 데이터 덤프를 생성하므로 시간이 더 많이 걸립니다. 기본적으로 mongoexport는 stdout에 기록하지만 매개변수를 사용하여 데이터를 파일에 기록할 수도 있습니다 --out. 그러나 mongodump에서 논의한 것처럼 mongoexport의 덤프는 압축되지 않고 생성되지 않으므로 .metadata.json인덱스를 보존할 수 없으며 기본적으로 풍부한 BSON 데이터 유형도 보존할 수 없습니다. 최신 버전의 mongo에서는 mongoexport가 --jsonFormat=canonical매개변수를 사용하여 풍부한 BSON 유형을 보존하도록 지원합니다.
--fields=field1,field2...mongoexport의 이점은 매개변수를 사용하고 모든 값을 쉼표로 구분하여 지정하여 특정 필드도 내보낼 수 있다는 것입니다 . 또한 mongoexport에서 --skip, --limitand를 사용하여 --sort필터링되고 제한된 결과를 얻을 수 있습니다. mongoexport를 사용하는 동안 사용할 수 있는 필드도 많이 있습니다. 또한 --query매개변수를 사용하여 더 많은 필터링된 결과/덤프를 얻을 수 있습니다. mongoexport를 사용하여 덤프를 가져오면 MongoDB Compass 와 같은 데이터베이스 UI 애플리케이션에서 쉽게 업서트할 수 있습니다 .
몽고임포트
mongoimport는 mongoexport를 보완하며 에서 생성한 확장 JSON, CSV 또는 TSV 내보내기 mongoexport또는 잠재적으로 다른 타사 내보내기 도구를 복원하는 데 사용됩니다. mongorestore 와 mongoimport 유틸리티 의 큰 차이점은 --mode삽입, upsert 및 병합 옵션이 있는 플래그 입니다 . 이름에서만 삽입 모드 의 경우 고유한 _id 문서 만 삽입할 수 있으며 중복의 경우 오류를 기록한다는 것을 이해할 수 있습니다. upsert 의 경우 동일한 _ id 를 가진 문서가 이미 존재하는 경우 새 문서는 동일한 _ id를 가진 이전 문서를 대체합니다. 세 번째 경우는 병합 입니다., 여기서 가져오기 파일의 문서와 일치하는 기존 문서가 새 문서와 병합됩니다.
결론: mongodump/ mongorestore 유틸리티는 mongo 데이터베이스 백업 및 복원 전략에 완벽합니다 . 이러한 유틸리티를 사용하면 쉽게 압축하고 저장하거나 이메일을 통해 전송할 수 있는 단일 아카이브 파일에서 덤프 및 복원할 수 있습니다. mongorestore 를 사용하면 및플래그 옵션을사용하여 특정 컬렉션을 새 데이터베이스로 가져오거나 복원하지 않도록 포함하거나 제외할 수 있습니다mongoexport/ mongoimport 유틸리티는 mongo 데이터베이스 내의 컬렉션으로 작업하고 해당 컬렉션 내에서 문서를 삽입/업데이트하는 데 적합합니다 . mongoimport 에서 플래그를사용할 수 있습니다.--nsInclude--nsExclude--mode가져온 파일에서 문서를 삽입, 교체 또는 병합할지 여부를 정의합니다.
읽어 주셔서 감사합니다. LinkedIn 및 GitHub 에서 저에게 연락할 수 있습니다 .

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































