空间分析

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

所有

支持

注意事项

如果使用RAM用户(子账号)访问CloudDBA空间分析,请确保RAM用户拥有DAS的完全管理权限(AliyunHDMFullAccess)或DAS的只读访问权限(AliyunHDMReadOnlyAccess),具体信息,请参见RAM用户如何使用DAS?

空间分析

  1. 登录MongoDB管理控制台

  2. 根据实例类型,在左侧导航栏单击副本集实例列表分片集群实例列表

  3. 在页面左上角,选择实例所在的资源组和地域。

  4. 单击目标实例ID或目标实例所在行操作列的管理

  5. 在目标实例页面的左侧导航栏,单击CloudDBA > 空间分析

  6. 您可以查看数据库空间的概况。

    • 查看库表空间概况

      单击空间概况页签,您可以查看以下信息:

      • 库表空间概况区域查看库表空间概况。

        项目

        说明

        异常

        统计实例的空间异常数量。异常种类如下:

        • 实例的空间使用率大于90%。

        • 实例的库表总空间(物理)剩余可用天数估计不足7天。

        • 单个集合索引数超过10个。

        近一周日均增长量

        统计最近7天的空间日均增长量。

        算法:(采集时刻的空间大小 - 7天前的空间大小)/7。

        说明
        • 增长速度为采集时刻七天均值。

        • 该参数适用于平稳业务,空间突变(如批量导入,历史数据删除,实例迁移重建等)会影响数据准确性。

        空间可用天数

        估算剩余空间可用的天数,展示剩余空间大小。

        算法:可用空间/近一周日均增长量。

        说明
        • 90+代表预测长时间内磁盘空间足够使用。

        • 该参数适用于平稳业务,空间突变(例如批量导入、历史数据删除、实例迁移重建等)会影响数据准确性。

        已用空间

        展示已用空间大小和总空间大小。

      • 异常列表查看异常信息,排查实例的空间异常问题。

      • 空间变化趋势区域查看库表近一周的数据变化趋势。

      • 表空间区域查看集合的数据信息。

        说明

        您可以单击集合名,查看索引相关信息。

    • 查看数据和表空间概况

      单击数据空间页签,您可以查看以下信息:

      • 单击数据空间名查看对应的表空间信息。

      • 单击集合名,查看索引相关信息。

回收空间碎片

重要

仅支持Hidden节点回收空间碎片,如果需要回收PrimarySecondary节点的碎片,可以先进行主备切换,将PrimarySecondary节点切换到Hidden节点,再处理新Hidden节点的空间碎片;也可以参考回收磁盘碎片以提升磁盘利用率直接执行compact,操作时请仔细阅读参考文档。

  1. 登录MongoDB管理控制台

  2. 根据实例类型,在左侧导航栏单击副本集实例列表分片集群实例列表

  3. 在页面左上角,选择实例所在的资源组和地域。

  4. 单击目标实例ID或目标实例所在行操作列的管理

  5. 在目标实例页面的左侧导航栏,单击CloudDBA > 空间分析

  6. 表空间区域,单击碎片率列的回收。

  7. 回收窗口中,回收空间碎片。

    • 设置碎片回收计划。

      对该实例设置回收计划后,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张表,如果缺少空间数据,可能是因为账号缺少对应的库表权限或表个数太多,您可以重新授权。请选择以下任意一种方法进行重新授权:

  • 已有账号和密码

    1. 单击页面上方的重新授权

    2. 填写数据库账号密码

    3. 单击确认

  • 生成授权命令

    1. 单击页面上方的重新授权

    2. 填写数据库账号密码

    3. 单击生成授权命令

    4. 单击确认

相关API

API

说明

CreateStorageAnalysisTask - 创建空间分析任务

调用CreateStorageAnalysisTask接口,创建空间分析任务,获取数据库及表的空间使用数据。

GetStorageAnalysisResult - 获取空间分析任务的结果

调用GetStorageAnalysisResult接口,查询空间分析任务状态和分析结果。