Coder Social home page Coder Social logo

mup-data-backup's Introduction

MongoDB Data Backup deployed with Mup

These commands run well if meteor app deployed with mup tool. Mup creates docker for mongodb hence taking backup becomes easy with these commands.

Backup

Take backup of running app data from docker then copy to local folder out of docker.

docker exec -it mongodb mongodump --archive=/root/mongodump.gz --gzip

docker cp mongodb:/root/mongodump.gz mongodump_$(date +%Y-%m-%d_%H-%M-%S).gz

Copy backup to server

Move data to another server/local machine or a backup location

scp /path/to/dumpfile root@serverip:/path/to/backup

Delete old data from meteor deployment

Get into mongo console running in docker then drop current database before getting new data.

docker exec -it mongodb mongo appName

db.runCommand( { dropDatabase: 1 } )

Restore data to meteor docker

docker cp /path/to/dumpfile mongodb:/root/mongodump.gz

docker exec -it mongodb mongorestore --archive=/root/mongodump.gz --gzip

Drop target database and restore in one line

docker exec -it mongodb mongorestore --drop --archive=/root/mongodump.gz --gzip

Drops only collections present in dump.

script.sh to make it simpler.

Thanks to yanickrochon

Go to script.sh

mup-data-backup's People

Contributors

xpressabhi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mup-data-backup's Issues

Add actual script so people can contribute

As suggested by some people, this can be a plugin on top of mup. As such it would be nice to actually have something to contribute to, either a Bash script or JavaScript module.

In that sense, and with the spirit of open sourceness (is that a word?) this is what I currently have; a very simple script that allows me to backup, restore, and access MongoDB

#!/bin/bash
#
# Meteor Database Management Script
#
# Author : Yanick Rochon <[email protected]>
# Last Modified : 2017-12-26
#
SERVER_USER={user name}
SERVER_ADDR={host name}
APP_NAME={app name}

SSH_PATH=$SERVER_USER@$SERVER_ADDR

backup() {
  BACKUP_PATH=$1 || "."
  BACKUP_FILE="mongodump_$(date +%Y-%m-%d_%H-%M).gz"
  TEMP_ARCHIVE_DOCKER="/root/mongodump.gz"
  TEMP_ARCHIVE="~/$BACKUP_FILE"

  printf "Backup database to $BACKUP_PATH/$BACKUP_FILE..."
  mkdir -p $BACKUP_PATH > /dev/null
  ssh -o LogLevel=QUIET -t $SSH_PATH "sudo docker exec -it mongodb mongodump --archive=$TEMP_ARCHIVE_DOCKER --gzip --quiet && sudo docker cp mongodb:$TEMP_ARCHIVE_DOCKER $TEMP_ARCHIVE" > /dev/null
  scp $SSH_PATH:$TEMP_ARCHIVE $BACKUP_PATH > /dev/null
  ssh -o LogLevel=QUIET -t $SSH_PATH "rm -f $TEMP_ARCHIVE" > /dev/null
  printf " Done!\n"
}


restore() {
  BACKUP_PATH=$1
  BACKUP_FILE=$(basename $1)
  TEMP_ARCHIVE="~/$BACKUP_FILE"
  TEMP_ARCHIVE_DOCKER="/root/mongodump.gz"

  # TODO : test if $1 is an existing file

  printf "Restoring database from $BACKUP_FILE..."
  scp $BACKUP_PATH $SSH_PATH:$TEMP_ARCHIVE > /dev/null
  ssh -o LogLevel=QUIET -t $SSH_PATH "sudo docker cp $TEMP_ARCHIVE mongodb:$TEMP_ARCHIVE_DOCKER && sudo docker exec -it mongodb mongorestore --drop --archive=$TEMP_ARCHIVE_DOCKER --gzip --quiet && rm -f $TEMP_ARCHIVE" > /dev/null
  printf " Done!\n"
}


console() {
  printf "Opening DB management console...\n"
  ssh -o LogLevel=QUIET -t $SSH_PATH "sudo docker exec -it mongodb mongo $APP_NAME"
}


showHelp() {
  printf "usage: managedb.sh [command]\n"
  printf "\n"
  printf "Commands:\n"
  printf "   backup [path]    backup the server into a local directory.\n"
  printf "                    The archive will be created inside the specified\n"
  printf "                    directory, with the name mongodump_{date}.gz\n"
  printf "   restore [path]   restore a local backup archive to the server.\n"
  printf "                    The archive should be a .gz file\n"
  printf "   console          open the mongo console.\n"
  printf "\n"
}


case $1 in
  backup)
    backup $2
	;;
  restore)
    restore $2
  ;;
  console)
    console
  ;;
  *)
    showHelp
  ;;
esac
```

There's a lot of things to be done with this script, but if it may help someone, so be it.
  

In Restore cmd like Backup cmd???

Restore data to meteor docker (mongodump)

docker cp /path/to/dumpfile mongodb:/root/mongodump.gz

docker exec -it mongodb mongodump --archive=/root/mongodump.gz --gzip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.