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

mongodb 有啥瘦身的方法嘛?

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

        1
    JCZ2MkKb5S8ZX9pq   53 天前
    补充:目前的版本是 mongodb 3.6
        2
    JCZ2MkKb5S8ZX9pq   53 天前
    看到现在 4.2 了,有必要升级嘛?有坑吗?
        3
    Infernalzero   53 天前
    需要 compact,但是这个操作要谨慎,会影响业务
        4
    JCZ2MkKb5S8ZX9pq   53 天前
    @Infernalzero compact 过了,图上的就是 compact 之后的结果……
        5
    asilin   53 天前
    我们之前也遇到了这个问题,版本 3.6。

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

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

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

    感觉等会儿要再比对看看了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4245 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 03:41 · PVG 11:41 · LAX 19:41 · JFK 22:41
    ♥ Do have faith in what you're doing.