MongoDB-2.x版本只有在dropDatabase的时候才会释放磁盘空间,drop collection并不会减少磁盘占用。如果需要回收磁盘空间,需要采取一些措施。
repairDatabase是官方给出的唯一可以释放磁盘空间的方法。repairDatabase只能在master或者primary上执行,对于secondary只能以standalone的方式启动,然后执行repairDatabase。 repairDatabase对剩余可用磁盘空间有要求,必须大于等于原库的大小才能执行。
> db.repairDatabase() { "errmsg" : "Cannot repair database test having size: 8919110281013 (bytes) because free disk space is: 349286095543 (bytes)", "ok" : 0 }
数据量大的话耗时会比较长,而且会阻塞所有操作,所以不能在线上提供服务的节点上直接执行。
为了绕过方案一对空间的要求,可以采用copyDatabase。因为copyDatabase只需要占用实际data set的空间,一般在删除collection后,剩余数据会比较小。由于copyDatabase支持远程拷贝,如果空间实在不足,可以使用一个临时的mongod中转。copyDatabase不会阻塞操作。大致步骤:
解决思路与方案二相同。大致步骤:
需要重建所有库,耗时较长
stat -c "%a %n" file , 755, 644
ModuleNotFoundError: No module named 'MySQLdb', ...
Ubuntu18.04下使用pyenv安装python报错:BUILD FAILED (Ubun ...
dell提供了工具远程查看服务器硬件状态,可以修改硬件的参数,可以远程连接过去直接修改,就不需要 ...
启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。op ...
ubuntu开启crontab日志记录及解决No MTA installed, discardi ...
暂时还没有评论,第一个来评论吧!