mongodb第十八篇文章~mongodb表切割

一 简介:来探讨下mongodb集群大表的备份切割问题

二 环境:

     mongodb 3.0 集群

三 目的

    将亿级表进行备份,切割出去,线上表只保留百万数据

四 步骤

   工具:采用mongodump而不是export,bjson的体积远远小于json文件,这样无论在导入还是导出都非常有优势

   1 导出 

    nohup mongodump --port 40000 --db dbname --collection tablename --query '{"sentTime": { $gt: "2018-07-13 00:00:00" } }' -o /home/ops/mongo &

   2  导入

   mongorestore --port 40000 --db dbname  --collection table_20180813 /home/ops/mongo/tablename.bjson//这里要指定具体的bjson文件

   3  表重命名

     db.table.renameCollection("table_20180813BACK");

     db.table_20180813.renameCollection("table");

   4  添加相应索引

     这里我要着重说下,针对集群的dump导入索引失败,所以在导入数据后一定要再次建立索引,否则会导致查询阻塞,服务器负载飙升,而且加上索引后,一段时间慢查询才会停止出现

五 总结

    定期对大表进行切割,有利于查询的正常运行,我们是亿级进行手动切割.更推荐程序进行自动表的变更写入

猜你喜欢

转载自www.cnblogs.com/danhuangpai/p/9468484.html