Docs Menu
Docs Home
/
MongoDB Database Tools
/

mongorestore 예제

이 페이지의 내용

  • 액세스 제어를 통한 복원
  • 컬렉션 복원
  • Queryable Encryption 활성화 컬렉션 복원하기
  • 와일드카드를 사용하여 컬렉션 복원
  • 복원 중 컬렉션 네임스페이스 변경
  • 데이터베이스 복사/복제
  • 아카이브 파일에서 복원
  • 압축 데이터에서 복원
  • Time Series 컬렉션 복원
  • AWS IAM 자격 증명을 사용하여 MongoDB Atlas 클러스터에 연결하기
  • 일관적인 백업 파일 생성 및 복원
  • 자세히 알아보기

이 페이지에는 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/ 디렉토리에 있는 해당 파일에서 데이터베이스 testpurchaseorders 컬렉션을 복원합니다.

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은 암호화된 컬렉션의 문서에 __safeContent__ 필드를 추가하고 문서 유효성 검사를 비활성화하지 않는 한 해당 문서에 대한 삽입 및 업데이트 작업을 차단합니다. 암호화된 필드가 포함된 컬렉션을 복원하려면 --bypassDocumentValidation을 사용합니다.

mongodump Queryable Encryption이 활성화된 컬렉션의 관련 메타데이터 컬렉션을 내보냅니다. mongorestore을 실행하면 이러한 컬렉션도 복원됩니다.

mongorestore --db=test --collection=personaldata dump/test/personaldata.bson --bypassDocumentValidation

--nsInclude--nsExclude는 별표를 와일드카드로 사용하여 복원 연산에서 포함하거나 제외할 네임스페이스를 지정할 수 있도록 지원합니다.

다음 예시에서는 지정된 네임스페이스 패턴과 일치하는 현재 디렉토리의 dump/ 하위 디렉토리에 있는 문서를 복원합니다. --nsInclude 문은 transactions 데이터베이스의 문서만 복원하도록 지정하고, --nsExcludemongorestore가 이름이 _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 명령을 제거합니다.

대안적인 방법으로 사용자는 mongodumpmongorestore(mongorestore 옵션 --nsFrom--nsTo 포함)를 사용할 수 있습니다.

예를 들어 기본 포트 27017에서 실행 중인 로컬 인스턴스의 test 데이터베이스를 동일한 인스턴스의 examples 데이터베이스로 복사하려면 다음과 같이 할 수 있습니다.

  1. mongodump를 사용하여 test 데이터베이스를 아카이브 mongodump-test-db에 덤프합니다.

    mongodump --archive="mongodump-test-db" --db=test
  2. --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$"

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.bsonweather.metadata.json을 추가합니다:

mongodump --db=test

mongorestore를 사용하여 데이터를 mongorestore.weather 네임스페이스로 복원합니다:

mongorestore --host localhost --port 27017 --nsFrom="test.*" --nsTo="mongorestore.*" dump/

참고

system.buckets.weather.bson 파일 자체는 복원할 수 없습니다. 이 작업을 시도하면 오류가 발생합니다.

버전 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>

참고

AWS 액세스 키 ID, 보안 액세스 키 또는 세션 토큰에 다음 문자가 포함되어 있는 경우

: / ? # [ ] @

이러한 문자는 퍼센트 인코딩을 사용해 변환해야 합니다.

또는 다음과 같이 --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 환경 변수를 사용하여 플랫폼에서 이러한 자격 증명을 설정할 수도 있습니다. mongorestoreMONGODB-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 실행 중에 발생하는 쓰기입니다.

mongodump --oplog mongodump 출력 디렉토리의 최상위 수준에 oplog.bson 이라는 파일을 만듭니다. 이 파일에는 mongodump 실행 중에 발생하는 쓰기 작업이 포함되어 있습니다. mongodump 완료 후에 발생하는 쓰기는 파일에 기록되지 않습니다.

mongodump 을(를) 사용하여 샤딩된 클러스터를 백업하려면 데이터베이스 덤프를 사용하여 자체 관리형 샤드 클러스터 백업을 참조하세요.

oplog.bson 파일에서 oplog 항목을 복원하려면 mongorestore --oplogReplay 사용하세요. mongodump --oplogmongorestore --oplogReplay를 함께 사용하여 데이터베이스를 최신 상태로 유지하고 mongodump 실행 중에 발생한 모든 쓰기 작업을 포함하도록 합니다.

돌아가기

행동