문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ /

보관된 데이터 복원

이 페이지의 내용

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

중요

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

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

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

참고

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

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

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

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

1

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

2

Online Archive에 연결하려면 Archive Only 연결 문자열을 사용해야 합니다. 자세한 내용은 Online Archive에 연결을 참조하세요.

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 cluster로 복원하기 위한 $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 cluster의 문서와 일치하는 경우, Atlas cluster의 문서 사본이 아카이브의 문서 사본보다 더 최근의 것이므로 Atlas는 기존 문서를 클러스터에 유지합니다. 보관된 문서가 Atlas cluster의 어떤 문서와도 일치하지 않는 경우, Atlas는 해당 문서를 Atlas cluster의 지정된 컬렉션에 삽입합니다.

데이터를 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로 데이터를 다시 마이그레이션하는 동안 문제가 발생하면 지원팀에 문의하세요.

돌아가기

온라인 아카이브 백업

이 페이지의 내용