我有一个 MongoDB 数据库,它位于本地网络上 IP 地址为 192.168.1.20 的远程服务器机器上。出于开发和测试目的,并且由于出于安全目的我不允许修改或删除服务器上的数据库,因此我想将数据库复制到本地机器上以供个人使用。
谁能告诉我,我该如何实现?
我通过创建远程数据库的转储到我的本地机器来做到这一点,然后我恢复它:
确保您已启动并运行 mongo 实例(例如,从终端窗口中的 bin 文件夹运行
mongod.exe
。在我的 Windows 计算机上,它位于 C:\mongodb 中)从远程数据库进行转储:打开一个新的终端窗口,再次移动到 bin 文件夹,运行:
mongodump -h example.host.com --port 21018 -d dbname --username username --password yourpass
(根据自己的情况更改参数。)
恢复转储的数据库: 转储完成后,运行以下命令以便您拥有本地数据库:
mongorestore -d theNameYouWantForYourLocalDB dump\nameOfRemoteDB
(将 nameOfRemoteDB 替换为远程数据库的名称,与之前的命令相同,并将 NameYouWantForYourLocalDB 替换为您希望新的本地数据库具有的名称)
有 copy database 命令,我想应该很适合您的需要。
db.copyDatabase("DATABASENAME", "DATABASENAME", "localhost:27018");
或者,您可以停止 MongoDb,将数据库文件复制到另一台服务器并在那里运行 MongoDb 实例。
编辑 2020-04-25
引用自 MongoDB 文档
MongoDB 4.0 弃用了
和copydb
命令及其 mongo shell 助手clone
和db.copyDatabase()
.db.cloneDatabase()
作为替代方案,用户可以使用
和mongodump
(使用mongorestore
选项mongorestore
和--nsFrom
)或使用驱动程序编写脚本。--nsTo
参考这里
这应该是对@malla 的回答的评论,但我没有足够的声誉来发表评论,所以我把它贴在这里供其他人参考。
在第2步中,当你尝试从远程服务器转储文件时,记得添加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
mongoexport命令: http://docs.mongodb.org/manual/core/import-export/
或者,mongodump 命令: http://docs.mongodb.org/manual/reference/program/mongodump/
mongodb 有用于导入和导出的命令行工具。看看
mongodump --collection collection --db test
和mongorestore --collection people --db accounts dump/accounts/
http://docs.mongodb.org/v2.2/reference/mongodump/ http://docs.mongodb.org/v2.2/reference/mongorestore/
这甚至可以通过网络工作
您可以使用mongoexport命令将数据库复制到本地机器。
使用 ssh 命令连接到您的远程服务器:
ssh user@serverip
登录到服务器后,使用 mongodump 命令创建数据库备份:
mongodump --db dbname --out backupdir
要使用“scp”命令将备份从您的服务器复制到本地系统,您可以按照以下步骤操作:
scp -r user@serverip:/path/to/backupdir /path/to/localdir