Mongodb 将大型mongo数据库的一部分复制到另一台服务器的最快/最佳方法?
我有一个100万条tweets的数据集存储在Mongo中,未优化且未编制索引 我需要将上个月的所有推文复制到另一台服务器上,最好的方法是什么 我的想法是使用Ruby脚本提取相关tweet并将其复制到服务器上的新数据库中,然后运行mongocopydatabase命令将其复制过来。这需要花很长时间,还有其他方法吗Mongodb 将大型mongo数据库的一部分复制到另一台服务器的最快/最佳方法?,mongodb,Mongodb,我有一个100万条tweets的数据集存储在Mongo中,未优化且未编制索引 我需要将上个月的所有推文复制到另一台服务器上,最好的方法是什么 我的想法是使用Ruby脚本提取相关tweet并将其复制到服务器上的新数据库中,然后运行mongocopydatabase命令将其复制过来。这需要花很长时间,还有其他方法吗 require 'mongo_mapper' MongoMapper.database = 'twitter' require './models' tweets = TwitterTw
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只是为了简化)。继续添加客户端,直到服务器达到容量李>
- 将整个数据库复制到新服务器并删除旧数据,然后删除(并为其编制索引)
- 考虑禁用日志记录(如果这对您的需求是安全的),或将其调整为写入(耐久性较低)
- 确保禁用任何日志记录、跟踪等
- 确保服务器的大小足以处理负载
- 或者,在工作完成后,放个长假。:)李>