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
的复制集克隆到本地副本集上。