Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
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*

Most excellent, thanks! One correction:

CURRENT_DATE=`date +"%Y%m%d-%H%m"`
should be
CURRENT_DATE=`date +"%Y%m%d-%H%M"`
urish commented Nov 28, 2014

Thanks for sharing!

Owner
erans commented Jan 14, 2015

@nikmartin thanks. I've fixed it.

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