如果我想在我的数据库上调用fsync + lock方法,有没有办法在Rails应用程序中使用Mongoid?是否还有一种方法只能指定我要执行此操作的副本节点?
我正在尝试创建一个rake任务,每晚使用cron执行备份。
答案 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任务。
我对您的结果和任何后续问题感兴趣。