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

Raz*_*zor 14 database localhost local mongodb

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

任何人都可以告诉我,我怎么做到这一点?

mal*_*lla 28

我通过创建远程数据库到我的本地计算机的转储来执行此操作,然后我将其还原:

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

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

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

    (更改参数以适合您自己的情况.)

  3. 还原转储的数据库:转储完成后,运行以下命令以便拥有本地数据库:

    mongorestore -d theNameYouWantForYourLocalDB dump\nameOfRemoteDB

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


sas*_*sas 9

复制数据库命令,我想应该适合您的需要.

db.copyDatabase("DATABASENAME", "DATABASENAME", "localhost:27018");
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为最好为此使用 mongodump (2认同)
  • 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 (2认同)

小智 5

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

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

第2步:

mongodump -h example.host.com --port 21018  -d dbname --username username --password yourpass --out <path_you_want_to_dump>
Run Code Online (Sandbox Code Playgroud)

第 3 步:

mongorestore -d theNameYouWantForYourLocalDB \<path_you_want_to_dump> + nameOfRemoteDB
Run Code Online (Sandbox Code Playgroud)