如何在MongoDB中执行一次性数据库同步到另一个数据库?

时间:2012-09-14 06:27:33

标签: mongodb synchronization database

我有单独的开发和生产MongoDB服务器,我想在开发服务器中保留实际数据一段时间。我应该使用它:mongodumpmongoimport或其他什么?

Clarification:我想将数据从生产复制到开发。

3 个答案:

答案 0 :(得分:9)

如果它是一次性事物

并且您希望精确控制参数,例如要同步的集合,您应该使用:

  • mongodump将生产数据库的bson文件转储到本地计算机
  • mongorestore然后,检索本地数据库中的转储BSON文件

否则您应该查看mongo-sync

这是我为自己写的一个脚本,当我不得不经常将我的本地MongoDB数据库复制到项目的生产数据库中时(我知道它是愚蠢的)。

将数据库详细信息放入config.yml后,您可以使用两个简单的命令开始同步:

./mongo-sync push       # Push DB to Remote
./mongo-sync pull       # Pull DB to Local

如果您在某个项目中使用它,最好将config.yml添加到.gitignore

mongo-sync demo gif

答案 1 :(得分:8)

您可以使用db.copyDatabase(...)db.cloneDatabase(...)命令:

http://www.mongodb.org/display/DOCS/Copy+Database+Commands

这比mongodump / mongorestore快,因为它会跳过在磁盘上创建bson表示。

答案 2 :(得分:1)

如果希望dev数据库看起来与生产数据库完全相同,则只需复制文件即可。我目前正在运行一个设置,我在我的桌面和我的笔记本之间使用Dropbox同步我的MongoDB数据库 - 即使它完美无瑕。