这个命令只能在目的 mongod中运行
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)
fromdb:源db名,用户必须能够对这个db进行鉴权
todb: 复制到目的mongod的名字,名字可以跟原名字不一样
fromhost: ip+port 如果是同一 mongd 复制,这个参数可不要
username: 用户名
password: 密码
mechanism: 有 MONGODB-CR or SCRAM-SHA-1这2种 ,
db.isMaster().maxWireVersion 值大于等于3 那默认就是 SCRAM-SHA-1
否则默认就是 MONGODB-CR(2.6版本的鉴权)
本实例数据库重命名(复制)
use admin
db.copyDatabase("test","test1") ###将数据库test 命名为 test1
复制远程库数据到本地
use admin
db.copyDatabase("test","test","192.168.201.130:5000","username","password","SCRAM-SHA-1")
注意:这个命令不是时间点快照,当源数据一直在变,复制的数据也是在变的,
在目的数据库是不产生锁的,所以在复制的时候也能对这个库进行修改,不能用于分片
如果源库不是admin库 那必须有下列权限
{ resource: { db: "mySourceDB", collection: "" }, actions: [ "find", "listCollections", "listIndexes" ] },
{ resource: { db: "mySourceDB", collection: "system.js" }, actions: [ "find" ] },
如果源库是admin库 那必须有下列权限
{ resource: { db: "admin", collection: "" }, actions: [ "find", "listCollections", "listIndexes" ] },
{ resource: { db: "admin", collection: "system.js" }, actions: [ "find" ] },
{ resource: { db: "admin", collection: "system.users" }, actions: [ "find" ] },
{ resource: { db: "admin", collection: "system.roles" }, actions: [ "find" ] },
{ resource: { db: "admin", collection: "system.version" }, actions: [ "find" ] }