MongoDB清理集合

  • Post author:
  • Post category:其他

生产环境MongoDB数据量达到3TB,需要将部分表迁移至新的环境,迁移完成后需要对老表进行清理,要回收空间只能使用drop命令,回想起去年同事清理表出过问题,后面发现是MongoDB的缺陷
当前MongoDB版本为3.6.3,根据版本查阅官方文档,上面说的很明白,在删除集合时会锁库
在这里插入图片描述
举一反三,又查阅了索引的drop,也会出现这种情况
在这里插入图片描述
后面查阅解决办法,发现这个问题在4.2版本得到了解决请添加图片描述

在这里插入图片描述
旧库的清理工作还得做,为了降低对商户的影响,当天的清理任务暂时取消,需要提前做一下功课,后面再搞
后面就是做一些测试,首先部署了一个测试环境,然后写了一个python脚本,并发往库里写数据,最后把数据量搞到30GB,然后执行了drop命令,执行速度特别快,未发现数据插入受到影响,然而生产环境的表是上百GB,受限于测试环境磁盘空间大小,没法将数据搞那么大,只能再想其他办法
既然是锁库,repairDatabase这个命令也是可以起到这个效果的,可以在测试环境执行repair命令,然后观察数据的插入情况,经过测试,在repair命令执行时,数据插入操作被hang住,没有直接返回错误,是个比较乐观的情况,根据早些时候drop集合的经验,几百GB的集合在十几秒,跟开发沟通,是否有必要修改应用的响应时间
对于响应时间,开发方面认为无需修改,后面我们把操作的时间从最初的晚上8点修改到了晚上10点,把开发负责人拉过来,观察操作期间交易情况
实际操作,每个表清理时间都在5s以内,开发方面未发现有受影响的业务,总体来说,结果还是很乐观的


版权声明:本文为u014650965原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。