CloudDBA空间分析提供了查询空间概况、空间变化趋势、异常列表、数据空间和空间碎片回收功能,您可以通过这些信息及时发现数据库中空间的异常情况,避免影响数据库稳定性。
前提条件
MongoDB实例副本集或分片集群实例的版本满足下表:
| 大版本 | 小版本号 | 是否支持 | 
| MongoDB 4.0 | 3.0.x | 不支持 | 
| MongoDB 4.2 | 4.0.0-4.0.22 | 不支持 | 
| >= 4.0.23 | 支持 | |
| MongoDB 4.4 | 5.0.0-5.0.6 | 不支持 | 
| >= 5.0.7 | 支持 | |
| MongoDB 5.0 | 所有 | 支持 | 
| MongoDB 6.0 | 所有 | 支持 | 
| MongoDB 7.0 | 所有 | 支持 | 
| MongoDB 8.0 | 所有 | 支持 | 
注意事项
如果使用RAM用户(子账号)访问CloudDBA空间分析,请确保RAM用户拥有DAS的完全管理权限(AliyunHDMFullAccess)或DAS的只读访问权限(AliyunHDMReadOnlyAccess),具体信息,请参见RAM用户如何使用DAS?。
空间分析
- 登录MongoDB管理控制台。 
- 根据实例类型,在左侧导航栏单击副本集实例列表或分片集群实例列表。 
- 在页面左上角,选择实例所在的资源组和地域。 
- 单击目标实例ID或目标实例所在行操作列的管理。 
- 在目标实例页面的左侧导航栏,单击。 
- 您可以查看数据库空间的概况。 - 查看库表空间概况 - 单击空间概况页签,您可以查看以下信息: - 在库表空间概况区域查看库表空间概况。 - 项目 - 说明 - 异常 - 统计实例的空间异常数量。异常种类如下: - 实例的空间使用率大于90%。 
- 实例的库表总空间(物理)剩余可用天数估计不足7天。 
- 单个集合索引数超过10个。 
 - 近一周日均增长量 - 统计最近7天的空间日均增长量。 - 算法:(采集时刻的空间大小 - 7天前的空间大小)/7。 说明- 增长速度为采集时刻七天均值。 
- 该参数适用于平稳业务,空间突变(如批量导入,历史数据删除,实例迁移重建等)会影响数据准确性。 
 - 空间可用天数 - 估算剩余空间可用的天数,展示剩余空间大小。 - 算法:可用空间/近一周日均增长量。 说明- 90+代表预测长时间内磁盘空间足够使用。 
- 该参数适用于平稳业务,空间突变(例如批量导入、历史数据删除、实例迁移重建等)会影响数据准确性。 
 - 已用空间 - 展示已用空间大小和总空间大小。 
- 在异常列表查看异常信息,排查实例的空间异常问题。 
- 在空间变化趋势区域查看库表近一周的数据变化趋势。 
- 在表空间区域查看集合的数据信息。 说明- 您可以单击集合名,查看索引相关信息。 
 
- 查看数据和表空间概况 - 单击数据空间页签,您可以查看以下信息: - 单击数据空间名查看对应的表空间信息。 
- 单击集合名,查看索引相关信息。 
 
 
回收空间碎片
仅支持Hidden节点回收空间碎片,如果需要回收Primary和Secondary节点的碎片,可以先进行主备切换,将Primary或Secondary节点切换到Hidden节点,再处理新Hidden节点的空间碎片;也可以参考回收磁盘碎片以提升磁盘利用率直接执行compact,操作时请仔细阅读参考文档。
- 登录MongoDB管理控制台。 
- 根据实例类型,在左侧导航栏单击副本集实例列表或分片集群实例列表。 
- 在页面左上角,选择实例所在的资源组和地域。 
- 单击目标实例ID或目标实例所在行操作列的管理。 
- 在目标实例页面的左侧导航栏,单击。 
- 在表空间区域,单击碎片率列的回收。 
- 在回收窗口中,回收空间碎片。 - 设置碎片回收计划。 - 对该实例设置回收计划后,DAS将在每天的可维护时间段自动检测隐藏节点(Hidden节点)的各个集合,并对满足索引空间和数据空间占用量之和大于1 GB且碎片率大于20%的集合执行 - compact。为避免回收时间过长,碎片回收计划中每个隐藏节点(Hidden节点)每轮回收的集合可回收空间总和不能超过100 GB。因此,当单表可回收空间大于100 GB时,请使用手动执行回收的方式。
- 手动执行回收。 - 单击高碎片率集合操作列的执行回收,选择立即执行或在运维窗口执行,回收目标集合的空间碎片。 
 说明- 操作完成之后,不会立即完成空间碎片回收,请耐心等待。在实际情况下, - compact命令会在后台运行一段时间,逐渐回收空间碎片。具体回收时间与可回收空间大小有关,空间越大,回收时间越长。
- 避免同时回收过多的集合(建议控制在10个以内),完成当前任务后再进行下一轮空间碎片回收,否则可能造成回收任务失败。 
- 如果目标集合的碎片率较小,碎片回收的效果可能不明显。 
- 针对数量较多的可回收空间较小的集合,建议采用碎片回收计划进行处理;而对于可回收空间较大的集合,则建议采用手动执行回收的方式。当集合的可回收空间超过100 GB时,回收时间可能超过1个小时,请您合理安排回收时间 
 
查看空间碎片回收结果
回收任务执行完成之后,请单击重新分析,查看回收后的效果。
回收效果受数据分布的影响,如效果不佳,可以再次执行回收任务。
常见问题
Q:如何处理报错(Interrupted) Compaction interrupted on table:*** due to cache eviction pressure ?
A:该报错表示低版本的小规格实例在执行compact的过程中遇到缓存压力而中途退出。当空间碎片回收任务执行失败时,您可以选择在另一个时间重新下发任务。如果任务多次失败,请提交工单进行处理。
相关文档
空间分析功能当前仅支持4.0及以上版本的副本集或分片集群MongoDB实例,如果您需要回收其他MongoDB实例的空间碎片,请参见回收磁盘碎片以提升磁盘利用率。
相关任务
CloudDBA空间分析最多分析20000张表,如果缺少空间数据,可能是因为账号缺少对应的库表权限或表个数太多,您可以重新授权。请选择以下任意一种方法进行重新授权:
- 已有账号和密码 - 单击页面上方的重新授权。 
- 填写数据库账号和密码。 
- 单击确认。 
 
- 生成授权命令 - 单击页面上方的重新授权。 
- 填写数据库账号和密码。 
- 单击生成授权命令。 
- 单击确认。 
 
相关API
| API | 说明 | 
| 调用CreateStorageAnalysisTask接口,创建空间分析任务,获取数据库及表的空间使用数据。 | |
| 调用GetStorageAnalysisResult接口,查询空间分析任务状态和分析结果。 |