云数据库MongoDB版的冷热分离功能支持将低频访问的集合数据从本地高性能存储归档至对象存储OSS,以释放本地存储空间。该功能处于内测阶段,仅支持符合条件且已完成特定内核小版本升级的MongoDB 8.0副本集实例。
功能概述
冷热分离基于WiredTiger存储引擎与OSS对象存储的深度集成,以集合(Collection)为粒度,将整个集合的数据文件从本地磁盘上传至OSS冷存储。归档完成后,系统释放该集合占用的本地存储空间,并保留集合的元数据和索引定义,以便后续解归档时恢复数据。
冷热分离适用于以下场景:
日志类数据超过活跃查询周期后,需要低成本保留。
历史订单、交易记录等数据因合规要求需要长期保存,但访问频率较低。
业务数据持续增长导致本地磁盘容量不足,需要释放存储空间。
前提条件
使用冷热分离功能前,请确保实例满足以下条件。
项目 | 要求 |
实例类型 | 副本集实例。 |
存储引擎 | WiredTiger。 |
内核大版本 | 必须为MongoDB 8.0。MongoDB 4.x、5.0、6.0和7.0均不支持冷热分离,需先升级数据库大版本。 |
内核小版本 | 需为支持冷热分离的特定内核小版本。该功能处于内测阶段,未随通用小版本发布。技术支持会确认实例资格和目标内核小版本,并统一升级。具体操作,请参见下文申请开通冷热分离。 |
申请开通冷热分离
冷热分离依赖特定的内核小版本。该版本暂未在控制台的小版本升级入口开放自助升级,需由技术支持确认资格并升级目标实例。
确认目标实例满足前提条件。
准备需要开通功能的实例ID,例如
dds-bp1xxxxxxxxxxxxx。如需同时开通多个实例,请准备实例ID列表。通过工单或对接的技术支持渠道提交申请,并提供以下信息:
实例ID(必填,可提供多个)。
实例所在地域。
期望开通时间窗口。
等待技术支持为实例开通功能资格,并升级至支持冷热分离的内核小版本。
重要升级会触发实例滚动重启和主备切换,业务可能出现秒级连接中断。请确保应用具备连接重试能力,并在业务低峰期执行升级。
功能开通后,确认实例的数据归档入口已生效。
未完成内核小版本升级的MongoDB 8.0实例,控制台可能不显示数据归档页面或提示不支持。这属于预期行为,并非实例异常。
开通冷热分离
在左侧导航栏,选择副本集实例列表,找到目标实例。
单击目标实例ID,进入实例基本信息页面。
在左侧导航栏,选择数据归档。
首次使用时,单击开通冷热分离。
系统自动创建OSS存储空间并配置授权。开通通常需要1~2分钟,期间实例可正常对外提供服务,不影响现有业务。
确认页面显示设置冷热数据分离和已归档冷数据页签。
两个页签分别展示本地存储中的集合和已归档至OSS的集合。
归档集合
将本地集合归档至OSS冷存储,以释放本地磁盘空间。
提交归档任务后,目标集合立即变为只读,所有写操作和DDL操作均会失败,直至任务结束。归档前,请确认集合已退出写入链路。
在数据归档页面,单击设置冷热数据分离页签。
在集合列表中选择目标集合。
说明每次仅支持归档一个集合。
单击归档,确认集合信息,然后单击确定。
在任务中心查看归档进度。
归档期间,目标集合可读但不可写。
归档完成后,确认集合从热数据列表移至冷数据列表。
系统会释放集合占用的本地存储空间。
归档速度取决于集合的数据量。一般情况下,归档吞吐约为30 MB/s。例如,归档一个150 GB的集合约需85分钟。此耗时仅供参考。
解归档集合
已归档集合可读但不可写。如需写入、更新或删除集合数据,请将冷数据恢复至本地存储,使集合恢复正常读写。
提交解归档任务后,目标集合完全不可访问,读写操作均会失败,直至任务结束。解归档一个150 GB的集合约需5~7小时,请提前预留业务不可用窗口。
在数据归档页面,单击已归档冷数据页签。
在已归档集合列表中选择目标集合。
单击解归档,确认集合信息,然后单击确定。
在任务中心查看解归档进度。
解归档期间,目标集合不可访问。
解归档完成后,确认集合从冷数据列表移至热数据列表,并恢复正常读写。
解归档速度慢于归档速度。一般情况下,解归档吞吐约为8~10 MB/s,且初始化也需要时间。例如,解归档一个150 GB的集合约需5~7小时。请在业务低峰期执行解归档,并预留充足的时间窗口。此耗时仅供参考。
集合读写能力
集合在不同状态下的读写能力不同。请在操作前确认业务可以接受对应限制。
集合状态 | 读 | 写(insert、update和delete) | 说明 |
热数据(未归档) | 支持。 | 支持。 | 集合可正常读写。 |
归档中 | 支持。 | 不支持。 | 归档任务启动后,集合立即变为只读,直至任务结束。 |
冷数据(已归档) | 支持。 | 不支持。 | 集合为只读状态。写操作会报错,如需恢复写入,请先解归档。 |
解归档中 | 不支持。 | 不支持。 | 集合不可访问,读写操作均会失败。 |
解归档完成(热数据) | 支持。 | 支持。 | 集合恢复正常读写。 |
查看归档状态
在数据归档页面,通过设置冷热数据分离和已归档冷数据页签查看集合的分布状态。页面会显示数据库名、集合名和数据大小等信息。正在归档或解归档的集合会显示任务进度。
使用限制
限制项 | 说明 |
内核版本 | 仅支持MongoDB 8.0且已升级至特定内核小版本的实例。 |
归档粒度 | 仅支持归档整个集合,不支持按文档条件归档部分数据。 |
归档后的访问能力 | 已归档集合为只读状态,不支持写入、更新或删除。如需修改数据,请先解归档。 |
解归档期间的访问能力 | 解归档期间,目标集合不可访问,不支持读写。 |
系统集合 |
|
索引 | 归档和解归档操作包含集合索引。系统会保留索引定义;解归档期间,集合及其索引均不可访问。 |
并发操作 | 同一实例同时仅支持一个归档或解归档任务。 |
磁盘空间 | 解归档前,请确保本地磁盘有足够的剩余空间容纳待恢复集合的数据。剩余空间不足可能导致解归档失败。 |
副本集同步 | 归档和解归档操作会同步至所有副本集成员,包括Secondary和Hidden节点。 |
备份兼容性 | 常规物理备份不包含已归档的集合,因此使用常规物理备份恢复实例时,恢复结果也不包含已归档集合。冷数据由OSS的多副本机制保障持久性和可靠性。如需在备份恢复场景中处理冷数据,请提交工单联系技术支持。 |
注意事项
版本升级:升级至支持冷热分离的内核小版本会触发滚动重启和一次主备切换。请确保应用具备连接重试能力,并预留升级窗口。
归档后的写入限制:归档任务启动后,目标集合立即变为只读。所有写操作(insert、update和delete)以及在该集合上创建索引等DDL操作均会失败。归档前,请确认集合已退出写入链路。若业务仍在写入该集合,请先切流或停止写入。
解归档期间的访问限制:解归档期间,集合完全不可访问,读写操作均会失败。解归档完成后,集合自动恢复正常读写,无需额外操作。
解归档耗时:从OSS下载数据的带宽低于上传带宽,且恢复过程涉及WiredTiger数据文件的重建和校验,因此解归档耗时通常为归档耗时的3~5倍。归档集合前,请评估业务能否接受未来解归档时数小时的不可用窗口。
操作窗口:请在业务低峰期执行归档和解归档,以减少任务对实例中其他集合读写性能的影响。
任务异常:如果归档或解归档任务长时间无进展或执行失败,请提交工单联系技术支持。