使用文档数据库服务时,如果实例的磁盘使用率过高或完全被使用,将会导致实例不可⽤。
本章节帮助您分析解决DDS实例磁盘使用率高的问题。
查看磁盘使用情况
DDS目前提供如下两种方法用于查看实例磁盘的使用情况。
- 通过DDS控制台查看磁盘使用情况。
您可以登录DDS控制台,单击目标实例名称,进入“基本信息”页面,在“存储空间”区域可以查看到当前实例的磁盘使用情况。
图 查看磁盘使用情况
- 通过查看监控指标(磁盘利用率和磁盘使用量)判断实例磁盘的使用情况。
如何查看监控指标请参见查看监控指标。
图 查看磁盘使用情况
解决方案
- 对于集群实例,可能是因为选择和设置的分片不合理导致数据分布不均衡,从而引起磁盘空间使用率高的情况。
此时,可以对数据库集合进行合适的分片,具体操作请参见设置数据分片以充分利用分片性能。
- 随着业务数据的增加,原来申请的数据库磁盘容量不足。此时建议扩容磁盘空间,确保磁盘空间足够。
-
集群实例,请参见扩容集群实例的磁盘空间。
-
副本集实例,请参见扩容副本集实例的磁盘空间。
如果原有实例规格的磁盘已是最大的,请先升级规格。
- 集群实例,请参见变更集群实例的CPU和内存规格。
- 副本集实例,请参见变更副本集实例的CPU和内存规格。
- 存在大量过期的数据文件占用磁盘空间,此时需要及时处理过期数据文件。例如:如果整个库不需要了,则可以执行dropDatabase命令进行删除,从而快速释放磁盘空间。
- 后台数据处理机制原因。
因为无论是写入、更新或删除等操作(包括索引插入和删除等操作),在后台实际上都会转成写入。因为底层的存储引擎(WiredTiger和RocksDB),采用都是appendOnly机制。只有当存储引擎内部数据状态满足一定条件后,会触发内部的compaction操作,进行数据压缩,进而释放磁盘空间。
所以有时候会发现,磁盘占用量比实际数据量大,实际上这只是“看起来大”,并不会影响用户的使用。因为内部有些数据压缩,是延时操作,没有立即执行。随着数据的继续写入,会触发后台执行数据压缩清理空间。