复制/克隆mongodb数据库及其数据

use*_*109 30 mongodb

我需要复制我的Mongo数据库及其数据.我试过了

db.copyDatabase( "Old_db", "new_db", "localhost" )
Run Code Online (Sandbox Code Playgroud)

但问题是它只复制一个空白数据库,而不是以前的数据.

小智 48

您可以使用COPYDB或克隆,或者他们的助手copyDatabase()或者cloneDatabase(),但也有一些注意事项:

http://docs.mongodb.org/v2.2/tutorial/copy-databases-between-instances/#considerations

也许你正在触发它们中的一些.

我刚刚测试过

db.copyDatabase("test","testCopy","127.0.0.1") 
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

如果你成功了,请告诉我们.

  • 在v4.0中不推荐使用`db.copyDatabase` (11认同)

bac*_*112 23

2019年2月

由于db.copyDatabase()v4.0中已弃用,因此应使用mongodumpmongorestore

mongodump 
    --host <source host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <sourceDbName> 
    --collection <collection-name>
Run Code Online (Sandbox Code Playgroud)

mongodump命令将整个数据库导出到dump/<sourceDbName>默认命名的本地文件夹中,然后使用mongorestore命令导入到您的目标数据库:

mongorestore 
    --host <target host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <targetDbName>
    --collection <collection-name>
    <dump folder/file>
Run Code Online (Sandbox Code Playgroud)

例子:

mongodump 
    --host <source host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <sourceDbName> 
    --collection <collection-name>
Run Code Online (Sandbox Code Playgroud)

找到更多:

  • 例如,如果您不需要特殊身份验证,可以执行以下两个命令:`mongodump -d old_db_name -o &lt;path&gt;` 和 `mongorestore -d new_db_name &lt;path&gt;/old_db_name` (4认同)

Omi*_*mid 20

对于 MongoDB v4.2+:

较旧copyDatabasecloneDatabase已弃用。mongodump您应该使用和的组合mongorestore来代替。

例子:

源数据库: [名称= olddb(主机= localhost,端口= 27017)]

目的地。DB: [名称= newdb (主机= localhost,端口= 27017)]

方法 1 - 使用存档文件:

1-运行 mongodump 将olddb数据库转储到存档mongodump-old-db

mongodump --archive="mongodump-old-db" --db=olddb --host=localhost --port=27017
Run Code Online (Sandbox Code Playgroud)

2- 使用--nsFrom和运行 mongorestore--nsTo从存档中恢复(更改数据库名称):

mongorestore --archive="mongodump-old-db" --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017
Run Code Online (Sandbox Code Playgroud)

方法 2 - 通过使用标准输出流:

olddb您可以将数据库 mongodump 到标准输出流并通过管道传输到 mongorestore,而不是使用存档文件。

赶紧跑:

mongodump --archive --db=olddb --host=localhost --port=27017 | mongorestore --archive  --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017
Run Code Online (Sandbox Code Playgroud)

提示:您可以根据需要添加其他选项,例如 uri ( --uri ) 或主机 ( --host )、端口 ( --port )、用户名 ( --username )、密码 ( --password ) 或其他选项

资料来源:有关该主题的官方 MongoDB 文档


huy*_*uan 5

如果您需要进行身份验证:

db.copyDatabase('crm', 'crm_copy', 'localhost', 'admin', '123456')
Run Code Online (Sandbox Code Playgroud)

  • 请详细说明 (2认同)
  • 不推荐使用copyDatabase https://docs.mongodb.com/manual/release-notes/4.0-compatibility/#deprecate-copydb-clone-cmds (2认同)