Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

MongoDB 도구를 사용하여 자체 관리형 배포서버 백업 및 복원

이 페이지의 내용

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

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

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

완전한 관리형 백업 메서드를 위해서는 클러스터의 클라우드 서비스 제공자의 네이티브 스냅샷 기능을 사용하여 로컬화된 백업 스토리지를 제공하는 MongoDB Atlas의 클라우드 백업을 사용합니다.

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

참고

MongoDB Atlas로 샤딩된 클러스터 백업

mongodumpmongorestore를 샤딩된 클러스터의 백업 전략으로 사용하려면 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.

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

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

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

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

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

  • mongodump가 복제 세트의 일관된 백업을 수행하려면 --oplog 옵션을 사용하여 백업 작업 중에 받은 쓰기를 캡처하거나 백업하는 동안 복제 세트에 대한 모든 쓰기를 중지해야 합니다.

    샤딩된 클러스터 복제본 세트에 대한 자세한 내용은 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.

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

  • 샤딩된 클러스터 백업에서 불일치가 발생할 가능성을 줄이려면 백업하는 동안 밸런서, 모든 쓰기 작업, 스키마 변환 작업을 중지해야 합니다.

다음도 참조하세요.

자체 관리 배포를 위한 백업 방법MongoDB Atlas 클라우드 백업을 참조하여 MongoDB 인스턴스 백업에 대한 자세한 내용을 확인하세요. 또한 MongoDB Database Tools에 대한 다음의 참조 문서도 확인하세요.

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

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

보관 파일에 대한 자세한 내용은 --archive 옵션을 참조하세요.

참고

MongoDB Atlas로 샤딩된 클러스터 백업

mongodumpmongorestore를 샤딩된 클러스터의 백업 전략으로 사용하려면 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.

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

mongodump(은)는 출력에서 local 데이터베이스의 콘텐츠를 제외합니다.

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

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

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>

mongodumpmongodb.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/ 폴더)의 파일이 더 이상 필요하지 않은지 확인하거나, 폴더 또는 파일 이름을 변경하세요.

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

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

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

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

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

참고

MongoDB Atlas로 샤딩된 클러스터 백업

mongodumpmongorestore를 샤딩된 클러스터의 백업 전략으로 사용하려면 데이터베이스 덤프를 사용하여 자체 관리 샤딩된 클러스터 백업을 참조하세요.

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

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

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

system.profile

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

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

--oplogReplay

--oplogReplay를 사용하여 실행하려면 anyResourceanyAction이 있는 사용자 정의 역할을 생성하십시오.

--oplogReplaymongorestore를 실행해야 하는 사용자에게만 부여하세요.

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 인스턴스로 가져옵니다.

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 옵션을 고려할 수도 있습니다.

기본적으로 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

돌아가기

스냅샷 사용