2012-11-15 11 views
0

如果我想在我的數據庫中調用fsync + lock方法,有沒有辦法在Rails應用中使用Mongoid來做到這一點?是否還有一種方法只指定我想要執行此操作的副本節點?在Mongoid中有Mongo Admin fsync + lock命令嗎?

我正在嘗試創建一個rake任務來使用cron每晚執行備份。

+0

你使用的是什麼版本的Mongoid? –

+0

我目前在2.4 – Pam

回答

1

Mongoid 2使用10gen支持的驅動程序。 Mongoid :: Config.master.connection對應於類Mongo :: MongoClient(是Mongo :: Connection)的連接對象。 這個類有一個實例方法鎖!執行fsyncLock命令,並解鎖!是它的伴侶。

http://api.mongodb.org/ruby/current/Mongo/MongoClient.html#lock!-instance_method

http://api.mongodb.org/ruby/current/Mongo/MongoClient.html#unlock!-instance_method

沒有選項這些方法僅由插座,其基本上在內部使用,以指定部件/ s的副本集, 。 因此,如果您需要fsyncLock特定的副本集成員,我建議您通過明確的連接 (例如,Mongo :: MongoClient.new(主機,端口))明確地連接到它。

client = Mongo::MongoClient.new(host, port) 
client.lock! 
# ... 
client.unlock! 
client.close 

Mongoid 3使用輕便摩托車而不是10gen驅動程序。 但即使你移動到Mongoid 3,你仍然可以獨立使用10gen驅動程序。

我對你的結果和任何後續問題很感興趣。