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