이 튜토리얼에서는 mongodump 및 mongorestore를 사용하여 백업을 만들고 데이터를 복원하는 방법을 다룹니다.
자체 호스팅 배포의 백업을 관리형 MongoDB Atlas 배포로 복원하려면 mongorestore를 사용하여 시드를 참조하세요.
고려 사항
배포
mongorestore 및 mongodump 유틸리티는 BSON 데이터 덤프와 함께 작동하며 소규모 배포의 백업을 만드는 데 유용합니다. 복원력이 뛰어나고 중단 없는 백업을 원한다면,파일 시스템 스냅샷 또는 블록 수준 디스크 스냅샷과 MongoDB Atlas의 클라우드 백업 을 사용하세요.
참고
MongoDB Atlas로 샤딩된 클러스터 백업
mongodump 및 mongorestore를 샤딩된 클러스터의 백업 전략으로 사용하려면 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.
또한 샤딩된 클러스터는 샤드 간 트랜잭션의 원자성 보장을 유지하는 다음과 같은 조정된 백업 및 복원 프로세스 중 하나를 사용할 수 있습니다.
성능에 미치는 영향
mongodump 및 mongorestore 는 실행 mongod 인스턴스 와 상호 작용 때문에 데이터베이스 성능에 영향 수 있습니다. 이 도구는 트래픽을 생성하고 데이터베이스 가 메모리를 통해 모든 데이터를 읽도록 합니다. MongoDB 자주 액세스하지 않는 데이터를 읽으면 자주 액세스하는 데이터를 제거하여 데이터베이스의 일반 워크로드 성능을 저하시킵니다.
MongoDB 도구를 사용하여 데이터를 백업할 때는 다음 지침을 따르세요.
파일에 레이블을 지정하여 백업 콘텐츠와 백업 시간을 식별합니다.
mongodump및mongorestore의 성능 영향 허용될 수 없는 경우, 파일 시스템 스냅샷 또는 MongoDB Atlas 의 클라우드 백업과 같은 대안을 사용합니다.mongodump가 복제 세트의 일관된 백업을 수행하려면--oplog옵션을 사용하여 백업 작업 중에 받은 쓰기를 캡처하거나 백업하는 동안 복제 세트에 대한 모든 쓰기를 중지해야 합니다.샤딩된 클러스터 복제본 세트에 대한 자세한 내용은 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.
백업을 테스트 배포서버 로 복원하여 확인합니다.
샤딩된 클러스터 에서 백업 불일치를 줄이려면 백업 중에 밸런서, 모든 쓰기 (write) 작업 및 모든 스키마 변환을 중지합니다.
팁
자세한 내용은 자체 관리형 배포서버를 위한 백업 방법을 참조하세요. For MongoDB Database Tools 참조는 다음을 참조하세요.
출력 형식
mongorestore 및 mongodump 는 데이터를 여러 BSON 파일에 대한 단일 파일 대안인 보관 파일로 출력할 수 있습니다. 보관 파일은 비연속적인 파일 쓰기 (write)를 지원 특수 목적 형식입니다. MongoDB 에서 백업과 MongoDB 로 복원을 동시에 활성화 . 보관 파일은 백업 및 복원 중에 디스크 I/O를 최적화하기도 합니다.
보관 파일을 표준 출력(stdout)에 쓰기 (write) 수도 있습니다. 표준 출력에 기록하면 네트워크를 통한 데이터 마이그레이션 , 디스크 I/O 감소, MongoDB 도구와 스토리지 엔진 모두의 동시성 향상이 가능합니다.
보관 파일에 대한 자세한 내용은 --archive 옵션을 참조하세요.
오래된 백업
백업은 데이터베이스의 현재 상태에 대한 스냅샷을 제공합니다. 백업에서 복원하는 경우 복원된 데이터베이스에는 백업 이후에 변경된 내용이 포함되지 않으므로 데이터가 손실될 수 있습니다.
절차
다음을 사용하여 데이터베이스 백업 mongodump
mongodump 유틸리티는 실행 mongod에 연결하여 데이터를 백업합니다. 전체 서버, 데이터베이스 또는 컬렉션 백업 하거나 쿼리 사용 하여 컬렉션 의 일부를 백업할 수 있습니다 . mongodump 는 local 데이터베이스 의 콘텐츠를 출력에서 제외합니다.
인수를 지정하지 않으면 mongodump 이(가) 포트 27017 에서 로컬 시스템의 MongoDB 인스턴스 에 연결되고 현재 디렉토리 에 dump/ (이)라는 데이터베이스 백업 생성됩니다.
mongodump
호스팅하다 및 포트를 지정하려면 다음 중 하나를 사용합니다:
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>
다른 출력 디렉토리 지정하려면 --out (또는 -o)를 사용합니다.
mongodump --out=/opt/backup/mongodump-1
덤프를 특정 데이터베이스 또는 컬렉션으로 제한하려면 --db 및 --collection를 사용합니다.
mongodump --collection=myCollection --db=test
이렇게 하면 현재 디렉토리 의 dump/ 하위 디렉토리에 있는 test 데이터베이스 에서 myCollection 덤프가 생성됩니다.
mongodump 출력 폴더의 기존 파일을 덮어씁니다(기본값: dump/). 여러 번 실행 전에 출력 폴더를 백업하거나 이름을 변경하세요.
필요한 액세스 권한
액세스 제어가 활성화된 MongoDB 배포서버에 대해 mongodump를 실행하려면 백업할 각 데이터베이스에 대해 find 작업을 수행할 수 있는 권한이 있어야 합니다. 기본 제공 backup 역할은 모든 데이터베이스의 백업을 수행하는 데 필요한 권한을 제공합니다.
backup 역할은 데이터베이스 프로파일링을 실행할 때 존재하는 system.profile 컬렉션을 백업할 수 있는 추가 권한을 제공합니다.
호스트 및 포트 지정
--host 및 --port 를 사용하여 원격 인스턴스에 연결합니다.
mongodump \ --host=mongodb1.example.net \ --port=3017 \ --username=user \ --password="pass" \ --out=/opt/backup/mongodump-1
인증할 mongodump 명령에 사용자 이름 과 비밀번호를 지정합니다.
Oplog를 사용하여 백업 생성
--oplog 옵션은 백업 중에 oplog 항목을 수집하므로 데이터베이스를 백업 완료된 시점의 상태로 복원할 수 있습니다.
--oplog를 사용하면 mongodump 가 소스 데이터베이스 의 모든 데이터와 백업 의 시작부터 끝까지 모든 oplog 항목을 복사합니다. 이를 mongorestore --oplogReplay 와 함께 사용하여 mongodump 가 완료된 정확한 순간을 반영하는 백업 복원 .
다음을 사용하여 데이터베이스 복원 mongorestore
mongorestore 유틸리티는 실행 mongod 에 직접 연결하여 mongodump 에서 생성된 바이너리 백업 복원합니다. 기본값 으로 mongorestore 는 dump/ 디렉토리 에서 데이터베이스 백업 찾고 전체 백업 또는 하위 집합을 복원 할 수 있습니다.
참고
모든 MongoDB 컬렉션에는 기본적으로 UUID가 포함되어 있습니다. MongoDB가 컬렉션을 복원할 때 복원된 컬렉션은 본래의 UUID를 유지합니다. UUID가 없는 컬렉션을 복원하는 경우, MongoDB는 복원된 컬렉션에 대한 UUID를 생성합니다.
컬렉션 UUID에 대한 자세한 내용은 컬렉션을 참조하세요.
mongorestore 를 활성 mongod에 연결하려면 다음을 수행합니다.
mongorestore --uri <connection string> <path to the backup>
예시 를 들어 디렉토리 에서 복원 하려면 다음을 수행합니다.
mongorestore /opt/backup/mongodump-1
이렇게 하면 백업 localhost:27017의 mongod 인스턴스 로 복원됩니다.
액세스 제어
액세스 제어가 활성화된 restore 배포서버 로 데이터를 system.profile 복원 위해 역할 데이터에 컬렉션 데이터가 포함되어 있지 mongorestore 않고 --oplogReplay 옵션 없이 를 실행 경우 필요한 권한을 제공합니다.
백업 데이터에 system.profile 컬렉션 데이터가 포함되어 있거나 --oplogReplay:로 실행 경우 추가 권한이 필요합니다.
| 백업 데이터에 기본 제공 역할 |
|
|
호스트 및 포트 지정
기본값 으로 mongorestore 는 localhost:27017에 연결합니다. 다른 호스팅하다 또는 포트로 복원 하려면 --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
Oplog 파일을 사용하여 데이터 복원하기
mongodump 이(가) 실행 동안 발생하는 쓰기를 캡처하려면 --oplog을(를) 사용합니다. mongodump 는 실행 중 각 쓰기 (write) 에 대한 oplog 항목이 포함된 oplog.bson 파일 만듭니다. 복원할 때 --oplogReplay 로 해당 작업을 적용합니다.
예시는 mongodump 예시 및 mongorestore 예시를 참조하세요.
mongorestore --oplogReplay oplog.bson 에서 모든 데이터를 복원하지만 임의의 점 으로의 복원은 지원 하지 않습니다. 이를 사용하여 복원된 데이터가 mongodump --oplog 실행 중에 발생한 모든 쓰기를 반영하는지 확인합니다.
참고
--oplog 는 복제본 세트와 함께 사용하도록 설계되었습니다. 샤딩된 클러스터의 경우 샤딩된 환경의 일부인 복제본 세트를 포함하여 데이터베이스 덤프로 자체 관리 샤딩된 클러스터 백업을 참조하세요.
삽입하는 동안 문서 무결성을 검증하려면 --objcheck 를 --drop 사용하고, 복원하기 전에 각 컬렉션 삭제하려면 를 사용하세요.