Docs Menu
Docs Home
/
MongoDB Atlas
/ /

보관된 데이터 복원

이 페이지의 내용

  • 필요한 액세스 권한
  • 절차

중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

서버리스 인스턴스는 현재 이 기능을 지원하지 않습니다. 자세한 내용은 서버리스 인스턴스 제한 사항을 참조하세요.

보관된 데이터를 Atlas 클러스터로 복원할 수 있습니다. Atlas Data Federation이 $merge 파이프라인 단계에 제공하는 대체 구문을 사용하여 데이터를 동일한 Atlas 프로젝트 내의 동일하거나 다른 Atlas 클러스터, 데이터베이스 또는 컬렉션으로 다시 이동할 수 있습니다.

참고

보관된 데이터를 복원하는 도중이나 이후에 공간 실행 부족하지 않도록 아카이브에서 복원할 데이터의 양에 따라 클러스터 를 적절히 프로비저닝해야 합니다. oplog 크기 설정에 대한 추가 기술 지침 이나 Atlas cluster 의 공간 문제 해결에 대한 자세한 내용은 지원팀 에 문의하세요.

이 페이지에서는 $merge 파이프라인 단계 또는 MongoDB 도구를 사용하여 보관된 데이터를 복원 하는 방법을 설명합니다.

이 절차를 수행하려면 프로젝트에 대해 Project Data Access Admin 이상의 액세스 권한이 있어야 합니다.

데이터 세트가 작은 경우 $merge 단계를 사용하여 보관된 데이터를 Atlas cluster 로 다시 이동할 수 있습니다. 이 접근 방식은 파티션 수가 많은 대규모 데이터 세트(약 1TB의 데이터)에는 권장되지 않습니다.

1

자세한 내용은 보관 일시 중지 및 다시 시작을 참조하세요.

2

Online 보관 에 연결하려면 Archive Only 연결 string 을 사용해야 합니다. 학습 내용은 Connect to Online 보관(온라인 아카이브에 연결하기)를 참조하세요.

3

Atlas 클러스터로 데이터를 다시 이동하기 위한 $merge 파이프라인 단계 구문 및 사용법에 대해 자세히 알아보려면 $merge 파이프라인 단계를 참조하세요.

예시

S3 아카이브에 있는 다음 문서를 가정해 보겠습니다.

{
"_id" : 1,
"item": "cucumber",
"source": "nepal",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 2,
"item": "miso",
"source": "canada",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 3,
"item": "oyster",
"source": "luxembourg",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 4,
"item": "mushroom",
"source": "ghana",
"released": ISODate("2016-05-18T16:00:00Z")
}

이 문서를 Atlas 클러스터로 복원하기 위한 $merge 구문이 $merge 단계에서 itemsource 필드를 기반으로 문서를 식별한다고 가정하겠습니다.

db.<collection>.aggregate([
{
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>",
"db": "<db-name>",
"coll": "<collection-name>"
}
},
"on": [ "item", "source" ],
"whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
])

이 예에서, 보관된 문서가 이 두 필드에서 Atlas 클러스터의 문서와 일치하는 경우, Atlas 클러스터의 문서 사본이 아카이브의 문서 사본보다 더 최근의 것이므로 Atlas는 기존 문서를 클러스터에 유지합니다. 보관된 문서가 Atlas 클러스터의 어떤 문서와도 일치하지 않는 경우, Atlas는 해당 문서를 Atlas 클러스터의 지정된 컬렉션에 삽입합니다.

데이터를 Atlas 클러스터로 다시 복원할 때 보관된 데이터에 중복된 _id 필드가 있을 수 있습니다. 이 예제에서는 $sort 단계를 _idreleased 필드에서 $merge 단계 이전에 정렬하여 해결해야 할 중복이 있는 경우 Atlas가 최근 날짜가 있는 문서를 선택하도록 할 수 있습니다.

참고

on 필드가 여러 개 있는 경우 on 식별자 필드에 복합 고유 인덱스 를 만들어야 합니다.

db.<collection>.createIndex( { item: 1, source: 1 }, {
unique: true } )

또는 각 on 식별자 필드에 대해 하나씩 임시 컬렉션에 병합을 순차적으로 지정합니다. 그런 다음 클러스터의 연결 string 을 사용하여 임시 컬렉션의 데이터를 대상 컬렉션에 병합합니다. 여전히 각 on 식별자 필드에 대해 고유 인덱스를 만들어야 합니다.

집계 단계는 background 플래그를 true 로 설정하여 배경 에서 실행 수 있습니다. mongosh 에서 이 명령을 실행 하려면 db.runCommand 을 사용합니다.

db.runCommand(
"aggregate": "<collection>",
"pipeline": [
{
$sort: {
"_id": 1,
"released": 1,
}
},
{
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>",
"db": "<db-name>",
"coll": "<collection-name>"
}
},
"on": [ "item", "source" ],
"whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
], {"background": true}
)

중복 필드 해결에 대해 자세히 알아보려면 $merge 고려 사항을 참조하세요.

4

자세한 내용은 온라인 아카이브 삭제를 참조하세요.

참고

Atlas cluster 로 데이터를 다시 마이그레이션하는 실행 문제가 발생하는 경우 지원팀에 문의 하세요 .

돌아가기

온라인 아카이브 백업

이 페이지의 내용