mongorestore 예제
이 페이지의 내용
이 페이지에는 mongorestore
의 예가 나와 있습니다.
mongo
shell이 아닌, 시스템 명령줄에서 mongorestore
를 실행합니다.
액세스 제어를 통한 복원
다음 예시 에서 mongorestore
는 /opt/backup/mongodump-2011-10-24
에서 호스팅하다 mongodb1.example.net
의 포트 27017
에서 실행 되는 mongod
인스턴스 로 복원합니다. --uri
string 은 사용자의 비밀번호를 생략하여 mongorestore
에 비밀번호를 입력하라는 메시지를 표시합니다.
mongorestore --uri="mongodb://user@mongodb1.example.net:27017/?authSource=admin" /opt/backup/mongodump-2011-10-24
또는 --host
, --port
, --username
, --authenticationDatabase
를 사용하여 호스트, 포트, 사용자 이름, 인증 데이터베이스를 지정할 수 있습니다. 비밀번호를 입력하라는 mongorestore
메시지를 표시하려면 --password
를 생략하세요.
mongorestore --host=mongodb1.example.net --port=27017 --username=user --authenticationDatabase=admin /opt/backup/mongodump-2011-10-24
컬렉션 복원
특정 컬렉션을 복원하려면 --nsInclude
를 사용하여 컬렉션의 전체 네임스페이스(<database>.<collection>
)를 전달하세요.
다음 예시에서는 dump/
디렉토리에 있는 해당 파일에서 데이터베이스 test
의 purchaseorders
컬렉션을 복원합니다.
mongorestore --nsInclude=test.purchaseorders dump/
mongorestore
는 복원된 문서 수를 포함한 결과를 출력합니다:
2019-06-28T19:23:42.858-0400 preparing collections to restore from 2019-06-28T19:23:42.858-0400 reading metadata for test.purchaseorders from dump/test/purchaseorders.metadata.json 2019-06-28T19:23:42.893-0400 restoring test.purchaseorders from dump/test/purchaseorders.bson 2019-06-28T19:23:42.896-0400 restoring indexes for collection test.purchaseorders from metadata 2019-06-28T19:23:42.991-0400 finished restoring test.purchaseorders (6 documents, 0 failures) 2019-06-28T19:23:42.991-0400 6 document(s) restored successfully. 0 document(s) failed to restore.
dump/
디렉토리에 지정된 네임스페이스에 해당하는 데이터 파일이 없으면 데이터가 복원되지 않습니다.
2019-07-08T14:39:57.121-0400. preparing collections to restore from 2019-07-08T14:39:57.121-0400 0 document(s) restored successfully. 0 document(s) failed to restore.
또는 --db
, --collection
, .bson
파일을 사용하여 특정 컬렉션을 복원할 수 있습니다.
mongorestore --db=test --collection=purchaseorders dump/test/purchaseorders.bson
2019-06-30T12:21:44.777-0400 checking for collection data in dump/test/purchaseorders.bson 2019-06-30T12:21:44.779-0400 reading metadata for test.purchaseorders from dump/test/purchaseorders.metadata.json 2019-06-30T12:21:44.813-0400 restoring test.purchaseorders from dump/test/purchaseorders.bson 2019-06-30T12:21:44.881-0400 restoring indexes for collection test.purchaseorders from metadata 2019-06-30T12:21:44.987-0400 finished restoring test.purchaseorders (6 documents, 0 failures) 2019-06-30T12:21:44.987-0400 6 document(s) restored successfully. 0 document(s) failed to restore.
Queryable Encryption 활성화 컬렉션 복원하기
Queryable Encryption은 암호화된 컬렉션의 문서에 __safeContent__
필드를 추가하고 문서 유효성 검사를 비활성화하지 않는 한 해당 문서에 대한 삽입 및 업데이트 작업을 차단합니다. 암호화된 필드가 포함된 컬렉션을 복원하려면 --bypassDocumentValidation
을 사용합니다.
mongodump
Queryable Encryption이 활성화된 컬렉션의 관련 메타데이터 컬렉션을 내보냅니다. mongorestore
을 실행하면 이러한 컬렉션도 복원됩니다.
mongorestore --db=test --collection=personaldata dump/test/personaldata.bson --bypassDocumentValidation
와일드카드를 사용하여 컬렉션 복원
--nsInclude
및 --nsExclude
는 별표를 와일드카드로 사용하여 복원 연산에서 포함하거나 제외할 네임스페이스를 지정할 수 있도록 지원합니다.
다음 예시에서는 지정된 네임스페이스 패턴과 일치하는 현재 디렉토리의 dump/
하위 디렉토리에 있는 문서를 복원합니다. --nsInclude
문은 transactions
데이터베이스의 문서만 복원하도록 지정하고, --nsExclude
는 mongorestore
가 이름이 _dev
로 끝나는 컬렉션을 제외하도록 지시합니다. mongorestore
는 포트 27017
의 localhost 인터페이스에서 실행 중인 mongod
인스턴스로 데이터를 복원합니다.
mongorestore --nsInclude='transactions.*' --nsExclude='transactions.*_dev' dump/
복원 중 컬렉션 네임스페이스 변경
복원하려는 컬렉션의 네임스페이스를 변경하려면 --nsFrom
및 --nsTo
옵션을 사용합니다.
--nsFrom
와 --nsTo
옵션은 별표를 와일드카드로 사용하는 것을 지원하고, 또한 달러 기호를 사용해 대체에 사용할 '와일드카드' 변수를 구분하는 것을 지원합니다.
mongodump
를 사용하여 dump/
디렉토리로 내보낸 데이터베이스 data
를 고려하세요. data
데이터베이스에는 다음 컬렉션이 포함되어 있습니다.
sales_customer1
sales_customer2
sales_customer3
users_customer1
users_customer2
users_customer3
--nsFrom
및 --nsTo
를 사용하여 데이터를 다른 네임스페이스로 복원할 수 있습니다. 다음 작업
data
데이터베이스의sales_<customerName>
컬렉션을<customerName>
데이터베이스의sales
컬렉션으로 복원합니다.users_<customerName>
컬렉션을<customerName>
데이터베이스의users
컬렉션으로 복원합니다.
mongorestore --nsInclude="data.*" --nsFrom="data.$prefix$_$customer$" --nsTo="$customer$.$prefix$"
데이터베이스 복사/복제
버전 4.2부터 MongoDB는 더 이상 사용되지 않는 copydb
명령과 clone
명령을 제거합니다.
대안적인 방법으로 사용자는 mongodump
와 mongorestore
(mongorestore
옵션 --nsFrom
과 --nsTo
포함)를 사용할 수 있습니다.
예를 들어 기본 포트 27017에서 실행 중인 로컬 인스턴스의 test
데이터베이스를 동일한 인스턴스의 examples
데이터베이스로 복사하려면 다음과 같이 할 수 있습니다.
mongodump
를 사용하여test
데이터베이스를 아카이브mongodump-test-db
에 덤프합니다.mongodump --archive="mongodump-test-db" --db=test --nsFrom
과--nsTo
와 함께mongorestore
를 사용하여 아카이브에서 복원 (데이터베이스 이름 변경 포함) 합니다.mongorestore --archive="mongodump-test-db" --nsFrom="test.*" --nsTo="examples.*"
팁
URI 또는 호스트, 사용자 이름, 비밀번호 및 인증 데이터베이스를 지정하는 등 필요에 따라 추가 옵션을 포함합니다.
아카이브 파일에서 복원
아카이브 파일에서 복원하려면 새 --archive
옵션과 아카이브 파일 이름을 사용하여 mongorestore
를 실행합니다.
mongorestore --archive=test.20150715.archive
아카이브 파일에서 데이터베이스 복원
아카이브 파일에서 복원하려면 새 --archive
옵션과 아카이브 파일 이름을 사용하여 mongorestore
를 실행합니다. 예를 들어 다음 작업은 test.20150715.archive
파일에서 test
데이터베이스를 복원합니다.
mongorestore --archive=test.20150715.archive --nsInclude="test.*"
압축 데이터에서 복원
mongorestore
mongodump
에서 생성한 압축 파일 또는 압축 아카이브 파일에서 복원할 수 있습니다.
압축 파일이 포함된 dump 디렉토리에서 복원하려면 --gzip
옵션으로 mongorestore
를 실행하세요. 예를 들어 다음 연산은 기본 dump
디렉토리에 있는 압축 파일에서 test
데이터베이스를 복원합니다.
mongorestore --gzip --nsInclude="test.*" dump/
압축된 보관 파일에서 복원하려면 --gzip
옵션 및 --archive
옵션을 사용하여 mongorestore
를 실행합니다. 예를 들어 다음 작업은 보관 파일 test.20150715.gz
에서 test
데이터베이스를 복원합니다.
mongorestore --gzip --archive=test.20150715.gz --nsInclude="test.*"
복원하려는 컬렉션의 네임스페이스를 변경하려면 --nsFrom
및 --nsTo
옵션을 --gzip
옵션과 함께 사용합니다.
mongorestore --gzip --nsFrom="data.$prefix$_$customer$" --nsTo="$customer$.$prefix$"
Time Series 컬렉션 복원
mongosh
}을 사용하여 time series 컬렉션을 만듭니다. 이 예시에서는 기본 test
데이터베이스를 사용합니다:
db.createCollection( "weather", { timeseries: { timeField: "timestamp", metaField: "metadata", granularity: "hours" } } )
컬렉션에 time-series 문서를 삽입합니다:
db.weather.insertMany( [ { "metadata": { "sensorId": 5578, "type": "temperature" }, "timestamp": ISODate("2021-05-18T00:00:00.000Z"), "temp": 12 }, { "metadata": { "sensorId": 5578, "type": "temperature" }, "timestamp": ISODate("2021-05-18T04:00:00.000Z"), "temp": 11 }, { "metadata": { "sensorId": 5578, "type": "temperature" }, "timestamp": ISODate("2021-05-18T08:00:00.000Z"), "temp": 11 } ] )
터미널에서 mongodump
를 사용하여 time series 컬렉션을 dump/test
디렉토리로 내보냅니다. 이 명령은 디렉토리에 system.buckets.weather.bson
및 weather.metadata.json
을 추가합니다:
mongodump --db=test
mongorestore
를 사용하여 데이터를 mongorestore.weather
네임스페이스로 복원합니다:
mongorestore --host localhost --port 27017 --nsFrom="test.*" --nsTo="mongorestore.*" dump/
참고
system.buckets.weather.bson
파일 자체는 복원할 수 없습니다. 이 작업을 시도하면 오류가 발생합니다.
AWS IAM 자격 증명을 사용하여 MongoDB Atlas 클러스터에 연결하기
버전 100.1.0의 새로운 기능.
Amazon Web Services IAM 자격 증명 을 통해 인증을 지원하도록 MongoDB Atlas connection string
구성된 클러스터에 연결하려면 mongorestore
다음과 같이 에 를 제공합니다.
mongorestore 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
이러한 방식으로 AWS IAM 자격 증명을 사용하여 Atlas에 연결하면 이 예와 같이 MONGODB-AWS
authentication mechanism
및 $external
authSource
가 사용됩니다.
AWS 세션 토큰을 사용하는 경우에도 다음과 같이 AWS_SESSION_TOKEN
authMechanismProperties
값과 함께 제공합니다.
mongorestore 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>
참고
또는 다음과 같이 --username
, --password
및 --awsSessionToken
옵션을 대신 사용하여 AWS 액세스 키 ID, 시크릿 액세스 키 및 세션 토큰(선택 사항)을 각각 연결 문자열 외부에 제공할 수 있습니다.
mongorestore 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>
명령줄 매개변수로 제공되는 경우 이러한 세 가지 옵션에는 퍼센트 인코딩이 필요하지 않습니다.
표준 AWS IAM 환경 변수를 사용하여 플랫폼에서 이러한 자격 증명을 설정할 수도 있습니다. mongorestore
는 MONGODB-AWS
authentication mechanism
을 사용할 때 다음 환경 변수를 확인합니다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
설정된 경우 이러한 자격 증명은 연결 문자열이나 명시적 옵션을 통해 지정할 필요가 없습니다.
참고
AWS 환경 변수를 사용하여 이러한 값을 지정하기로 선택한 경우 이러한 자격 증명에 해당하는 명시적 또는 연결 문자열 옵션과 조합하여 사용할 수 없습니다. 액세스 키 ID 및 비밀 액세스 키(사용 중인 경우 세션 토큰도 함께 필요)에 환경 변수를 사용하거나 또는 명시적 또는 연결 문자열 옵션을 사용하여 각각을 지정합니다.
다음 예시에서는 bash
셸에서 이러한 환경 변수를 설정합니다.
export AWS_ACCESS_KEY_ID='<aws access key id>' export AWS_SECRET_ACCESS_KEY='<aws secret access key>' export AWS_SESSION_TOKEN='<aws session token>'
다른 셸에서 환경 변수를 설정하는 구문은 다를 수 있습니다. 자세한 내용은 사용 중인 플랫폼의 설명서를 참조하세요.
다음 명령어로 이러한 환경 변수가 설정되었는지 확인할 수 있습니다.
env | grep AWS
설정이 완료되면 다음 예시에서는 이러한 환경 변수를 사용하여 MongoDB Atlas 클러스터에 연결합니다.
mongorestore 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>
일관적인 백업 파일 생성 및 복원
oplog 항목을 사용하여 일관적인 mongodump
백업 파일을 생성하려면 mongodump --oplog
옵션을 사용하세요. 백업 파일에서 데이터를 복원하려면 mongorestore --oplogReplay
옵션을 사용하세요.
oplog에는 데이터베이스 쓰기 작업 기록이 포함되어 있습니다.
mongodump
outputs:
컬렉션 문서, 메타데이터 및 옵션.
인덱스 정의.
--oplog
가 지정된 경우mongodump
실행 중에 발생하는 쓰기입니다.
oplog 옵션과 함께 mongodump 사용
mongodump --oplog
mongodump
출력 디렉토리의 최상위 수준에 oplog.bson
이라는 파일을 만듭니다. 이 파일에는 mongodump
실행 중에 발생하는 쓰기 작업이 포함되어 있습니다. mongodump
완료 후에 발생하는 쓰기는 파일에 기록되지 않습니다.
mongodump
을(를) 사용하여 샤딩된 클러스터를 백업하려면 데이터베이스 덤프를 사용하여 자체 관리형 샤드 클러스터 백업을 참조하세요.
oplogReplay 옵션과 함께 mongorestore 사용
oplog.bson
파일에서 oplog 항목을 복원하려면 mongorestore --oplogReplay
사용하세요. mongodump --oplog
와 mongorestore --oplogReplay
를 함께 사용하여 데이터베이스를 최신 상태로 유지하고 mongodump
실행 중에 발생한 모든 쓰기 작업을 포함하도록 합니다.
자세히 알아보기
클러스터 간 마이그레이션을 위한 mongosync 유틸리티
Atlas로 데이터 마이그레이션 또는 가져오기
Atlas에서 데이터 백업, 복원 및 보관