Posts Tagged "MongoDB"

MongoDB数据空洞解决方法

本文链接:http://ifujun.com/mongodbshu-ju-kong-dong-jie-jue-fang-fa/ 背景 某一段时间,来了点兴趣,看了点Mongodb的书,所以写下了这篇博客,也算是一点总结吧。 很多时候,我们项目上线时间比较久了,我们积累了一些无用的数据,而由于MongoDB顺序写的原因,在我们删除部分无用数据后,它的storageSize和fileSize并不会变小,这就造成了大量的数据空洞。 这些数据空洞除了占用磁盘之外,也会加载到内存中,这会降低内存效率。 所以这个时候,我们一般要对这些数据空洞进行处理,一般有下面几种处理方式。 一种是使用MongoDB自带的compact命令: db.collectionName.runCommand(“compact”) 这种方式是collection级别的压缩,只能去除collection内的碎片,但是MongoDB的数据分配是DB级别的,效果并不一定多好,其次呢,这个压缩是线上压缩,肯定会影响服务的,磁盘IO会比较高,这么干容易出事。 还有一种方式,也就是我们下面要详细说明的方式,过程大概类似于下面: 先预热从库 提升从库为主库,原主库降为从库 移除原主库的DB数据,直接remove掉 重新同步 完成后,预热,然后将此库提升为主库,…