美文网首页
mongodb13亿数据清理记录

mongodb13亿数据清理记录

作者: 赵荆州 | 来源:发表于2019-08-09 17:23 被阅读0次

    mongodb上一个collection数据已经膨胀到13亿,也就最近一两个月的数据重要一点。于是考虑清除一下这个collection。
    于是:
    第一步:
    先将原表备份

    db.test.renameCollection("test_bak")
    

    然后根据时间删除数据

    db.test_bak.remove({"createtime":{"$lte":ISODate("2019-06-09T00:00:00.000Z")}})
    

    将两个月前的数据全部清掉。
    执行到这一步发现,现实很残酷,基本上命令是卡死状态。
    查看collection上的索引:

    db.test_bak.getIndexes()
    

    发现createtime没有索引,于是乎加上:

    db.test_bak.createIndex({"createtime":-1})
    

    加索引这一步也要执行很久,慢慢等吧。
    等到索引添加成功再次执行删除数据的命令即可,也将执行很久。
    通过:

    db.test_bak.count()
    

    查看还剩多少数据。
    由于test_bak已经没有新的数据写入,还需要将最近两个月的数据同步到test中,于是:

    db.test_bak.find({"createtime":{"$gte":ISODate("2019-06-09T00:00:00.000Z")}}).forEach(function(x){
        db.test.insert(x);
    })
    

    等待慢慢执行吧.....

    以上为实操分享。

    所在在一开始就应该设置,无用的数据自动清理掉。
    也就没有后面头疼的问题了。

    相关文章

      网友评论

          本文标题:mongodb13亿数据清理记录

          本文链接:https://www.haomeiwen.com/subject/ocnhjctx.html