Skip to content

Instantly share code, notes, and snippets.

@erans
Last active October 7, 2019 16:59
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save erans/ce21c919921608d064cd to your computer and use it in GitHub Desktop.
Save erans/ce21c919921608d064cd to your computer and use it in GitHub Desktop.
MongoDB ReplicaSet Backup Script on Google Compute Engine and Google Cloud Storage
# Path to boto config file, needed by gsutils
BOTO_CONFIG="/etc/boto.cfg"
# Path in which to create the backup (will get cleaned later)
BACKUP_PATH="/mnt/data/dump/"
# DB name
DB_NAME="mydatabase"
# Google Cloud Storage Bucket Name
BUCKET_NAME="mybackupbucket"
# Don't run on the master of a replica set, only on replicas
IS_MASTER=`mongo --quiet --eval "d=db.isMaster(); print( d['ismaster'] );"`
if [ "$IS_MASTER" == "true" ]
then
exit 2
fi
CURRENT_DATE=`date +"%Y%m%d-%H%M"`
# Backup filename
BACKUP_FILENAME="${DB_NAME}_${CURRENT_DATE}.tar.gz"
# Create the backup
mongodump --db $DB_NAME -o $BACKUP_PATH
cd $BACKUP_PATH
# Archive and compress
tar -cvzf $BACKUP_PATH$BACKUP_FILENAME *
# Copy to Google Cloud Storage
echo "Copying $BACKUP_PATH$BACKUP_FILENAME to gs://$BUCKET_NAME/"
/usr/local/bin/gsutil cp $BACKUP_PATH$BACKUP_FILENAME gs://$BUCKET_NAME/ 2>&1
echo "Copying finished"
echo "Removing backup data"
rm -rf $BACKUP_PATH*
@nikmartin
Copy link

Most excellent, thanks! One correction:

CURRENT_DATE=`date +"%Y%m%d-%H%m"`
should be
CURRENT_DATE=`date +"%Y%m%d-%H%M"`

@urish
Copy link

urish commented Nov 28, 2014

Thanks for sharing!

@erans
Copy link
Author

erans commented Jan 14, 2015

@nikmartin thanks. I've fixed it.

@Endaarios
Copy link

Thanks a lot !
Another correction:
BACKUP_FILENAME="$DB_NAME_$CURRENT_DATE.tar.gz"
should be
BACKUP_FILENAME="${DB_NAME}_${CURRENT_DATE}.tar.gz"

@erans
Copy link
Author

erans commented Oct 7, 2019

Thanks. I've updated it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment