注意
此功能不适用于 M0 免费集群和 Flex 集群。要详细了解哪些功能不可用,请参阅 Atlas M0(免费集群)限制。
Atlas允许您将云备份快照导出到对象存储服务。
要了解如何管理自动备份策略和计划,请参阅管理备份策略。
支持的存储服务
Atlas目前支持以下对象存储服务:
AWS S3 存储桶
Azure Blob 存储
Google Cloud Storage 存储桶
Atlas 如何导出快照
注意
如果您将备份导出到Amazon Web Services S3,则可以启用Amazon Web Services S3 对象锁,以确保合规和安全性所需的备份文件的不变性。对象锁可防止删除和修改导出的备份文件。
您可以手动导出单个快照,也可以设置导出策略来自动导出快照。对于自动导出,您必须在导出策略中指定频率:
每日
每周
每月
每年
Atlas 可自动导出频率类型与导出频率匹配的任何备份快照。导出的结果是该快照的完整备份。
例子
请考虑以下内容:
设立每周和每月快照计划的备份策略
设置每月导出频率的导出策略
假设在月底,每周和每月的快照发生在同一天。将有 4 个快照,其中 3 个是每周快照,第四个快照虽然被 Atlas 视为每周快照,但它也是每月快照,因为发生在同一天。Atlas 只会导出每月快照,因为导出频率与该快照的快照频率匹配。要同时导出每周快照,请将导出策略更新为同时导出每周快照。如果导出频率设置为每周,Atlas 将导出全部 4 个快照。
随着导出的进行,您可能会在对象存储服务中看到部分结果。
无论“生存时间”设置如何, Atlas都会将文档保留在快照中。您可以在超过“生存时间”截止时间后的快照中访问权限这些文档。
Atlas 对从 AWS S3 存储桶、Azure Blob Storage 容器或 Google Cloud Storage 存储桶导出的每 GB 数据收取 $.125 的费用,此外还需支付云服务本身产生的数据传输费用。Atlas 会在导出之前压缩数据。要估算导出的数据量,请将集群中每个数据库的 dataSize 相加。此总数应与导出数据的未压缩大小一致,这将是 Atlas 因数据导出操作而产生的最大成本。
Atlas 上传的文件
当您执行以下操作时,Atlas 会将空文件上传到 /exported_snapshots/.permissioncheck:
完成导出后,Atlas 会为每个集合上传名为 .complete 和 metadata.json 的元数据文件。
如果导出作业失败:
Atlas 不会自动尝试再次导出。
Atlas不会删除对象存储中的任何部分数据。
导出的数据格式
Atlas上传经过gzip 压缩的扩展JSON2 (v) 文档。Atlas不会按顺序上传这些文档。 以下是对象存储上文件的路径:
/exported_snapshots/<orgName>/<projectName>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/<dbName>/<collectionName>/<shardName>.<increment>.json.gz
其中:
| 您的 Atlas 组织的名称。 |
| 您的 Atlas 项目的名称。 |
| 您的 Atlas 集群的名称。 |
| 拍摄快照的日期。 |
| 创建导出作业时的时间戳。 |
| Atlas 集群中数据库的名称。 |
| Atlas 集合的名称。 |
| 副本集的名称。 对于分片的集合,这是主分片的名称。 |
| 上传数据段时递增的计数。从 |
限制
您无法执行以下操作:
每个快照都有多个活动导出。
必需的访问权限
要管理云备份快照,您必须拥有项目的 Project Backup Manager 或 Project Owner 访问权限。
拥有 Organization Owner 访问权限的用户必须将自己添加为项目的 Project Backup Manager 或 Project Owner,然后才能管理云备份快照。
先决条件
要导出云备份快照,您需要一个启用了云备份的M10 或更高版本的Atlas 集群。此外,要导出到对象存储,您必须执行以下操作:
使用 配置Amazon Web Services IAM角色,授予Atlas访问权限Amazon
STS:AssumeRoleWeb Services资源的权限。要学习;了解有关为Atlas配置Amazon Web Services访问权限权限的更多信息,请参阅设置统一的Amazon Web Services访问权限。配置 AWS IAM 角色策略,为您的 AWS 资源授予 Atlas 写入权限或
S3:PutObject和S3:GetBucketLocation权限。要了解有关配置 AWS 资源写入权限的更多信息,请参阅设置统一 AWS 访问权限。例子
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::bucket-name" }, { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
为您的 Atlas 项目设置 Azure 服务主体及访问策略。
将 Storage Blob Delegator 和 Storage Blob Data Contributor 角色分配给 Azure 服务主体。
要为您的服务主体分配角色,您需要以下信息:
角色说明Storage Blob Delegator
这允许服务主体签署 SAS 令牌以访问 Azure 存储容器。要分配此角色,请运行以下命令:
az role assignment create --assignee-object-id <service-principal-id> --role "Storage Blob Delegator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name> Storage Blob Data Contributor
这允许对 Azure 存储容器进行读取、写入和删除 blob 访问权限。要分配此角色,请运行以下命令:
az role assignment create --assignee-principal-type ServicePrincipal --assignee-object-id <service-principal-id> --role "Storage Blob Data Contributor" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
按照查看授权的 Google Cloud 服务帐户中的步骤,在Atlas中找到 Google Cloud 服务帐户的ID 。
在 Google Cloud 控制台中,按照 Google Cloud 文档将上一步中的服务帐号ID作为主体添加到存储桶的策略中。
导出管理
您可以从Atlas CLI和Atlas Administration API创建和管理到 AWS S 存储桶的快照。要创建和管理到Azure Blob 存储容器或3 Google Cloud Storage 存储桶的快照,您必须使用Atlas Administration API,您可以直接访问权限该 API,也可以通过Atlas CLI使用 atlas api 命令来访问该 API。
注意
要使用Atlas CLI管理到Azure Blob 存储或 Google 云存储容器的导出,请使用 atlas api 命令将请求发送到Atlas Administration API云备份资源端点。
管理导出任务
您可以使用 Atlas CLI 来管理导出作业(如创建或查看导出作业)。
创建导出作业
要使用 Atlas CLI 将 M10 或更高版本的 Atlas 集群的一个备份快照导出到现有 AWS S3 存储桶,请运行以下命令:
atlas backups exports jobs create [options]
要使用 Atlas CLI 监视特定备份导出作业的完成情况,请运行以下命令:
atlas backups exports jobs watch <exportJobId> [options]
要了解前面命令的语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas backups exports jobs create 和 atlas backups exports jobs watch。
查看导出作业
要使用 Atlas CLI 列出指定项目的云备份导出作业,请运行以下命令:
atlas backups exports jobs list <clusterName> [options]
要使用 Atlas CLI 返回指定的云备份导出作业的详细信息,请运行以下命令:
atlas backups exports jobs describe [options]
要了解前述命令的语法和参数的更多信息,请参阅关于 atlas backups exports jobs list 和 atlas backups exports jobs describe 的 Atlas CLI 文档。
管理导出存储桶
您可以使用 Atlas CLI 来管理导出存储桶(如创建、查看或删除导出存储桶)。
创建一个导出存储桶
要使用 Atlas CLI 通过现有 AWS S3 存储桶为 Atlas 备份创建导出目标,请运行以下命令:
atlas backups exports buckets create <bucketName> [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas backups exports buckets create。
查看导出存储桶
要使用 Atlas CLI 列出指定项目的云备份导出存储桶,请运行以下命令:
atlas backups exports buckets list [options]
如要使用 Atlas CLI 返回指定的云备份导出存储桶的详细信息,请运行以下命令:
atlas backups exports buckets describe [options]
要了解前面命令的语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas backups exports buckets list 和 atlas backups exports buckets describe。
删除导出存储桶
要使用 Atlas CLI 删除 Atlas 备份的导出目标,请运行以下命令:
atlas backups exports buckets delete [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas backups exports buckets delete。
要授予和管理云提供商访问权限以及创建和管理快照导出任务,您使用的 API 必须具有 Project Owner 角色。
管理导出存储桶
使用以下项管理导出存储桶或容器。
创建一个导出存储桶
要授予对 AWS S3 存储桶、 Azure Blob 存储容器或 Google Cloud StoragePOST 存储桶的访问权限以导出快照,请向云备份资源端点发送 请求。这将使 AWS S3 存储桶、 Azure Blob 存储容器或 Google Cloud Storage 存储桶能够接收Atlas云备份快照。在发送请求以授予访问权限时,您必须提供以下信息:
唯一的 24 位十六进制字符串,用于标识 Atlas 必须使用该字符串来访问 AWS S3 存储桶的统一 AWS 访问角色 ID。要了解更多信息,请参阅设置统一的 AWS 访问权限。
唯一的 24 位十六进制字符串,用于标识 Atlas 访问 Azure Blob 存储时必须使用的 Azure 服务主体。要了解更多信息,请参阅设置和管理 Azure 服务主体访问权限。
Azure Blob 存储帐户的服务终结点。要了解详情,请参阅 Azure 文档。
唯一的 24-十六进制数字字符串,用于标识Atlas用于访问权限Google Cloud Storage 存储桶的 Google Cloud 提供商访问角色。
列出所有导出存储桶
要检索Atlas将快照导出到的所有 AWS S3 存储桶、 Azure Blob Storage 容器或 Google Cloud StorageGET 存储桶,请将 请求发送到云备份资源端点。
删除一个导出存储桶
要删除导出存储桶,必须先为项目中的所有集群禁用将快照自动导出到 AWS S3 存储桶、 Azure Blob 存储容器或 Google Cloud Storage 存储桶的功能,然后将DELETE 请求发送到 Cloud使用导出存储桶的ID备份资源端点。如有必要,向端点发送GET 请求以检索存储桶ID。
管理导出任务
使用以下方法管理导出作业。
创建快照导出作业
要将一个Atlas备份快照导出到 AWS S3 存储桶、 Azure Blob 存储容器或 Google Cloud Storage 存储桶,请向云备份资源端点发送POST 请求,其中包含要导出的快照的ID以及AWS S3 存储桶、 Azure Blob 存储容器或 Google Cloud Storage 存储桶。