0.1.4 • Published 8 years ago

mongo-dumper v0.1.4

Weekly downloads
4
License
MIT
Repository
github
Last release
8 years ago

mongo-dumper

Dump and restore single MongoDB instance and Replica set in Node.js

Mongo-dumper provides ground for writing Node.js code focused on dumping and restoring Mongo Databases. It is based on the concept of a Dumper, a vehicle designed for carrying bulk material. Considering that idea, we provide some kinds of Dumpers:

  • DatabaseToFileDumper
  • FileToDatabaseDumper(TODO)
  • DatabaseToDatabaseDumper(TODO)

In other words, load a Dumper with settings and call transport() to make it happen!

Awesome features

  • single instance and replica set support - make a hot backup on them
  • timestamp labeled backup files - output files are saved with a moment.js timestamp reference
  • log files - generate log files for each backup
  • compression - tar.gz (Linux only)
  • authentication - dump secure MongoDbs

Usage

It's a piece of cake:

npm install mongo-dumper --save
var Dumper = require('mongo-dumper').SomeDumper;

var settings = {
	hosts: 'localhost:27017,localhost:27018,localhost:27019',
	authentication : {
		database : 'admin',
		user : 'dbAdmin',
		password : 'dbAdmin'
	}
};

var mongoDumper = new Dumper(settings);

mongoDumper.transport();

Dumpers

Dumper objects contain one main function: transport. They receive a settings object when instanciated, each one validated accordingly to Dumper type object:

function SomeDumper(dumperSettings) {
	// validate dumper settings
};

SomeDumper.prototype.transport = function(){
	// dump, restore or both
}

DatabaseToFileDumper

Makes a backup of datatbase into the filesystem. It is built as a wrapper of mongodump tool.

Dumper settings
 var dumperSettings = {
 	"hosts" : "",
	"authentication" : {
		"user" : "",			// if authentication exists, default admin
		"password" : "",
		"database" : ""
	},
	"db" : {
		"name" : "",
		"collection" : {
			"name" : "",
			"query" : ""
		}
	},
	"output" : {
		"prefix" : "",			// default dump
		"filepath" : "",
		"timestampLabel" : "", 	// moment.js format e.g. 'YYYY-MM-DD_HH-mm-ss'
		"compression": "" 		// tar.gz available
	}
 }
  • hosts - in case of replica set it is a comma separated list of hosts. Otherwise, a single host (default:localhost: 27017)
  • authentication - Secure database authentication
    • user - username
    • password - password
    • database - authentication database (default: admin)
  • db - specific database
    • name - db name
    • collection - specific collection
      • name - collection name
      • query - backup a slice of data
  • output - output backup files
    • prefix - file/folder prefix (default: dump)
    • filepath - where to drop backup files (default: source path)
    • timestampLabel - moment.js timestamp label (e.g. 'YYYY-MM-DD_HH-mm-ss' = 'prefix_2016-01-18_01-39-03')
    • compression - tar.gz available and linux only supported
Sample usage
var Dumper = require('mongo-dumper').DatabaseToFileDumper;

var settings = {
	hosts: 'localhost:27023,localhost:27024,localhost:27025',
	authentication : {
		database : 'admin',
		user : 'dbAdmin',
		password : 'dbAdmin'
	},
	output: {
		timestampLabel : 'YYYY-MM-DD_HH-mm-ss',
		prefix : 'lambda'
	}
};

var mongoDumper = new Dumper(settings);

mongoDumper.transport();
Setting Environment Variables

Environment Variables have higher priority. There is some options available so far:

  • DUMPER_HOSTS - Same as config file
  • DUMPER_AUTH - if true search for environment authentication variable
  • DUMPER_AUTH_DB - Same as config file
  • DUMPER_AUTH_USER - Same as config file
  • DUMPER_AUTH_PASSWORD - Same as config file
DUMPER_HOSTS=localhost:27017,localhost:27018,localhost:27019 / 
DUMPER_AUTH=true / 
DUMPER_AUTH_USER=dbAdmin / 
DUMPER_AUTH_PASSWORD=dbAdmin / 
node index.js

FileToDatabaseDumper

TODO

DatabaseToDatabaseDumper

TODO

CLI tool and Docker

TODO

Dependencies

  • mongodb or docker
  • Compression works only in Linux (calling tar command)

Futures releases

  • support to delayed documemts
  • support to Sharded cluster
  • Db-to-stream dump
  • checksum
  • Docker Dumper (do not need mongo installed)

License

mongo-dumper is freely distributable under the terms of the MIT license.