Docs Menu
Docs Home
/ /
/ / /

보관된 데이터 복원

중요

Flex 클러스터 및 서버리스 인스턴스에서 사용할 수 없는 기능입니다.

현재 Flex 클러스터 및 서버리스 인스턴스는 이 기능 지원 하지 않습니다. 자세히 학습 Atlas Flex 제한 사항서버리스 인스턴스 제한을 참조하세요.

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

참고

아카이브에서 복원 하려는 데이터의 양에 대해 클러스터 적절히 프로비저닝되었는지 확인합니다. 그렇지 않으면 복원 중이나 후에 공간이 부족 실행 위험이 있습니다. oplog 크기 설정에 대한 추가 기술 지침 이나 Atlas cluster 의 공간 문제 해결에 대한 자세한 내용은 지원팀에 문의하세요.

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

이 접근 방식은 파티션 수가 많은 대규모 데이터 세트(약 1TB 데이터)에는 권장되지 않습니다.

보관된 데이터를 Atlas cluster 로 복원 다음 단계를 수행하세요.

1

복원 하려는 보관된 데이터가 포함된 컬렉션 과 연결된 Online 보관 일시 중지합니다.

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

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")
}

단계에서 및 필드를 기반으로 문서를 복원 item source $merge 한다고 가정해 보겠습니다. 다음 코드 샘플 단계를 사용하여 $merge 해당 기준에 따라 보관된 데이터를 복원 예시 보여줍니다.

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

이 코드는 다음 로직을 사용합니다.

  • 보관된 문서 itemsource 필드의 Atlas cluster 에 있는 문서 와 일치하는 경우, Atlas Atlas cluster 의 문서 사본이 보관된 버전보다 최신이기 때문에 Atlas 기존 문서 를 클러스터 에 유지합니다.

  • 보관된 문서 Atlas cluster 의 어떤 문서 와도 일치하지 않는 경우, Atlas 해당 문서 Atlas cluster 의 지정된 컬렉션 에 삽입합니다.

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

다음 코드 샘플 단계를 $sort 추가합니다.

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"
}
}
], "cursor": { }
}, { "background": true }
)

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

참고

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

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

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

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

4

Atlas 클러스터의 데이터를 확인하고 온라인 아카이브를 삭제합니다.

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

참고

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

돌아가기

온라인 아카이브 백업

이 페이지의 내용