V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
JCZ2MkKb5S8ZX9pq
V2EX  ›  MongoDB

mongodb 有啥瘦身的方法嘛?

  •  
  •   JCZ2MkKb5S8ZX9pq · 2019-10-23 14:18:18 +08:00 · 13858 次点击
    这是一个创建于 1891 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 清洗了一遍数据,size 从 15G 缩到了 10G。
    • 但 storage size 依然没变,还是 7G+。(甚至还变大了一丢丢)
    • 我知道 storage size 占了地方就不让了。
    • 也知道可以通过复制集新建的方式来搞。
    • 就想问问各位高手,有没有其它瘦身的方法?

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

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

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

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

    感觉等会儿要再比对看看了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3668 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:19 · PVG 12:19 · LAX 20:19 · JFK 23:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.