注意
此功能不适用于免费集群和 Flex 集群。要详细学习;了解哪些功能不可用,请参阅Atlas免费集群限制。
Atlas允许您将云备份快照导出到对象存储服务。
要了解如何将导出的快照恢复回 Atlas 集群,请参阅将存档的快照导入 Atlas。
要了解如何管理自动备份策略和计划,请参阅管理备份策略。
支持的存储服务
Atlas目前支持以下对象存储服务:
AWS S3 存储桶
Azure Blob 存储
Google Cloud Storage 存储桶
此外,Atlas支持使用 PrivateLink 将快照导出到 AWS S3 存储桶。
Atlas 如何导出快照
您可以手动导出单个快照,也可以设置导出策略来自动导出快照。有关对象存储服务的具体步骤,请参阅 云提供商的导出页面。
要设置自动导出,请向您的云备份定时安排添加导出策略,并将其频率类型设置为 daily、weekly、monthly 或 yearly。当具有相同频率类型的 备份策略项 创建快照时,Atlas 会将该快照导出到您指定的对象存储。
当您添加新的 对象存储 以进行导出和启动导出时,Atlas 会将一个空文件上传到对象存储中的 /exported_snapshots/.permissioncheck 路径。随着导出的进行,您可能会在对象存储服务中看到部分结果。
无论“生存时间”设置如何, Atlas都会将文档保留在快照中。您可以在超过“生存时间”截止时间后的快照中访问权限这些文档。
要学习;了解快照导出定价,请参阅快照导出成本。
导出的数据文件
每个云备份快照导出作业都会将快照数据以 gzip 压缩的 Extended 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 将快照数据导出到对象存储后,还会为每个集合上传命名为 .complete 和 metadata.json 的元数据文件:
对于快照导出作业中的每个集合,Atlas 会将命名为 .complete 的元数据文件上传到对象存储中的以下路很:
/exported_snapshots/<orgUUID>/<projectUUID>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/
注意
默认情况下,Atlas 在元数据文件的路径中使用组织和项目 UUID。要使用组织和项目名称而不是 UUID,请通过 API 将 useOrgAndGroupNamesInExportPrefix 标志设置为 true。Atlas 会用下划线 (_) 替换所有空格,并从路径中的组织和项目名称中删除任何可能需要特殊处理的字符和应避免使用的字符。
.complete 元数据文件采用 JSON 格式,包含以下字段:
请求主体字段 | 说明 |
|---|---|
| 唯一的 24 位十六进制数字字符串,用于标识 Atlas 组织。 |
| Atlas 组织的名称。 |
| 唯一的 24 位十六进制数字字符串,用于标识 Atlas 组织中的项目。 |
| Atlas 项目的名称。 |
| 用于标识 Atlas 集群的唯一的 24 位十六进制数字字符串。 |
| 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,请通过 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" }
限制
您无法执行以下操作:
每个快照都有多个活动导出。
通过 私有端点(私有导出)导出 Azure 或 Google Cloud Platform 集群的快照。
必需的访问权限
要在 Atlas 中创建或管理云备份导出定时安排或配置云备份导出存储桶,您必须具有项目的
Project Backup Manager或Project Owner。要创建或管理云备份导出作业,您必须具有项目的
Project Backup Export Operator或Project Owner访问权限。要创建或管理云备份对象存储私有端点,您必须具有对项目的
Project Owner访问权限。
导出到您的云提供商
导出云备份快照的步骤取决于您的对象存储服务。要设置 Atlas 访问、配置导出存储桶并导出快照,请参阅云提供商的页面:
将快照导出到 AWS S3 存储桶,包括通过 PrivateLink 导出。
将快照导出到 Azure Blob Storage 容器。
将快照导出到 Google Cloud Storage 存储桶。