2013-01-17 47 views
1

我有一個存儲在Mongo中的100m推文數據集,未經優化且無索引。將大型mongo數據庫的一部分複製到另一臺服務器最快/最好的方法?

我需要將上個月的所有推文複製到另一臺服務器上,最好的方法是什麼?

我的想法是使用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; 

回答

0

如果您需要在多臺服務器上使用您的數據,您應該使用mongodb複製功能。 如果你只是想備份你的數據,那麼最快的方法就是複製db文件。

0

幾個想法:

  • 添加多個客戶端/線程做處理/保存(也許在某一天的鳴叫例如每一個工作只是爲了簡單)。繼續添加客戶端,直到服務器達到容量。
  • 將整個數據庫複製到新服務器,並刪除舊數據,然後compact它(並將其編入索引)。
  • 考慮禁用日誌記錄(如果您需要的是安全的),或調整它來寫less frequently(少耐久性)
  • 確保任何記錄,跟蹤等被禁用
  • 確保服務器adaquately大小,以處理加載
  • 或者,在完成時只需要漫長的假期。 :)
0

只需將數據庫文件複製到新主機,啓動mongod並刪除不需要的文檔/ drop數據庫/集合。這是最快捷的方法。

相關問題