Mongoid中是否有Mongo Admin fsync + lock命令?

时间:2012-11-15 03:29:23

标签: ruby-on-rails ruby mongodb mongoid rake-task

如果我想在我的数据库上调用fsync + lock方法,有没有办法在Rails应用程序中使用Mongoid?是否还有一种方法只能指定我要执行此操作的副本节点?

我正在尝试创建一个rake任务,每晚使用cron执行备份。

1 个答案:

答案 0 :(得分: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

这些方法没有选项来指定副本集的成员, 仅限套接字,主要供内部使用。 所以如果你需要fsyncLock特定的副本集成员, 我建议您通过显式连接明确连接到它, 例如,Mongo :: MongoClient.new(主机,端口)。

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

Mongoid 3使用的是Moped而不是10gen驱动程序。 但即使你转移到Mongoid 3,你仍然可以独立使用10gen驱动程序进行rake任务。

我对您的结果和任何后续问题感兴趣。