- 清洗了一遍数据,size 从 15G 缩到了 10G。
- 但 storage size 依然没变,还是 7G+。(甚至还变大了一丢丢)
- 我知道 storage size 占了地方就不让了。
- 也知道可以通过复制集新建的方式来搞。
- 就想问问各位高手,有没有其它瘦身的方法?



1 JCZ2MkKb5S8ZX9pq OP 补充:目前的版本是 mongodb 3.6 |
2 JCZ2MkKb5S8ZX9pq OP 看到现在 4.2 了,有必要升级嘛?有坑吗? |
3 Infernalzero Oct 23, 2019 需要 compact,但是这个操作要谨慎,会影响业务 |
4 JCZ2MkKb5S8ZX9pq OP @Infernalzero compact 过了,图上的就是 compact 之后的结果…… |
5 asilin Oct 23, 2019 我们之前也遇到了这个问题,版本 3.6。 当时的解决方式是使用 rocksdb 引擎的 mongo 3.4 版本,根据业务模型将数据从老的集群导出,并导入到新的集群,切换 mongos 配置到新集群,写入没有问题后将中间切换丢的数据再补上。 之所以使用 rocksdb 引擎的 mongo 3.4 版本,因为这个引擎对 SSD 支持友好,并能够在删除数据后释放逐步物理空间。 |
6 JCZ2MkKb5S8ZX9pq OP @asilin 好的吧,跟复制集差不多,看来主要思路还是要重写一遍数据了。 |
7 JCZ2MkKb5S8ZX9pq OP |
8 JCZ2MkKb5S8ZX9pq OP 最终直接用 duplicate 复制了一个,storagesize 和 index 都变小了。 确认没问题再把旧的删了。 旧的_id 也可以复制过来。 |
9 JCZ2MkKb5S8ZX9pq OP 其实感觉下次再搞,直接在清洗数据的时候就直接导出到新的 collection 里,这样原数据也安全点,新出来的也小一点。 |
10 JCZ2MkKb5S8ZX9pq OP @asilin 碰到个莫名的问题 一个数据集,复制之后,多出来小两百条 doc,碰到过嘛? note_all_copy: 100.0% 5460905/5460732 5460905 docs successfully imported, 0 docs failed. 感觉等会儿要再比对看看了 |