正文

Ruby on Rails框架程序连接MongoDB的教程(mongodb和python交互)难以置信

文章摘要

这篇文章是一段关于使用MongoDB在Ruby中备份数据的代码说明。代码首先设置了MongoDB的版本和相关配置参数,然后使用`MongoClient`创建了一个MongoDB数据库连接。接着,代码在备份前对数据库进行了`fsync`和`lock`操作,确保数据同步和锁定。随后,代码清理了旧的备份文件,创建了新的备份目录,并使用`FileUtils.cp_r`将指定目录下的所有文件复制到新的备份目录中。最后,代码释放了数据库的锁,并关闭了MongoDB客户端。整体流程清晰,突出了备份操作的关键步骤和注意事项。

 #!/usr/local/bin/ruby # date: 06-12-2014 # auther: lucifer # use fsync and lock to the file-system before backup the file-system # mongo-ruby-driver version > 1.10.0 require ‘mongo’ require ‘fileutils’ require ‘date’ include Mongo include BSON # the members of replcation-set # test mongodb server version 2.6.0 # host=”192.168.11.51″ # The port of members # If the port is 27017 by default then otherport don’t need to assignment # otherport=”” # port=otherport.length !=0 ? otherport : MongoClient::DEFAULT_PORT # opts={:pool_size=> 5, :pool_timeout=> 10} # Create a new connection # client=MongoClient.new(host, port, opts) uri_string=”mongodb://caoqing:xxxxxxxx@x.x.x.x:27017/admin” client=MongoClient.from_uri(uri=”#{uri_string}”) db=client[‘admin’] # fsync and lock the database cmd=OrderedHash.new cmd[:fsync]=1 cmd[:lock]=true # p cmd db.command(cmd) # datafile path d=”/var/lib/mongo” # dir=Dir.new(“#{d}”) # entries=dir.entries # entries.delete_if { |entry| entry=~ /^\https://www.jb51.net/article/} # convert the relative path to the full path # entries.map! { |entry| File.join(dir.path, entry) } # maintain only the type of file # entries.delete_if { |entry| !File.file?(entry) } # p entries start=Date.today.to_s prev=(Date.today – 7).to_s dest=”/backup/#{start}” sour=”/backup/#{prev}” FileUtils.rm_rf(“#{sour}”) if File::exist?(“#{sour}”) Dir.mkdir(“#{dest}”, 0755) unless File::exist?(“#{dest}”) FileUtils.cp_r Dir.glob(“#{d}/**”), dest if client.locked? puts “*” * 20 puts “\tbackup complete” puts “*” * 20 # DB::SYSTEM_COMMAND_COLLECTION # unlock the database db[“$cmd.sys.unlock”].find_one client.close