注意
この機能は、 無料クラスターと Flex クラスターでは使用できません。使用できない機能の詳細については、Atlas 無料クラスターの制限 を参照してください。
Atlas を使用すると、クラウドバックアップ スナップショットをオブジェクトストレージサービスにエクスポートできます。
エクスポートされたスナップショットを Atlas クラスターに復元する方法については、「Atlas にアーカイブされたスナップショットをインポートする」を参照してください。
自動バックアップ ポリシーとスケジュールを管理する方法については、「バックアップ ポリシーの管理」を参照してください。
サポートされているストレージ サービス
Atlas は現在、次のオブジェクトストレージサービスをサポートしています。
Amazon Web Services S3バケット
Azure BLOB ストレージ
Google Cloud ストレージバケット
さらに、Atlas は PrivateLink を使用したAWS S3 バケットへのスナップショットのエクスポートをサポートしています。
Atlas がスナップショットをエクスポートする方法
個々のスナップショットを手動でエクスポートすることも、スナップショットを自動的にエクスポートするためのエクスポート ポリシーを設定することもできます。オブジェクト ストレージ サービスに固有の手順については、クラウドプロバイダーのエクスポート ページを参照してください。
自動エクスポートを設定するには、クラウドバックアップの予定にエクスポートポリシーを追加し、その頻度タイプを daily、weekly、monthly、または yearly に設定します。同じ頻度タイプの バックアップポリシー項目 がスナップショットを作成すると、Atlas はそのスナップショットを指定したオブジェクトストアにエクスポートします。
Atlas は、エクスポート用に新しい オブジェクトストア を追加したとき、およびエクスポートを開始したときに、オブジェクトストア上の /exported_snapshots/.permissioncheck パスに空のファイルをアップロードします。エクスポートが進むにつれて、オブジェクトストレージサービスに部分的な結果が表示される場合があります。
Atlas は、 Time to Live の設定に関係なく、ドキュメントをスナップショットで保持します。これらのドキュメントには、 Time to Live の期限を過ぎたスナップショットからアクセスできます。
スナップショットのエクスポート料金の詳細については、スナップショットのエクスポート コストを参照してください。
エクスポートされたデータ ファイル
各クラウドバックアップ スナップショットエクスポート ジョブは、スナップショット データを gzip 圧縮された拡張 JSON v2ドキュメントとしてオブジェクト ストアにアップロードします。これらのファイルは特定の順序でアップロードされません。各ファイルには、スナップショット内の単一のコレクションからのドキュメントのチャンクが含まれています。シャーディングされたクラスターの場合、Atlas はレプリカセット (シャード)ごとに別々のエクスポート ジョブを作成し、アップロードされたファイルのパスにレプリカセット名を指定します。
重要
エクスポートが進むにつれて、オブジェクトストレージサービスに部分的な結果が表示される場合があります。 エクスポート ジョブが失敗した場合:
Atlas は自動的にエクスポートを再試行しません。
Atlas はオブジェクトストア内の部分的なデータを削除しません。
Atlas は、各データファイルをオブジェクトストアの次のパスにアップロードします。
/exported_snapshots/<orgName>/<projectName>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/<dbName>/<collectionName>/<shardName>.<increment>.json.gz
Atlas は、パス内の各プレースホルダーを次の値で置き換えます。
| Atlas 組織の名前。 |
| Atlas プロジェクトの名前。 |
| Atlas クラスターの名前。 |
| スナップショットが作成された日付。 |
| エクスポート ジョブが作成されたときのタイムスタンプ。 |
| Atlas クラスター内のデータベースの名前。 |
| Atlas コレクションの名前。 |
| レプリカセットの名前。 シャーディングされたコレクションの場合、これはプライマリシャードの名前です。 |
| チャンクがアップロードされるにつれて増加するカウント。 |
エクスポートされたメタデータ ファイル
Atlas がスナップショット データのオブジェクト保存へのエクスポートを完了すると、Atlas は各コレクションに対して .complete という名前のメタデータ ファイルと metadata.json という名前のメタデータ ファイルをアップロードします。
スナップショットのエクスポート ジョブの各コレクションについて、Atlas は .complete という名前のメタデータ ファイルをオブジェクトストアの次のパスにアップロードします。
/exported_snapshots/<orgUUID>/<projectUUID>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/
注意
デフォルトでは、Atlas はメタデータ ファイルのパスに組織 UUID とプロジェクト UUID を使用します。UUID の代わりに組織名とプロジェクト名を使用するには、API 経由で useOrgAndGroupNamesInExportPrefix フラグを true に設定します。Atlas はスペースをアンダースコア(_)に置き換え、特別な処理を必要とする可能性のある文字と、パス内の組織名とプロジェクト名に避けるべき文字を削除します。
.complete メタデータ ファイルは JSON 形式で、次のフィールドが含まれています。
リクエスト ボディ フィールド | 説明 |
|---|---|
| Atlas 組織を識別する一意な 24 桁の 16 進数の文字列。 |
| Atlas 組織の名前。 |
| Atlas 組織内のプロジェクトを識別する一意な 24 桁の 16 進数の文字列。 |
| Atlas プロジェクトの名前。 |
| Atlas クラスターを識別する一意な 24 桁の 16 進数の文字列。 |
| Atlas プロジェクトの名前。 |
| スナップショットが作成された日付。 |
| オブジェクトストアにアップロードされたファイルの合計数。 |
| スナップショットがエクスポートされたクラスターのラベル。 |
| エクスポート ジョブの作成時に指定したカスタム データ(存在する場合)。 |
例
{ "orgId": "60512d6f65e4047fe0842095", "orgName": "org1", "groupId": "60512dac65e4047fe084220f", "groupName": "group1", "clusterUniqueId": "60512dac65e4047fe0842212", "clusterName": "cluster0", "snapshotInitiationDate": "2020-04-03T05:50:29.321Z" "totalFiles": 23, "labels": [ { "key": "key1", "value": "xyz" }, { "key": "key2", "value": "xyzuio" } ], "customData": [ { "key": "key1", "value": "xyz" }, { "key": "key2", "value": "xyzuio" } ] }
スナップショットのエクスポート ジョブの各コレクションについて、Atlas は metadata.json という名前のメタデータ ファイルをオブジェクトストアの次のパスにアップロードします。
/exported_snapshots/<orgUUID>/<projectUUID>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/<dbName>/<collectionName>/metadata.json
注意
デフォルトでは、Atlas はメタデータ ファイルのパスに組織 UUID とプロジェクト UUID を使用します。UUID の代わりに組織名とプロジェクト名を使用するには、API 経由で useOrgAndGroupNamesInExportPrefix フラグを true に設定します。Atlas はスペースをアンダースコア(_)に置き換え、特別な処理を必要とする可能性のある文字と、パス内の組織名とプロジェクト名に避けるべき文字を削除します。
メタデータ ファイルは JSON 形式で、次のフィールドが含まれています。
リクエスト ボディ フィールド | 説明 |
|---|---|
| コレクションを識別する、人間が判読可能なラベル。 |
| db.collection.getIndexes コマンドによって返される形式での、コレクション上のすべてのインデックスのリスト。 |
| コレクションに定義されている構成オプション。オプションの詳細については、「db.createCollection()」コマンドを参照してください。 |
| (任意)コレクションのタイプ。 このフィールドは時系列コレクションでのみサポートされ、値は Atlas は |
| コレクションのUUID。UUID の詳細については、「UUID」を参照してください。 |
例
{ "options":{ "viewOn":"othercol", "pipeline":[{"$project":{"namez":"$name"}}] }, "indexes":[], "collectionName":"viewcol", "type":"view" }
{ "options":{ "timeseries":{ "timeField":"timestamp", "granularity":"seconds", "bucketMaxSpanSeconds":{"$numberInt":"3600"} } }, "indexes":[], "collectionName":"timeseriescol", "type":"timeseries" }
{ "indexes": [ { "v":{"$numberInt":"2"}, "key":{ "_id":{"$numberInt":"1"} }, "name":"_id_" } ], "uuid":"342c40a937c34c478bab03de8ce44f3e", "collectionName":"somecol" }
制限
次のアクションは実行できません。
フォールバック スナップショットのエクスポート。
スナップショットごとに複数のアクティブなエクスポートがある。
ビューコレクション 、またはシステムコレクションをエクスポートします。ただし、
<database>.system.jsコレクションは除きます。Azure または Google Cloud Platform クラスターのプライベートエンドポイントを介したスナップショットのエクスポート (プライベートエクスポート)。
必要なアクセス権
Atlas でクラウドバックアップのエクスポート予定を作成または管理するか、クラウドバックアップのエクスポートバケットを構成するには、プロジェクトに対して
Project Backup ManagerまたはProject Ownerが必要です。クラウドバックアップのエクスポートジョブを作成または管理するには、プロジェクトに対する
Project Backup Export OperatorまたはProject Ownerアクセス権が必要です。クラウド バックアップ オブジェクト ストレージ プライベートエンドポイントを作成または管理するには、プロジェクトへの
Project Ownerアクセスが必要です。
クラウドプロバイダーへのエクスポート
クラウドバックアップ スナップショットをエクスポートする手順は、オブジェクトストレージ サービスによって異なります。Atlas アクセスを設定し、エクスポート バケットを構成し、スナップショットをエクスポートするには、クラウド プロバイダーのページを参照してください。
PrivateLink を介してを含む、Amazon Web Services S3 バケットへのスナップショットのエクスポート。
スナップショットを Azure Blob ストレージ コンテナにエクスポートします。
スナップショットを Google Cloud Platform ストレージ バケットにエクスポートします。