Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

While using MongoDB to manage your network performance and configuration data you might need to move the server, back it up, restore data, etc.  There are many ways you can do this, and in this page we will describe one we used to move data from MongoDB on one server to another server.

This document will not describe details about MongoDB, it assumes some basic knowledge of MongoDB, but not much, for ; For details about MongoDB see http://docs.mongodb.org/.

Table of Contents

What Collections to Migrate

Opmantek are using MongoDB for your data and some of the data is small'ish, while other data is very large.  MongoDB does not use tables, but calls data being stored collections.  Some of these collections with Opmantek products can get quite large and you may want to consider if you need to migrate them.

Access MongoDB

Code Block
mongo
use nmis 

You may need to authenticate to the database, the default user and password for Opmantek Applications is -u opUserRW/op42flow42

Code Block
db.auth("opUserRW","op42flow42");

List the Collections

Code Block
db.getCollectionNames()

...

Code Block
> db.getCollectionNames()
[
  "command_output_log",
  "command_outputs",
  "conversations",
  "customapps",
  "endpoints",
  "flows",
  "iana",
  "reportConfig",
  "reportData",
  "sites",
  "sumCache",
  "system.indexes",
  "system.users"
]

Select Collections to Migrate

For our purposes, we didn't want to save the flows and conversation data, that is too large, but we did want to migrate the endpoints information (over 3 million rows) and the opConfig data, which is in command_output_log, command_outputs

Migrating Collections from MongoDB to MongoDB

Backup and restoration of MongoDB databases follows the same scenario as migrating between MongoDB instances, which is described below. The official MongoDB documentation also has a page documenting the Backup and Restore process.

Create a Working Space

Look for a place to work. MongoDB dumps data into a directory of your choice, which will require sufficient space for the database files to fit.

For this example, I made a folder on the target machine, I was migrating data from a machine called kaos to a machine called nmisdev64, so I ssh'd to nmisdev64 and created a folder called kaos, that became my working directory.

Code Block
ssh nmisdev64
cd /data
mkdir kaos
cd kaos   

Dumping

...

one or more Collections

Depending on how you have installed MongoDB you should have the command /usr/local/mongodb/bin/mongodump if not find mongodump on your computer.

Then dump a collection to a BSON file, if . If you have a user defined on this DB you will need to also use the following in the command line, e.g. "-u opUserRW -p op42flow42" for the default credentials.

If you want to dump all collections in one go, simply omit the "-c somecollection" argument in the invocation below.

Code Block
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c customapps -o .

Once you know it is working, dump some more tables, collections; the endpoints one in testing took a little while.

Code Block
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c sites -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c reportConfig -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c reportData -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c sumCache -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c command_outputs -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c command_output_log -o .
/usr/local/mongodb/bin/mongodump -h kaos -d nmis -c endpoints -o .

Importing

...

one or more Collections

Now you have them on disk you can import them to another Mongo instance, this . The example below assumes you are going to import to a local DB MongoDB, and that the NMIS database has been added and credentials set.  From the same credentials have been set.

To restore specific collections, run the following from the folder where the dumped BSON files are located run the following.:

Code Block
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c customapps customapps.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c sites sites.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c reportConfig reportConfig.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c reportData reportData.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c sumCache sumCache.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c command_outputs command_outputs.bson
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c command_output_log command_output_log.bson
mongorestore -u opUserRW -p op42flow42 -d nmis -c endpoints endpoints.bson

To restore all collections in bulk, simply omit the "-c somecollection dumpfile.bson" arguments, and replace them with the directory holding all your dumpfiles:

Code Block
/usr/local/mongodb/bin/mongorestore -u opUserRW -p op42flow42 -d nmis -c endpoints endpoints.bson


Verify the Collections Exist

Code Block
[root@nmisdev64 data]# mongo
MongoDB shell version: 2.4.1
connecting to: test
> use nmis
switched to db nmis
> db.auth("opUserRW","op42flow42");
1
> db.getCollectionNames()
[
 "command_output_log",
 "command_outputs",
 "customapps",
 "endpoints",
 "reportConfig",
 "reportData",
 "sites",
 "sumCache",
 "system.indexes",
 "system.users",
 "trend"
]
> db.endpoints.count()
3203784

...