문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

MongoDB 도구를 사용한 백업 및 복원

이 페이지의 내용

  • 고려 사항
  • 배포
  • 성능에 미치는 영향
  • 출력 형식
  • 절차
  • 다음을 사용하여 데이터베이스 백업 mongodump
  • 다음을 사용하여 데이터베이스 복원 mongorestore

이 튜토리얼에서는 MongoDB와 함께 제공되는 명령줄 유틸리티 mongorestoremongodump 를 사용하여 백업을 생성하고 데이터를 복원하는 프로세스에 대해 설명합니다.

자체 호스팅 배포서버의 백업을 관리형 MongoDB Atlas 배포 서버로 복원하려면 mongorestore로 시드를 참조하세요.

완전 관리형 백업 방법의 경우, 클러스터의 클라우드 서비스 제공자의 네이티브 스냅샷 기능을 사용하여 로컬화된 백업 스토리지를 제공하는 MongoDB Atlas의 클라우드 백업 을 사용하세요.

mongorestoremongodump 유틸리티는 BSON 데이터 덤프와 함께 작동하며 소규모 배포의 백업을 만드는 데 유용합니다. 복원력이 뛰어나고 중단 없는 백업을 위해서는 파일 시스템 스냅샷 또는 블록 수준 디스크 스냅샷을 MongoDB Atlas의 클라우드 백업 과 함께 사용하세요.

참고

MongoDB Atlas로 샤드 클러스터 백업

mongodump mongorestore 를 샤드 클러스터의 백업 전략으로 사용하려면 샤드 클러스터 밸런서 를 중지하고 에서 fsync 명령 또는 메서드를 db.fsyncLock() mongos 사용하여 백업 중에 클러스터에 대한 쓰기를 차단해야 합니다.

또한 샤딩된 클러스터는 샤드 간 트랜잭션의 원자성 보장을 유지하는 다음과 같은 조정된 백업 및 복원 프로세스 중 하나를 사용할 수 있습니다.

mongodumpmongorestore 는 실행 중인 mongod 인스턴스와 상호 작용하여 작동하기 때문에 실행 중인 데이터베이스의 성능에 영향을 미칠 수 있습니다. 이 도구는 실행 중인 데이터베이스 인스턴스에 대한 트래픽을 생성할 뿐만 아니라 데이터베이스가 메모리를 통해 모든 데이터를 강제로 읽도록 합니다. MongoDB가 자주 사용하지 않는 데이터를 읽으면 액세스 빈도가 높은 데이터를 제거하여 데이터베이스의 일반 워크로드 성능이 저하될 수 있습니다.

MongoDB 도구를 사용하여 데이터를 백업할 때는 다음 지침을 고려하세요.

  • 백업의 콘텐츠와 백업이 반영하는 시점을 파악할 수 있도록 파일에 레이블을 지정합니다.

  • 및 의 mongodump 성능 mongorestore 영향이 사용 사례에서 허용되지 않는 경우 MongoDB Atlas 의 파일 시스템 스냅샷 또는 클라우드 백업과 같은 대체 백업 전략을 사용합니다.

  • --oplog 를 사용하여 mongodump 작업 중에 들어오는 쓰기 작업을 캡처하여 백업에 일관된 데이터 상태가 반영되도록 합니다.

  • 백업을 테스트 MongoDB 배포서버로 복원해 백업을 사용할 수 있는지 확인합니다.

다음도 참조하세요.

MongoDB 인스턴스 백업에 대한 자세한 내용은 MongoDB 백업 방법MongoDB Atlas 클라우드 백업 을 참조하세요. 또한 MongoDB 데이터베이스 도구에 대한 다음 참조 문서를 고려하세요.

mongorestoremongodump 는 여러 BSON 파일에 대한 단일 파일 대안인 아카이브 파일로 데이터를 출력할 수 있습니다. 아카이브 파일은 비연속적인 파일 쓰기를 지원하는 특수 목적 형식입니다. MongoDB에서 동시 백업과 MongoDB로 복원할 수 있습니다. 아카이브 파일을 사용하면 백업 및 복원 작업이 실행되는 동안 디스크 I/O가 최적화됩니다.

아카이브 파일을 표준 출력(stdout)으로 출력할 수도 있습니다. 표준 출력에 쓰는 경우 네트워크를 통한 데이터 마이그레이션, 디스크 I/O 사용량 감소, MongoDB 도구와 스토리지 엔진 모두에서의 동시성 향상이 가능합니다.

아카이브 파일에 대한 자세한 내용은 --archive 옵션을 참조하세요.

참고

MongoDB Atlas로 샤드 클러스터 백업

mongodump mongorestore 를 샤드 클러스터의 백업 전략으로 사용하려면 샤드 클러스터 밸런서 를 중지하고 에서 fsync 명령 또는 메서드를 db.fsyncLock() mongos 사용하여 백업 중에 클러스터에 대한 쓰기를 차단해야 합니다.

또한 샤딩된 클러스터는 샤드 간 트랜잭션의 원자성 보장을 유지하는 다음과 같은 조정된 백업 및 복원 프로세스 중 하나를 사용할 수 있습니다.

mongodumplocal 데이터베이스의 콘텐츠를 출력에서 제외합니다.

mongodump 액세스 제어 가 활성화된 MongoDB 배포에 대해 를 실행하려면 find 백업할 각 데이터베이스에 대해 backup 작업을 수행할 수 있는 권한이 있어야 합니다. 기본 제공 역할은 모든 데이터베이스의 백업을 수행하는 데 필요한 권한을 제공합니다.

backup 역할은 데이터베이스 프로파일링을 실행할 때 존재하는 system.profile 컬렉션을 백업할 수 있는 추가 권한을 제공합니다.

mongodump 유틸리티는 실행 중인 mongod 에 연결하여 데이터를 백업합니다.

유틸리티는 전체 서버, 데이터베이스 또는 컬렉션에 대한 백업을 만들거나 쿼리를 사용하여 컬렉션의 일부만 백업할 수 있습니다.

인수 없이 mongodump 를 실행하면 명령이 포트 27017 에서 로컬 시스템의 MongoDB 인스턴스(예: localhost)에 연결되고 현재 디렉토리에 dump/ 라는 데이터베이스 백업이 생성됩니다.

동일한 머신과 기본 포트 27017에서 실행 중인 mongod 인스턴스에서 데이터를 백업하려면 다음 명령을 사용합니다.

mongodump

MongoDB 인스턴스의 호스트와 포트를 지정하려면 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  • SRV 또는 표준 연결 문자열을 사용하여 --uri 문자열에 호스트 이름과 포트를 지정합니다.

    mongodump --uri="mongodb+srv://username:password@cluster0.example.mongodb.net" <additional_options>
  • 문자열 --host에 호스트 이름과 포트를 지정합니다.

    mongodump --host="mongodb0.example.com:27017" <additional_options>
  • --host--port에 호스트 이름과 포트를 지정합니다.

    mongodump --host="mongodb0.example.com" --port=27017 <additional_options>

는 호스트의 포트 에서 수신을 통해 액세스할mongodump mongod 수 있는 데이터 사본이 들어 있는 BSON 파일을 27017 mongodb.example.net 작성합니다. 자세한 내용 은 비로컬 인스턴스에서 mongod 백업 생성 을 참조하세요.

다른 출력 디렉토리를 지정하려면 --out or -o 옵션을 사용할 수 있습니다.

mongodump --out=/opt/backup/mongodump-1

데이터베이스 덤프에 포함되는 데이터의 양을 제한하려면 --db--collectionmongodump 옵션으로 지정할 수 있습니다. 예를 들면 다음과 같습니다.

mongodump --collection=myCollection --db=test

이 작업은 현재 작업 디렉토리의 dump/ 하위 디렉토리에 있는 데이터베이스 test로부터 myCollection이라는 명칭의 컬렉션 덤프를 생성합니다.

백업 데이터 폴더에 출력 파일이 있는 경우 mongodump 는 출력 파일을 덮어씁니다. mongodump 명령을 여러 번 실행하기 전에 출력 폴더(기본값은 dump/ 폴더)의 파일이 더 이상 필요하지 않은지 확인하거나, 폴더 또는 파일의 이름을 변경하세요.

이 포함된 옵션은 --oplog mongodump oplog 항목을 수집하고 라이브 데이터베이스에서 백업을 수행할 수 있도록 합니다. 나중에 백업에서 데이터베이스를 복원하는 경우 데이터베이스는 백업 프로세스가 완료되었을 때의 데이터베이스와 동일합니다.

--oplog 사용하면 mongodump 는 소스 데이터베이스의 모든 데이터와 백업 절차의 처음부터 끝까지 모든 oplog 항목을 복사합니다. 이 작업을 mongorestore --oplogReplay 와 함께 사용하면 mongodump 가 덤프 파일 생성을 완료한 시점에 해당하는 특정 시점을 반영하는 백업을 복원할 수 있습니다.

에 대한 --host--port 옵션을 사용하면 원격 호스트에 연결하고 원격 호스트에서 백업할 수 있습니다. 다음 예시를 mongodump 살펴보겠습니다.

mongodump \
--host=mongodb1.example.net \
--port=3017 \
--username=user \
--password="pass" \
--out=/opt/backup/mongodump-1

위와 같이 mongodump 명령에서 사용자 이름 및 비밀번호 자격 증명을 지정하여 데이터베이스 인증을 지정할 수 있습니다.

참고

MongoDB Atlas로 샤드 클러스터 백업

mongodump mongorestore 를 샤드 클러스터의 백업 전략으로 사용하려면 샤드 클러스터 밸런서 를 중지하고 에서 fsync 명령 또는 메서드를 db.fsyncLock() mongos 사용하여 백업 중에 클러스터에 대한 쓰기를 차단해야 합니다.

또한 샤딩된 클러스터는 샤드 간 트랜잭션의 원자성 보장을 유지하는 다음과 같은 조정된 백업 및 복원 프로세스 중 하나를 사용할 수 있습니다.

액세스 제어 가 활성화된 MongoDB 배포로 데이터를 복원하기 위해, restore 역할은 데이터에 system.profile 컬렉션 데이터가 포함되어 있지 않고 --oplogReplay 옵션 없이mongorestore를 실행하는 경우 백업에서 데이터를 복원하는 데 필요한 권한을 제공합니다. .

백업 데이터에 system.profile 컬렉션 데이터가 포함되어 있거나 --oplogReplay 로 실행하는 경우 추가 권한이 필요합니다.

system.profile

백업 데이터에 system.profile 컬렉션 데이터가 포함되어 있고 대상 데이터베이스에 컬렉션이 포함되어 있지 않은 system.profile 경우, 는 프로그램이mongorestore 실제로 문서를 복원하지 않더라도 컬렉션 생성을 system.profile 시도합니다. 따라서 사용자는 데이터베이스의 createCollection 컬렉션에 convertToCapped system.profile 대해 및 조치를 수행하려면 추가 권한이 필요합니다.

기본 제공 역할 dbAdmindbAdminAnyDatabase는 모두 추가 권한을 제공합니다.

--oplogReplay

으로 anyResource 실행하려면 에 --oplogReplay anyAction 이 있는 사용자 정의 역할 을 만듭니다

--oplogReplay 으로 mongorestore 를 실행해야 하는 사용자에게만 부여합니다

mongorestore 유틸리티는 mongodump 에서 생성된 바이너리 백업을 복원합니다. 기본적으로 mongorestoredump/ 디렉토리에서 데이터베이스 백업을 찾습니다.

mongorestore 유틸리티는 실행 중인 mongod 에 직접 연결하여 데이터를 복원합니다.

mongorestore 는 전체 데이터베이스 백업 또는 백업의 하위 집합을 복원할 수 있습니다.

참고

버전 3.6에 새로 추가됨:

모든 MongoDB 컬렉션에는 기본적으로 UUID가 포함되어 있습니다. MongoDB가 컬렉션을 복원할 때 복원된 컬렉션은 본래의 UUID를 유지합니다. UUID가 없는 컬렉션을 복원하는 경우, MongoDB는 복원된 컬렉션에 대한 UUID를 생성합니다.

컬렉션 UUID에 대한 자세한 내용은 컬렉션 을 참조하세요.

mongorestore 을(를) 사용하여 활성 mongod 에 연결하려면 다음 프로토타입 형식의 명령을 사용합니다.

mongorestore --uri <connection string> <path to the backup>

다음 예를 고려하십시오.

mongorestore /opt/backup/mongodump-1

여기서 mongorestore/opt/backup/mongodump-1 디렉토리의 데이터베이스 백업을 기본 포트 27017 의 로컬 호스트 인터페이스에서 실행 중인 mongod 인스턴스로 가져옵니다.

특정 --oplog 시점 스냅샷을 보장하기 위해 mongorestore 옵션을 사용하여 데이터베이스 --oplogReplay 덤프를 생성한 경우, 다음 예에서와 같이 옵션을 사용하여 를 호출합니다.

mongorestore --oplogReplay

mongorestore --objcheck 옵션을 사용하여 객체를 데이터베이스에 삽입하는 동안 무결성을 확인하거나, mongorestore --drop 옵션을 사용하여 백업에서 복원하기 전에 데이터베이스에서 각 컬렉션을 삭제하는 것을 고려할 수 있습니다.

기본적으로 mongorestore 는 로컬 호스트 인터페이스와 기본 포트(27017)에서 실행 중인 MongoDB 인스턴스에 연결합니다. 다른 호스트 또는 포트로 복원하려면 --host--port 옵션을 사용합니다.

--host--port 옵션을 지정하는 다음 예시는 다음과 같습니다.

mongorestore --host=mongodb1.example.net --port=3017

액세스 제어를 적용하는 인스턴스로 복원하는 경우 --username--authenticationDatabase 도 포함합니다. --password 옵션을 생략하여 mongorestore 비밀번호를 입력하라는 메시지를 표시합니다.

mongorestore \
--host=mongodb1.example.net \
--port=3017 \
--username=user \
--authenticationDatabase=admin \
/opt/backup/mongodump-1
← 파일 시스템 스냅샷을 사용한 백업 및 복원