复制数据库Clone Database MongoDB有一个命令可以在不同的服务器之间拷贝数据库。 // 从一个服务器复制一个完整的数据库到以一个服务器。忽略 <from_hostname> //是在同一服务器之间进行数据库复制 // 这个命令必须运行于复制目标的服务器上。 db.copyDatabase(<from_dbname>, <to_dbname>, <from_hostname>); // 如果复制源服务器需要验证,命令如下 db.copyDatabase(<from_dbname>, <to_dbname>, <from_hostname>, <username>, <password>); // 命令的语法格式如下: db.runCommand( { copydb : 1, fromdb : ..., todb : ..., fromhost : ... } ); // 源服务器需要认证,命令如下 n = db.runCommand( { copydbgetnonce : 1, fromhost: ... } ); db.runCommand( { copydb : 1, fromhost: ..., fromdb: ..., todb: ..., username: ..., nonce: n.nonce, key: <hash of username, nonce, password > } ); // 从另一个服务器克隆当前选择的数据库 var fromhost = ...; print("about to get a copy of database " + db + " from " + fromhost); db.cloneDatabase(fromhost); // 命令的语法: db.runCommand( { clone : fromhost } ); Notes copyDatabase 源服务器也可能是 slave/secondary。copyDatabase 不是原子性的操作: 如果在复制的过程中,源服务器数据库修改了,目标服务器接收的document和更新的源服务器会有所不同。这个命令必须运行于目标服务器。这个命令不会给源服务器或者目标服务器加锁。两个服务器都允许进行读写操作。