数据库技术及其应用:复制 /克隆mongodb数据库及其数据

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

db.copyDatabase( "Old_db", "new_db", "localhost" )

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

60
Feb 2019

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

mongodump 
    --host <source host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <sourceDbName> 
    --collection <collection-name>

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

mongorestore 
    --host <target host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <targetDbName>
    --collection <collection-name>
    <dump folder/file>

示例:

# backup the whole db (mydb-old):
mongodump -h Cer0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-old
# backup only one collection (mydb-old.users):
mongodump -h Cer0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-old -c users
# restore the whole db (mydb-old) to mydb-new:
mongorestore -h Cer0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-new dump/mydb-old
# restore only one collection (mydb-old.users) to mydb-new.users:
mongorestore -h Cer0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-new -c users dump/mydb-old/users.bson

了解更多:

mongodump mongorestore
56

您可以使用 copydb 或 clone,或者它们的助手copyDatabase()cloneDatabase(),但是有一些注意事项:

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

也许你正在触发其中的一些。

我刚刚测试了

db.copyDatabase("test","testCopy","127.0.0.1") 

它工作得很好。

让我们知道你是否成功。

11

对于 MongoDB v4.2 +:

旧的copyDatabasecloneDatabase已弃用。您应该使用mongodumpmongorestore的组合。

例子:

源数据库:[name =olddb(host =localhost,port =27017)]

Dest.DB:[name =newdb(host =localhost,port =27017)]

方法 1-通过使用归档文件:

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

mongodump --archive="mongodump-old-db" --db=olddb --host=localhost --port=27017

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

mongorestore --archive="mongodump-old-db" --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017

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

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

只需运行:

mongodump --archive --db=olddb --host=localhost --port=27017 | mongorestore --archive  --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017

提示:您可以根据需要包括其他选项,例如 uri (--uri) 或 host (--host) 、 port (--port) 、 username (--username) 、 password (--password) 或0 Source:Official MongoDB Docs regarding the subject.

6

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

db.copyDatabase('crm', 'crm_copy', 'localhost', 'admin', '123456')

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(541)
Zim i:是否可以将OneNote导入Zim
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(33条)