Mongodb 将大型mongo数据库的一部分复制到另一台服务器的最快/最佳方法?

Mongodb 将大型mongo数据库的一部分复制到另一台服务器的最快/最佳方法?,mongodb,Mongodb,我有一个100万条tweets的数据集存储在Mongo中,未优化且未编制索引 我需要将上个月的所有推文复制到另一台服务器上,最好的方法是什么 我的想法是使用Ruby脚本提取相关tweet并将其复制到服务器上的新数据库中,然后运行mongocopydatabase命令将其复制过来。这需要花很长时间,还有其他方法吗 require 'mongo_mapper' MongoMapper.database = 'twitter' require './models' tweets = TwitterTw

我有一个100万条tweets的数据集存储在Mongo中,未优化且未编制索引

我需要将上个月的所有推文复制到另一台服务器上,最好的方法是什么

我的想法是使用Ruby脚本提取相关tweet并将其复制到服务器上的新数据库中,然后运行mongocopydatabase命令将其复制过来。这需要花很长时间,还有其他方法吗

require 'mongo_mapper'
MongoMapper.database = 'twitter'
require './models'
tweets = TwitterTweet.where(:created_at => {"$gt" => 1.month.ago}).all; # about 15 million

MongoMapper.database = 'monthly'
# copy the tweets over to the new db
tweets.each do |tweet|
  tweet.save!
end;

如果您需要在多台服务器上存储数据,只需使用mongodb复制功能即可。 如果您只想备份数据,那么最快的方法就是复制数据库文件。

一些想法:

  • 添加多个客户端/线程来进行处理/保存(例如,可能每个客户端/线程处理一天的tweet只是为了简化)。继续添加客户端,直到服务器达到容量
  • 将整个数据库复制到新服务器并删除旧数据,然后删除(并为其编制索引)
  • 考虑禁用日志记录(如果这对您的需求是安全的),或将其调整为写入(耐久性较低)
  • 确保禁用任何日志记录、跟踪等
  • 确保服务器的大小足以处理负载
  • 或者,在工作完成后,放个长假。:)
只需将数据库文件复制到新主机,启动mongod并删除不需要的文档/删除数据库/集合即可。那是最快的方法