将 MongoDB 数据库复制到本地计算机

19

我有一个MongoDB数据库,存储在远程服务器上,其IP地址为192.168.1.20,位于本地网络上。出于开发和测试目的,并且由于出于安全考虑不允许我修改或删除服务器上的数据库,我想将数据库复制到我的本地机器上供个人使用。

请问有人能告诉我如何实现这一目标吗?

7个回答

43

我通过在本地创建远程数据库的转储,然后进行恢复来实现此操作:

  1. 确保你的Mongo实例正在运行中(例如,在终端窗口中运行mongod.exe。在我的Windows电脑上是C:\mongodb\bin)

  2. 从远程数据库创建一个转储文件:打开一个新的终端窗口,再次进入bin文件夹,运行以下命令:

    mongodump -h example.host.com --port 21018 -d dbname --username username --password yourpass

    (更改参数以适应您自己的情况。)

  3. 恢复已转储的数据库:转储文件制作完成后,运行以下命令,以使您拥有本地数据库:

    mongorestore -d 您要为本地数据库命名的名称 dump\nameOfRemoteDB

    (用远程数据库的名称替换nameOfRemoteDB,该名称与上一个命令中相同,并用您想要的新本地数据库的名称替换theNameYouWantForYourLocalDB)


1
最佳操作方式是,db.copyDatabase() 没有复制数据并跳过了一些集合。我正在使用小型虚拟机,其中一个专门用于Mongo。我无法从这些虚拟机中转储,并且使用以下命令从我的计算机执行此操作是最好的选择: mongodump -h 00.00.00.00 -d nameOfRemoteDB mongorestore -h 00.00.00.00 -d nameOfRemoteDB ./dump/db - Georgio
你知道在具有副本集的数据库中它将如何工作吗? - Joseph
这个答案的第一部分很有帮助,所以点赞。我是Mongo的新手。在尝试mongorestore步骤时,我遇到了这个错误:--db和--collection标志已弃用,请改用--nsInclude,即使用--nsInclude = $ {DATABASE}。$ {COLLECTION} https://docs.mongodb.com/database-tools/mongorestore/#examples - Ryan
为了完成答案,我不得不设置 --authenticationDatabase admin,就像这个 stack overflow 帖子 上所指示的那样。 - Mister Q

12

有一个复制数据库的命令,我想这应该很适合您的需求。

db.copyDatabase("DATABASENAME", "DATABASENAME", "localhost:27018");

或者,您可以停止MongoDb,将数据库文件复制到另一个服务器,并在那里运行MongoDb的实例。


编辑 2020-04-25

引用自MongoDB文档

MongoDB 4.0 弃用了 copydbclone 命令及其mongo shell助手 db.copyDatabase()db.cloneDatabase()

作为替代,用户可以使用 mongodumpmongorestore(使用 mongorestore选项--nsFrom--nsTo)或编写使用驱动程序的脚本。

参考此处


非常感谢您的回复。我应该在哪里运行这个命令?很抱歉听起来像个新手,因为我是MongoDB的新手,过去24小时一直在学习它。 - Razor
1
在终端中,首先启动Mongo,然后执行这些命令。 - sas
{ "ok": 0, "errmsg": "不是主节点", "code": 10107 } 错误 - prayagupa
2
我认为最好使用mongodump来完成这个任务。 - iwein
3
MongoDB 4.0 废弃了 copydb 和 clone 命令以及它们的 mongo shell 辅助工具 db.copyDatabase() 和 db.cloneDatabase()。详见 https://docs.mongodb.com/manual/release-notes/4.0-compatibility/#copydb-and-clone-commands。 - agbb
显示剩余3条评论

7

我希望将这个评论留给 @malla 的答案,但是我没有足够的声望来进行评论,所以我在这里发布供其他人参考。

在第二步中,当你尝试从远程服务器转储文件时,请记得添加 out 选项,以便稍后在本地还原:(在我的第一次尝试中,我没有添加它,导致失败,显示 dump\db_name 找不到)。我不确定我的方法是否高效,但对我而言是有效的。

第二步:

mongodump -h example.host.com --port 21018  -d dbname --username username --password yourpass --out <path_you_want_to_dump>

第三步:

mongorestore -d theNameYouWantForYourLocalDB \<path_you_want_to_dump> + nameOfRemoteDB


1

0

您可以使用mongoexport命令将数据库复制到本地计算机。


0

从服务器到本地机器

使用ssh命令连接到远程服务器:
ssh user@serverip

一旦您登录到服务器,使用mongodump命令创建数据库备份:

mongodump --db dbname --out backupdir

使用“scp”命令将备份从服务器复制到本地系统,您可以按照以下步骤操作:

scp -r user@serverip:/path/to/backupdir /path/to/localdir


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接