注册

详解MongoDB的clone()函数:克隆当前客户端对象

MongoDB的clone()函数作用与使用方法

clone()是MongoDB的一个shell命令,用于复制数据库或复制集到另一个主机上。该命令可以对一个正在运行的复制集(replica set)或一个正在运行的mongod或mongos进程进行群集的备份。在运行clone()命令时,当前mongod启用一个临时端点来供其他服务器使用。其他服务器可以连接到该临时端口,从而可以访问源mongod的数据。

使用方法

clone()命令的用法通常如下所示:

db.clone("source_host:port")

其中,db是数据库名称,source_host是源主机名或IP地址,port是源主机端口号。

此外,还可以在命令中指定可选参数,如:

  • slaveOk:在从节点上运行命令。默认值为false,即只运行在主节点上。
  • username/password:用于身份验证。

示例

示例1

将名为test的数据库从主机192.168.1.100的端口27017复制到本地的mongod实例上。对于具备副本集,也可以复制一个副本集:

use local

db.runCommand(
  { clone: "mongodb://192.168.1.100:27017", 
    fromhost: "192.168.1.100:27017", 
    username: "myuser", 
    password: "mypass" 
  }
)

示例2

让mongod实例成为正在运行的一个复制集的备份。此示例通过使用内部的IP地址(即用于内部网络上的地址)来演示,但该IP地址仅适用于确保可以获得当前的IP地址。

mongo --host 192.168.1.100 --port 27017

rs.initiate({
  _id : 'set01',
  members: [
    { 
      _id: 0, 
      host: '192.168.1.100:27017', 
      priority: 2 
    },
    { 
      _id: 1, 
      host: '192.168.1.120:27017', 
      priority: 0 
    }
  ]
})

use local
db.runCommand({ "clone" : "localhost:27017", "fromhost" : "192.168.1.100:27017" })

以上示例中,我们建立了一个名为set01的复制集,其中192.168.1.100:27017是主节点。接下来,我们在127.0.0.1:27017的mongod副本集上执行了runCommand,从而将192.168.1.100:27017的复制集克隆到本地副本集上。