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

MongoDB 백업에서 자체 관리형 복제본 세트 복원하기

이 페이지의 내용

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

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

중요

또한 mongorestore를 사용해 mongodump로 생성한 데이터를 사용하는 데이터베이스 파일을 복원할 수도 있습니다. 자세한 내용은 MongoDB 도구를 사용하여 자체 관리형 배포 백업 및 복원을 참조하세요.

1

백업 파일은 파일 시스템 스냅샷에서 가져올 수 있습니다. MongoDB Cloud Manager저장된 스냅샷특정 시점 스냅샷에 대한 MongoDB database 파일을 생성합니다. 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 암호로 구성된 데이터베이스 키를 롤오버하고 종료합니다.

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>

참고

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

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

4

mongod 중 하나(이 튜토리얼에서는 mongodb0.example.net)가 실행 중인 동일한 머신에서는 mongosh를 시작합니다. mongod27017의 기본 포트에서 로컬 호스트를 수신 대기 중인 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 도구 사용