及时发现并解决空间问题是数据库运维的重要任务。通过数据库自治服务DAS的空间分析功能,您可以直观地查看数据库及表的空间使用情况,及时发现空间的异常情况。此外,DAS支持回收空间碎片,避免磁盘空间浪费和性能下降。
前提条件
目标数据库实例为:
自建MongoDB
云数据库MongoDB版
MongoDB实例副本集或分片集群实例的版本满足下表:
大版本
小版本号
是否支持
MongoDB 4.0
3.0.x
不支持
MongoDB 4.2
4.0.0-4.0.22
不支持
>= 4.0.23
支持
MongoDB 4.4-DBFS版本
所有
不支持
MongoDB 4.4
5.0.0-5.0.6
不支持
>= 5.0.7
支持
MongoDB 5.0
所有
支持
MongoDB 6.0
所有
支持
目标数据库实例已接入DAS,且实例接入状态为接入正常,接入方法具体请参见接入数据库实例。
空间分析
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例ID,进入目标实例详情页。
在左侧导航栏,单击空间分析,您可直观地查看该实例的空间概况、数据空间、异常列表、空间变化趋势。
页签
区域
说明
空间概况
库表空间概况
查看空间异常、近一周日均增长量,空间可用天数和已用空间等信息。
说明单击查看各项统计信息的详细说明。
异常列表
查看该实例表/集合的异常信息。
空间变化趋势
查看选定时间范围内的空间变化趋势。
说明时间隔间最大不能超过七天。
表空间
查看数据库实例中各个表的信息和空间使用情况,单击表名可查看对应表的字段和索引。
数据空间
查看该实例每个数据库的空间使用情况,以及数据库中表空间的使用情况。
单击表名可查看对应表的字段和索引。
回收空间碎片
仅支持Hidden节点回收空间碎片,如果需要回收Primary和Secondary节点的碎片,可以先进行主备切换,将Primary或Secondary节点切换到Hidden节点,再处理新Hidden节点的空间碎片;也可以参考回收磁盘碎片以提升磁盘利用率直接执行compact
,操作时请仔细阅读参考文档。
登录DAS控制台。
在左侧导航栏中,单击实例监控。
找到目标实例,单击实例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实例的空间碎片,请参见回收磁盘碎片以提升磁盘利用率。
相关API
API | 描述 |
创建空间分析任务,获取数据库及表的空间使用数据。 | |
查询空间分析任务状态和分析结果。 |