Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to perform one-time DB sync to another DB in MongoDB?

I have separate development and production MongoDB servers and I want to keep actual data in development server for sometime. What I should use for it: mongodump, mongoimport or something else?

Clarification: I want to copy data from production to development.

like image 863
acelot Avatar asked Sep 14 '12 06:09

acelot


3 Answers

If it's a one time-thing

and you want fine control over parameters such as which collections to sync, you should use:

  • mongodump to dump bson files of your Production DB to your local machine
  • mongorestore to then, retrieve the dumped BSON files in your Local DB

Otherwise you should check out mongo-sync

It's a script I wrote for my self when I had to constantly copy my Local MongoDB database to and from my Production DB for a Project (I know it's stupid).

Once you put your DB details in config.yml, you can start syncing using two simple commands:

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

If you use it inside some project, it's a good idea to add config.yml to .gitignore

mongo-sync demo gif

like image 81
Sheharyar Avatar answered Oct 08 '22 22:10

Sheharyar


You can use the db.copyDatabase(...) or db.cloneDatabase(...) commands:

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

This is faster than mongodump / mongorestore because it skips creating the bson representation on disk.

like image 36
Thomas Avatar answered Oct 08 '22 22:10

Thomas


When you want the dev database to look exactly like the production database, you can just copy the files. I am currently running a setup where I synchronize my MongoDB database between my desktop and my notebook with dropbox - even that works flawless.

like image 3
Philipp Avatar answered Oct 08 '22 21:10

Philipp