mongodb 有啥瘦身的方法嘛?

2019-10-23 14:18:18 +08:00
 JCZ2MkKb5S8ZX9pq

13667 次点击
所在节点    MongoDB
10 条回复
JCZ2MkKb5S8ZX9pq
2019-10-23 14:21:07 +08:00
补充:目前的版本是 mongodb 3.6
JCZ2MkKb5S8ZX9pq
2019-10-23 14:23:21 +08:00
看到现在 4.2 了,有必要升级嘛?有坑吗?
Infernalzero
2019-10-23 14:24:42 +08:00
需要 compact,但是这个操作要谨慎,会影响业务
JCZ2MkKb5S8ZX9pq
2019-10-23 14:44:28 +08:00
@Infernalzero compact 过了,图上的就是 compact 之后的结果……
asilin
2019-10-23 14:47:04 +08:00
我们之前也遇到了这个问题,版本 3.6。

当时的解决方式是使用 rocksdb 引擎的 mongo 3.4 版本,根据业务模型将数据从老的集群导出,并导入到新的集群,切换 mongos 配置到新集群,写入没有问题后将中间切换丢的数据再补上。

之所以使用 rocksdb 引擎的 mongo 3.4 版本,因为这个引擎对 SSD 支持友好,并能够在删除数据后释放逐步物理空间。
JCZ2MkKb5S8ZX9pq
2019-10-23 14:50:17 +08:00
@asilin 好的吧,跟复制集差不多,看来主要思路还是要重写一遍数据了。
JCZ2MkKb5S8ZX9pq
2019-10-23 15:06:09 +08:00
@Infernalzero
@asilin
另外 compact 这个命令,只用了 150 秒左右,是不是太快了?它应该没重写数据吧?
JCZ2MkKb5S8ZX9pq
2019-10-23 16:53:47 +08:00
最终直接用 duplicate 复制了一个,storagesize 和 index 都变小了。
确认没问题再把旧的删了。
旧的_id 也可以复制过来。
JCZ2MkKb5S8ZX9pq
2019-10-23 16:55:45 +08:00
其实感觉下次再搞,直接在清洗数据的时候就直接导出到新的 collection 里,这样原数据也安全点,新出来的也小一点。
JCZ2MkKb5S8ZX9pq
2019-10-23 19:01:11 +08:00
@asilin
碰到个莫名的问题
一个数据集,复制之后,多出来小两百条 doc,碰到过嘛?

note_all_copy: 100.0% 5460905/5460732 5460905 docs successfully imported, 0 docs failed.

感觉等会儿要再比对看看了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612092

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX