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

Posted

技术标签:

【中文标题】将 MongoDB 数据库复制到本地计算机【英文标题】:Copying MongoDB Database into Local Machine 【发布时间】:2014-01-21 00:28:08 【问题描述】:

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

谁能告诉我,我该如何做到这一点?

【问题讨论】:

【参考方案1】:

有copy database 命令我猜应该很适合你的需要。

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)或使用驱动程序编写脚本。

参考here

【讨论】:

非常感谢您的回复。我到底在哪里运行这个命令?很抱歉听起来像个菜鸟,因为我是 MongoDB 的新手,过去 24 小时一直在学习它。 在终端中,首先在终端中启动mongo然后执行这些命令 我收到/* 1 */ "ok" : 0.0, "errmsg" : "unauthorized" 我认为最好使用 mongodump 来解决这个问题 MongoDB 4.0 弃用了 copydb 和 clone 命令及其 mongo shell 帮助程序 db.copyDatabase() 和 db.cloneDatabase()。见docs.mongodb.com/manual/release-notes/4.0-compatibility/…【参考方案2】:

这应该是对@malla 答案的评论,但我没有足够的声誉发表评论,所以我将其发布在这里以供其他人参考。

在第 2 步中,当您尝试从远程服务器转储文件时,请记住添加 out 选项,以便您稍后可以在本地恢复:(在我第一次尝试时,我没有添加它并且它失败了,说转储\db_name 未找到)。我不确定我的方式是否有效。但它对我有用。

第 2 步:

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

第 3 步:

mongorestore -d theNameYouWantForYourLocalDB \<path_you_want_to_dump> + nameOfRemoteDB

【讨论】:

【参考方案3】:

我通过将远程数据库的转储创建到我的本地计算机来做到这一点,然后我将其恢复:

    确保您有一个 mongo 实例启动并运行(例如,在终端窗口的 bin 文件夹中运行 mongod.exe。在我的 Windows 计算机上,它是 C:\mongodb\bin )

    从远程数据库进行转储:打开一个新的终端窗口,再次移动到 bin 文件夹,运行:

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

    (根据自己的情况更改参数。)

    恢复转储的数据库: 转储完成后,运行以下命令以获得本地数据库:

    mongorestore -d theNameYouWantForYourLocalDB dump\nameOfRemoteDB

    (将 nameOfRemoteDB 替换为远程数据库的名称,与前面的命令相同,并将 theNameYouWantForYourLocalDB 替换为您希望新本地数据库具有的名称)

【讨论】:

最好的方法。 db.copyDatabase() 没有复制数据并跳过一些集合。我正在使用小型虚拟机,而一个仅用于 mongo。我不能从这些 vm 中转储并在我的计算机上执行此操作:mongodump -h 00.00.00.00 -d nameOfRemoteDB mongorestore -h 00.00.00.00 -d nameOfRemoteDB ./dump/db 是最好的操作。 您知道它将如何与具有副本集的数据库一起工作吗? 这个答案的第一部分很有帮助,所以 +1。我是Mongo的新手。尝试 mongorestore 步骤时出现此错误:The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=$DATABASE.$COLLECTIONdocs.mongodb.com/database-tools/mongorestore/#examples【参考方案4】:

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

【讨论】:

【参考方案5】:

mongodb 有用于导入和导出的命令行工具。看看mongodump --collection collection --db testmongorestore --collection people --db accounts dump/accounts/

http://docs.mongodb.org/v2.2/reference/mongodump/ http://docs.mongodb.org/v2.2/reference/mongorestore/

这甚至可以通过网络工作

【讨论】:

【参考方案6】:

mongoexport 命令: http://docs.mongodb.org/manual/core/import-export/

或者,mongodump 命令: http://docs.mongodb.org/manual/reference/program/mongodump/

【讨论】:

以上是关于将 MongoDB 数据库复制到本地计算机的主要内容,如果未能解决你的问题,请参考以下文章

我们可以将 MongoDB 嵌入到独立的应用程序中吗? [复制]

使用节点 js 进行 Mongodb 复制

远程桌面怎么无法复制文件到本地盘了+远程服务器+windowsserver2008

MongoDB 维护Replica Set

MongoDB 维护Replica Set

每天一篇,深入学习MongoDB复制集