Blog

Latest technology news, trends and developers guide for business application. Visit this space for more tech updates.

Let’s work on your exciting new project together!

Auto Backup MongoDB Database with NodeJS on server

Node.JS, Big Data, MongoDB

This tutorial describes the process for Auto Backup MongoDB Database with NodeJS on server.

Prerequisites:

Step 1

Create a js file in your project folder called mongodb_backup.js and add below code.

Replace variables < databaseUsername >, < databasePassword >, < databaseName > , < serverPath > with the values of your database.

var fs = require('fs');
var _ = require('lodash');
var exec = require('child_process').exec;

var dbOptions =  {
user: '<databaseUsername>',
pass: '<databasePassword>',
host: 'localhost',
port: 27017,
database: '<databaseName>',
autoBackup: true, 
removeOldBackup: true,
keepLastDaysBackup: 2,
autoBackupPath: '<serverPath>' // i.e. /var/database-backup/
};

	/* return date object */
exports.stringToDate = function (dateString) {
    return new Date(dateString);
}
	
	/* return if variable is empty or not. */
export.empty = function(mixedVar) {
    var undef, key, i, len;
    var emptyValues = [undef, null, false, 0, '', '0'];
    for (i = 0, len = emptyValues.length; i < len; i++) {
        if (mixedVar === emptyValues[i]) {
        return true;
        }
    }
    if (typeof mixedVar === 'object') {
        for (key in mixedVar) {
return false;
        }
        return true;
    }
    return false;
};


	// Auto backup script

dbAutoBackUp: function () {
// check for auto backup is enabled or disabled
    if (dbOptions.autoBackup == true) {
        var date = new Date();
        var beforeDate, oldBackupDir, oldBackupPath;
        currentDate = this.stringToDate(date); // Current date
        var newBackupDir = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate();
        var newBackupPath = dbOptions.autoBackupPath + 'mongodump-' + newBackupDir; // New backup path for current backup process
        // check for remove old backup after keeping # of days given in configuration
        if (dbOptions.removeOldBackup == true) {
            beforeDate = _.clone(currentDate);
            beforeDate.setDate(beforeDate.getDate() - dbOptions.keepLastDaysBackup); // Substract number of days to keep backup and remove old backup
            oldBackupDir = beforeDate.getFullYear() + '-' + (beforeDate.getMonth() + 1) + '-' + beforeDate.getDate();
            oldBackupPath = dbOptions.autoBackupPath + 'mongodump-' + oldBackupDir; // old backup(after keeping # of days)
        }
        var cmd = 'mongodump --host ' + dbOptions.host + ' --port ' + dbOptions.port + ' --db ' + dbOptions.database + ' --username ' + dbOptions.user + ' --password ' + dbOptions.pass + ' --out ' + newBackupPath; // Command for mongodb dump process

        exec(cmd, function (error, stdout, stderr) {
            if (this.empty(error)) {
                // check for remove old backup after keeping # of days given in configuration
              	if (dbOptions.removeOldBackup == true) {
                    if (fs.existsSync(oldBackupPath)) {
                        exec("rm -rf " + oldBackupPath, function (err) { });
                    }
                }
            }
        });
    }
}

Step 2

To create cron install cron module from NPM package manager https://www.npmjs.com/package/cron using below command

npm install cron –save

Add below code into your server.js / main.js / index.js

global.CronJob = require(‘Your path to cron.js file’); 

Now create cron.js file in your project and paste below code in it.

var CronJob = require('cron').CronJob;
	var Cron = require('./mongodb_backup.js');

	new CronJob('0 0 0 * * *', function() {
    Cron.dbAutoBackUp();
}, null, true, 'America/New_York');

Any questions or problems, please, ask us and We’ll happy to help you.

Digital Transformations Re-Engineering for Success for the 21st Century

Digital services have impacted the providers in three major areas-revenue generation, enhanced customer experience, and...

8 Valuable Tips to Master Best Code Practices in Node.JS

As one of the most popular open source platforms for developing server applications, Node.JS has...

Top five Consumer and Enterprise Mobile Apps Trends that will revolutionize Device Interaction

Technological evolution is an ongoing process and decade after decade enterprises and consumers have experienced...

We are always happy to hear from you - Share your business requirements. Our business experts will reach you shortly

 

Select Your Requirement

Secure : We'll ensure, all the information provided by you will not be shared with anyone and your details are completely safe.

We respect your privacy. *Privacy Policy

Select Your Requirement

Secure : We'll ensure, all the information provided by you will not be shared with anyone and your details are completely safe.

We respect your privacy. *Privacy Policy