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?。
空间分析
登录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接口,查询空间分析任务状态和分析结果。 |