Skip to content

mithya-team/s3-mongo-backup

 
 

Repository files navigation

s3-mongo-backup

This Module Helps in automating mongodb database Backups and uploading them to AWS S3.

Features

  • Supports Promises
  • Uploads Backups to S3 in "mongoDbBackups" folder
  • Uses GZip Compression to reduce Backup Size

Usage

Import

const MBackup = require('s3-mongo-backup');

Create a configuration Object

var backupConfig = {
   mongodb: "mongodb://username:password@localhost:27017", // MongoDB Connection URI 
    s3: {
        accessKey: "",  //AccessKey
        secretKey: "",  //SecretKey
        region: "",     //S3 Bucket Region
        accessPerm: "private", //S3 Bucket Privacy, Since, You'll be storing Database, Private is HIGHLY Recommended
        bucketName: "" //Bucket Name
    },
    keepLocalBackups: false,  //If true, It'll create a folder in project root with database's name and store backups in it and if it's false, It'll use temporary directory of OS
    noOfLocalBackups: 5, //This will only keep the most recent 5 backups and delete all older backups from local backup directory
    timezoneOffset: 300 //Timezone, It is assumed to be in hours if less than 16 and in minutes otherwise
}

Or 

var backupConfig = {
    mongodb: {
        "database": "freecodecamp",
        "host": "localhost",
        "username": "admin",
        "password": "password",
        "port": 27017
    },   
    s3: {
        accessKey: "",  //AccessKey
        secretKey: "",  //SecretKey
        region: "",     //S3 Bucket Region
        accessPerm: "private", //S3 Bucket Privacy, Since, You'll be storing Database, Private is HIGHLY Recommended
        bucketName: "" //Bucket Name
    },
    keepLocalBackups: false,  //If true, It'll create a folder in project root with database's name and store backups in it and if it's false, It'll use temporary directory of OS
    noOfLocalBackups: 5, //This will only keep the most recent 5 backups and delete all older backups from local backup directory
    timezoneOffset: 300 //Timezone, It is assumed to be in hours if less than 16 and in minutes otherwise
}

Call the Function and provide Configuration Object to it.

MBackup(backupConfig)
  .then(
    onResolve => {
    // When everything was successful
      console.log(onResolve);
},
    onReject => {
    // When Anything goes wrong!
      console.log(onReject);
});

See examples directory for more examples

Timezone offset's Purpose

Database zip files are stored in format {database_name}_{YYYY-MM-DDTHH:mm:ss}. Here, If you don't provide a Timezone offset, It'll assume UTC timezone and name all the backups accordingly. Now, If something goes wrong at "2:00 PM" in your timezone and you need to restore a backup made at "1:00 PM" in your timezone, You'll have to change UTC time to your time and then see which backup you have to restore.

But If you provide a timezone of where ever you live, You can immdiately recognise which backup can be useful.

To see how to provide Timezone offset, Please refer to moment#utcOffset

License

MIT

Changelog

2.0.0 -> Uses MongoDB Connection URI directly, instead of asking for individual values of username, database name, password and database host.

NOTE

  1. This module uses mongodump to create backup of database, You need to have it installed on the machine on which you are using this module.

  2. To restore the generated backups

    mongorestore --host localhost --port=27017 --gzip --archive=<path to backup.gz>

About

Mongodb backups to S3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%