转自:http://xiayuanfeng.iteye.com/blog/983861
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和更新的源服务器会有所不同。
- 这个命令必须运行于目标服务器。
- 这个命令不会给源服务器或者目标服务器加锁。两个服务器都允许进行读写操作。
|