Docs Menu
Docs Home
/
MongoDB Atlas
/ /

アーカイブされたデータの復元

項目一覧

  • 必要なアクセス権
  • 手順

重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。詳細については、 サーバーレスインスタンスの制限を参照してください。

アーカイブされたデータは Atlas クラスターに復元できます。 Atlas Data Federation が$mergeパイプライン ステージに対して提供する代替構文を使用して、同じ Atlas プロジェクト内の同じまたは異なる Atlas クラスター、データベース、またはコレクションにデータを移動できます。

注意

クラスターがアーカイブから復元されるデータ量に十分にプロビジョニングされていることを確認し、アーカイブ データの復元中または復元後にスペースが不足しないようにしてください。 oplog のサイズ設定に関する追加の技術ガイダンスや、Atlas クラスターのスペースの問題のトラブルシューティングについては、サポートにお問い合わせください 。

このページでは、 $mergeパイプライン ステージまたは MongoDB ツールを使用してアーカイブ データを復元する方法について説明します。

この手順に従うには、プロジェクトに対するProject Data Access Admin以上のアクセス権が必要です。

データセットが小さい場合は、 $mergeステージを使用してアーカイブ データを Atlas クラスターに移動できます。 このアプローチは、多数のパーティションを持つ大規模なデータセット(約1 TB のデータ)には推奨されません。

1

詳細については、「アーカイブの一時停止と再開」を参照してください。

2

Atlas Online Archive に接続するには、{0 接続 を使用する必要があります。Archive Onlystring詳細については、「 Atlas 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")
}

$mergeこれらのドキュメントを Atlas クラスターに復元するためのitem 構文では、source $mergeステージ中に フィールドと フィールドに基づいてドキュメントが識別されます。

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

この例では、アーカイブされたドキュメントが Atlas クラスターの 2 つのフィールドにあるドキュメントと一致する場合、Atlas は既存のドキュメントをクラスターに保持します。Atlas クラスター上のドキュメントのコピーはアーカイブ内のドキュメントのコピーよりも新しいためです。 。 アーカイブされたドキュメントが Atlas クラスター内のどのドキュメントとも一致しない場合、Atlas は Atlas クラスター上の指定されたコレクションにドキュメントを挿入します。

Atlas クラスターにデータを復元する場合、アーカイブされたデータに重複する_idフィールドが含まれる場合があります。 この例では、 ステージの前に フィールドと $mergeフィールドでソートするための ステージを含めることができ、解決する重複がある場合に Atlas$sort が最新の日付を持つドキュメントを選択するようにします。_idreleased

注意

複数のonフィールドがある場合は、 on識別子フィールドに複合一意のインデックスを作成する必要があります。

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

または、一時コレクションに対して、 on識別子フィールドごとに 1 つずつ、マージを順番に指定します。 次に、クラスターの 接続文字列を使用して、一時コレクションのデータをターゲット コレクションにマージします。 引き続き、各 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 Online Archive の削除」を参照してください。

注意

Atlas クラスターへのデータの移行中に問題が発生した場合は、サポート にお問い合わせください。

戻る

Atlas Online Archive のバックアップ