1

我有一个存储在 Mongo 中的 1 亿条推文数据集,未优化且未编入索引。

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

我的想法是使用 Ruby 脚本提取相关推文并将其复制到服务器上的新数据库中,然后运行 ​​mongo copyDatabase 命令将其复制过来。不过它的时间很长,还有其他方法吗?

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;
4

3 回答 3

0

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

于 2013-01-17T13:23:50.923 回答
0

一些想法:

  • 添加多个客户端/线程来进行处理/保存(例如,为了简单起见,也许每个人都在一天的推文上工作)。继续添加客户端,直到服务器满负荷。
  • 将整个数据库复制到新服务器并删除旧数据,然后对其进行压缩(并对其进行索引)。
  • 考虑禁用日志(如果这对您的需要是安全的),或者调整它以减少写入频率(降低持久性)
  • 确保禁用任何日志记录、跟踪等
  • 确保服务器的大小足以处理负载
  • 或者,在它完成时休一个长假。:)
于 2013-01-17T13:31:23.543 回答
0

只需将数据库文件复制到新主机,启动 mongod 并删除不需要的文档/删除数据库/集合。这是最快的方法。

于 2013-01-21T15:24:55.013 回答