문서 메뉴

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

MongoDB 백업에서 복제 세트 복원하기

이 페이지의 내용

  • 데이터베이스를 단일 노드 복제본 세트로 복원하기
  • 복제본 세트에 멤버 추가

이 절차에서는 MongoDB 데이터를 가져와서 새 복제본 세트로 복원하는 프로세스를 간략하게 설명합니다. 프로덕션 백업에서 테스트 배포서버를 시딩하거나 재해 복구의 일환으로 이러한 방식을 사용합니다.

중요

mongorestore 를 사용하여 mongodump 로 만든 데이터를 사용하여 데이터베이스 파일을 복원할 수도 있습니다. 자세한 내용 은 MongoDB 도구를 사용한 백업 및 복원 을 참조하세요.

1

백업 파일은 파일 시스템 스냅샷 에서 가져올 수 있습니다. MongoDB Cloud Manager저장된 스냅샷특정 시점 스냅샷에 대한 MongoDB 데이터베이스 파일을 생성합니다. MongoDB Enterprise Advanced에서 사용할 수 있는 온프레미스 솔루션인 Ops Manager의 경우, Ops Manager 백업 개요도 참조하세요.

암호화된 스토리지 엔진에 대한 고려 사항
AES256-GCM 암호화 모드를 사용하는 암호화 스토리지 엔진의 경우 AES256-GCM이 모든 프로세스가 키와 함께 고유한 카운터 블록 값을 사용하도록 요구합니다. AES256-GCM 암호로 구성된 암호화 스토리지 엔진 encrypted 스토리지 엔진의 경우
  • 핫 백업에서 복원
    4.2부터 "hot" 백업을 통해 가져온 파일에서 복원하는 경우(즉, mongod가 실행 중일 때), MongoDB는 시작 시 "더티" 키를 감지하고 데이터베이스 키를 자동으로 롤오버하여 IV(초기화 벡터) 재사용을 방지할 수 있습니다.
  • 콜드 백업에서 복원

    그러나 "cold" 백업을 통해 가져온 파일에서 복원하는 경우(즉, mongod가 실행 중이 아닌 경우), MongoDB는 시작 시 "더티" 키를 감지할 수 없으며, IV를 재사용하면 기밀성 및 무결성 보증이 무효화됩니다.

    4.2부터 콜드 파일 시스템 스냅샷에서 복원한 후 키 재사용을 방지하기 위해 MongoDB는 새로운 명령줄 옵션 --eseDatabaseKeyRollover를 추가합니다. --eseDatabaseKeyRollover 옵션으로 시작하면 mongod 인스턴스는 AES256-GCM 암호로 구성된 데이터베이스 키를 롤오버하고 종료합니다.

  • 일반적으로 MongoDB Enterprise 4.2+에 파일 시스템 기반 백업을 사용하는 경우 가능하면 "핫" 백업 기능을 사용합니다.

  • MongoDB Enterprise 버전 4.0 이하에서 AES256-GCM 암호화 모드를 사용하는 경우, 데이터 파일의 복사본을 만들거나 파일 시스템 스냅샷("hot" 또는 "cold")에서 복원하지 말고 하지 마세요.

2

파일 시스템 백업(또는 local 데이터베이스가 포함된 백업)에서 복원하는 경우 local 데이터베이스를 삭제합니다.

또한 스냅샷을 생성할 때 사용한 것과 동일한 시작 옵션 을 지정해야 합니다.

mongod --dbpath /data/db <startup options>

mongoshmongod 인스턴스에 연결하고 local 데이터베이스를 삭제합니다.

use local
db.dropDatabase()

독립형을 종료합니다.

3

mongod 인스턴스를 새 단일 노드 복제본 세트로 시작합니다. --dbpath 옵션을 사용하여 백업 데이터 파일의 경로를 지정하고 --replSet을 사용하여 복제본 세트의 이름을 지정합니다. config 서버 복제본 세트(CSRS)의 경우 --configsvr 옵션을 포함합니다. 배포서버에 적합한 다른 옵션을 포함할 수 있습니다.

또한 스냅샷을 생성할 때 사용한 것과 동일한 시작 옵션 을 지정해야 합니다.

참고

복제본 세트 멤버가 다른 호스트에서 실행되거나 원격 클라이언트가 인스턴스에 연결하도록 하려면 net.bindIp 설정(또는 --bind_ip)을 지정해야 합니다.

경고

로컬 호스트가 아닌(예: 공개적으로 액세스할 수 있는) IP 주소에 바인딩하기 전에 클러스터를 무단 액세스로부터 보호해야 합니다. 보안 권장 사항의 전체 목록은 보안 체크리스트 를 참조하세요. 최소한 인증을 활성화 하고 네트워크 인프라를 강화하는 것을 고려하세요.

mongod --dbpath /data/db --replSet <replName> <startup options>

참고

버전 3.6에 새로 추가됨:

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

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

4

mongod 중 하나가 실행 중인 동일한 머신(이 튜토리얼에서는 mongodb0.example.net)에서 mongosh 을(를) 시작합니다. 기본 포트 27017 에서 로컬 호스트를 수신 대기 중인 mongod 에 연결하려면 다음을 실행하기만 하면 됩니다.

mongosh

경로에 따라 mongosh 바이너리의 경로를 지정해야 할 수도 있습니다.

mongod 가 기본 포트에서 실행되고 있지 않은 경우 mongosh 에 대해 --port 옵션을 지정합니다.

5

복제본 세트의 유일한 멤버에서 rs.initiate()를 사용합니다.

rs.initiate( {
_id : <replName>,
members: [ { _id : 0, host : <host:port> } ]
})

MongoDB는 현재 멤버로 구성되며 기본 복제본 세트 구성을 이용하는 세트를 시작합니다.

MongoDB에서는 두 가지 방법으로 복제본 세트의 세컨더리 멤버를 복원할 수 있습니다.

참고

데이터베이스가 큰 경우 초기 동기화를 완료하는 시간이 오래 걸릴 수 있습니다. 대규모 데이터베이스의 경우 데이터베이스 파일을 각 호스트에 복사하는 것이 바람직할 수 있습니다.

다음 작업 순서를 사용하여 MongoDB 데이터 파일을 직접 복사하여 복제본 세트의 추가 멤버에 복원된 데이터를 '시딩'합니다.

1

--shutdown 또는 db.shutdownServer()를 사용하여 정상적으로 종료할 수 있습니다.

2

프라이머리 데이터 디렉토리를 복제본 세트의 다른 멤버의 dbPath에 복사합니다.

3
4

mongosh 프라이머리 에 연결된 세션에서 메서드를 사용하여 복제본 세트에 세컨더리 를 rs.add() 추가합니다. 복제본 세트 배포에 대한 자세한 내용은 복제본 세트 배포를 참조하세요.

다음의 작업 순서로 기본 초기 동기화 작업을 사용하여 복제본 세트의 추가 구성원에 복원된 데이터로를 '시딩'할 수 있습니다.

1

예를 들어 복제본 세트 멤버에 /data/dbstorage.dbPath 또는 --dbpath가 있는 경우 반드시 기존 디렉토리가 존재하고 비어 있는지 확인해야 합니다.

2
3

mongo 셸을 사용하여 프라이머리에 연결하고 rs.add()를 사용하여 복제본 세트에 각 세컨더리를 추가합니다.

복제본 세트에 멤버를 추가하면 초기 동기화를 통해 프라이머리의 데이터를 새 멤버로 복사합니다.

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