이 튜토리얼에서는 및 를 사용하여 백업을 mongodump mongorestore 만들고 데이터를 복원하는 방법을 다룹니다.
자체 호스팅 배포의 백업을 관리형 MongoDB Atlas 배포로 복원하려면 mongorestore를 사용하여 시드를 참조하세요.
고려 사항
배포
mongorestore 및 유틸리티는 BSON mongodump 데이터 덤프와 함께 작동하며 소규모 배포의 백업을 만드는 데 유용합니다. 복원력이 뛰어나고 중단 없는 백업을 위해서는 파일 시스템 스냅샷 또는 블록 수준 디스크 스냅샷을 MongoDB Atlas 의 클라우드 백업과 함께 사용하세요.
참고
MongoDB Atlas로 샤딩된 클러스터 백업
mongodump 및 mongorestore 를 샤딩된 클러스터의 백업 전략으로 사용하려면 데이터베이스 덤프를 사용하여 자체 관리형 샤드 클러스터 백업을 참조하세요.
또한 샤딩된 클러스터는 샤드 간 트랜잭션의 원자성 보장을 유지하는 다음과 같은 조정된 백업 및 복원 프로세스 중 하나를 사용할 수 있습니다.
성능에 미치는 영향
mongodump 및 는 mongorestore 실행 mongod 인스턴스 와 상호 작용 때문에 데이터베이스 성능에 영향 수 있습니다. 이 도구는 트래픽을 생성하고 데이터베이스 가 메모리를 통해 모든 데이터를 읽도록 합니다. MongoDB 자주 액세스하지 않는 데이터를 읽으면 자주 액세스하는 데이터를 제거하여 데이터베이스의 일반 워크로드 성능을 저하시킵니다.
MongoDB 도구를 사용하여 데이터를 백업할 때는 다음 지침을 따르세요.
파일에 레이블을 지정하여 백업 콘텐츠와 백업 시간을 식별합니다.
및 가
mongodumpmongorestore성능에 영향 허용할 수 없는 경우,MongoDB Atlas 의 파일 시스템 스냅샷 또는 클라우드 백업과같은 대안을 사용하세요.mongodump가 복제본 세트 의 일관적인 백업--oplog수행할 수 있도록 하려면 옵션을 사용하여 백업 작업 중에 수신된 쓰기를 캡처하거나 백업 기간 동안 복제본 세트 에 대한 모든 쓰기를 중지해야 합니다.샤딩된 클러스터 복제본 세트에 대한 자세한 내용은 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.
백업을 테스트 배포서버 로 복원하여 확인합니다.
샤딩된 클러스터 에서 백업 불일치를 줄이려면 백업 중에 밸런서, 모든 쓰기 (write) 작업 및 모든 스키마 변환을 중지합니다.
출력 형식
mongorestore 및 는 여러 BSON 파일에 대한 단일 파일 대안인 아카이브 파일 로 데이터를 출력할 수 있습니다. 보관 파일은 비연속적인 파일 쓰기를 지원 특수 목적 형식입니다. MongoDB 에서 백업과 MongoDB 로 복원을 동시에 활성화 . 보관 파일은 백업 및 복원 중에 디스크 I/O를 최적화하기도 mongodump 합니다.
보관 파일을 표준 출력(stdout)에 쓰기 (write) 수도 있습니다. 표준 출력에 기록하면 네트워크를 통한 데이터 마이그레이션 , 디스크 I/O 감소, MongoDB 도구와 스토리지 엔진 모두의 동시성 향상이 가능합니다.
아카이브 파일에 대한 자세한 내용은 옵션을 --archive 참조하세요.
오래된 백업
백업은 데이터베이스의 현재 상태에 대한 스냅샷을 제공합니다. 백업에서 복원하는 경우 복원된 데이터베이스에는 백업 이후에 변경된 내용이 포함되지 않으므로 데이터가 손실될 수 있습니다.
절차
다음을 사용하여 데이터베이스 백업 mongodump
유틸리티는 실행 에 연결하여 데이터를 mongod 백업합니다. 전체 서버, 데이터베이스 또는 컬렉션 백업 하거나 mongodump 쿼리 사용 하여 컬렉션 의 일부를 백업할 수 있습니다 . 는mongodump 데이터베이스 의 콘텐츠를 local 출력에서 제외합니다.
인수를 지정하지 않으면 mongodump 이(가) 포트 27017 에서 로컬 시스템의 MongoDB 인스턴스 에 연결되고 현재 디렉토리 에 dump/ (이)라는 데이터베이스 백업 생성됩니다.
mongodump
호스팅하다 및 포트를 지정하려면 다음 중 하나를 사용합니다:
--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/). 여러 번 실행 전에 출력 폴더를 백업하거나 이름을 변경하세요.
필요한 액세스 권한
액세스 mongodump 제어가 활성화된 MongoDB deployment 대해 를 실행 하려면 백업할 각 데이터베이스 에 대해 backup 조치 수행할 find 수 있는 권한이 있어야 합니다. 내장 역할 모든 데이터베이스의 백업 수행하는 데 필요한 권한을 제공합니다.
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 모든 oplog 항목을 복사합니다. 이를 와 함께 사용하여mongodump mongorestore --oplogReplay 가 완료된 정확한 순간을 반영하는 백업 복원 mongodump .
다음을 사용하여 데이터베이스 복원 mongorestore
mongorestore 유틸리티는 실행 에 직접 mongodump mongod 연결하여 에서 생성된 바이너리 백업 복원합니다. 기본값 으로 는 디렉토리 에서 데이터베이스mongorestore 백업 찾고 dump/ 전체 백업 또는 하위 집합을 복원 할 수 있습니다.
참고
모든 MongoDB 컬렉션에는 기본적으로 UUID가 포함되어 있습니다. MongoDB가 컬렉션을 복원할 때 복원된 컬렉션은 원래의 UUID를 유지합니다. UUID가 없는 collection을 복원할 때 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 는 복제본 세트와 함께 사용하도록 설계되었습니다. 샤딩된 클러스터의 경우 샤딩된 환경의 일부인 복제본 세트를 포함하여 데이터베이스 덤프로 자체 관리 샤딩된 클러스터 백업을 참조하세요.
--drop를 사용하여 복원하기 전에 각 컬렉션 삭제합니다.