-
-
Save sheharyarn/0f04c1ba18462cddaaf5 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
MONGO_DATABASE="your_db_name" | |
APP_NAME="your_app_name" | |
MONGO_HOST="127.0.0.1" | |
MONGO_PORT="27017" | |
TIMESTAMP=`date +%F-%H%M` | |
MONGODUMP_PATH="/usr/bin/mongodump" | |
BACKUPS_DIR="/home/username/backups/$APP_NAME" | |
BACKUP_NAME="$APP_NAME-$TIMESTAMP" | |
# mongo admin --eval "printjson(db.fsyncLock())" | |
# $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE | |
$MONGODUMP_PATH -d $MONGO_DATABASE | |
# mongo admin --eval "printjson(db.fsyncUnlock())" | |
mkdir -p $BACKUPS_DIR | |
mv dump $BACKUP_NAME | |
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME | |
rm -rf $BACKUP_NAME |
I used part of this to do it in a cron job:
mongodump --host 0.0.0.0 -d mydb --username mayusername --password mypassword --out /var/dbbackups/backup_$(date +%Y%m%d) && cd /var/dbbackups && tar -zcf backup_$(date +%Y%m%d).tar.gz backup_$(date +%Y%m%d)/mydb
Here is also a nice documentation to ensure, that the script will run only once simultaniusly:
This is handy! I also added an option in the output to save based on hostname, should you want to organize it in a distributed fashion.
BACKUP_NAME="$APP_NAME-$HOSTNAME-$TIMESTAMP"
according to this post of mongo DB team we can use new --archive=<name>
and --gzip
options to simpify script since mongo v.3.2.x
ARCHIVE_PATH="$BACKUPS_DIR/$BACKUP_NAME.gz"
$MONGODUMP_PATH --db $MONGO_DATABASE --archive=$ARCHIVE_PATH --gzip
How can you make it delete dumps after 7 days ?
Thanks man!
Thanks, Mate!!
Thanks for this... really handy
Great! Thanks
When I am running the script getting error "Failed to authenticate admin@trzprod with mechanism MONGODB-CR: AuthenticationFailed key mismatch"
Please help me out this
How can you make it delete dumps after 7 days ?
The command below will only save for newest 7 files.
ls --color=no -t | sed -e '1,7d' | xargs -d '\n' rm
That great @yueyericardo, How we can save 15-day dumps in S3, older should delete automatically.
please let me know and I want to add the lines to exiting the script
That great @yueyericardo, How we can save 15-day dumps in S3, older should delete automatically.
please let me know and I want to add the lines to exiting the script
Hi, simply add this to the end of script.
# only keep the newest 15 backups
cd $BACKUPS_DIR
ls --color=no -t | sed -e '1,15d' | xargs -d '\n' rm
please let me know and I want to add the lines to exiting the script
#!/bin/bash
MONGO_DATABASE="your_db_name"
APP_NAME="your_app_name"
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"
TIMESTAMP=`date +%F-%H%M`
MONGODUMP_PATH="/usr/bin/mongodump"
BACKUPS_DIR="/home/username/backups/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
#=====================================================================
DAYSTORETAINBACKUP="15"
#=====================================================================
# mongo admin --eval "printjson(db.fsyncLock())"
# $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE
$MONGODUMP_PATH -d $MONGO_DATABASE
# mongo admin --eval "printjson(db.fsyncUnlock())"
mkdir -p $BACKUPS_DIR
mv dump $BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
rm -rf $BACKUP_NAME`
#=====================================================================
find $BACKUPS_DIR -type f -mtime +$DAYSTORETAINBACKUP -exec rm {} +
echo "--------------------------------------------"
echo "Database backup complete!"
#=====================================================================
i added the lines for you 👍
please let me know and I want to add the lines to exiting the script
#!/bin/bash MONGO_DATABASE="your_db_name" APP_NAME="your_app_name" MONGO_HOST="127.0.0.1" MONGO_PORT="27017" TIMESTAMP=`date +%F-%H%M` MONGODUMP_PATH="/usr/bin/mongodump" BACKUPS_DIR="/home/username/backups/$APP_NAME" BACKUP_NAME="$APP_NAME-$TIMESTAMP" #===================================================================== DAYSTORETAINBACKUP="15" #===================================================================== # mongo admin --eval "printjson(db.fsyncLock())" # $MONGODUMP_PATH -h $MONGO_HOST:$MONGO_PORT -d $MONGO_DATABASE $MONGODUMP_PATH -d $MONGO_DATABASE # mongo admin --eval "printjson(db.fsyncUnlock())" mkdir -p $BACKUPS_DIR mv dump $BACKUP_NAME tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME rm -rf $BACKUP_NAME` #===================================================================== find $BACKUPS_DIR -type f -mtime +$DAYSTORETAINBACKUP -exec rm {} + echo "--------------------------------------------" echo "Database backup complete!" #=====================================================================i added the lines for you 👍
There is one little error make this line
rm -rf $BACKUP_NAME`
to this:
rm -rf $BACKUP_NAME
Otherwise it script broken on line 24.
However, thanks for it. 👍
#!/bin/bash
mongo_dump_user="mongo_dump"
mongo_dump_password=""
mongo_dump_host="127.0.0.1"
mongo_dump_port="27017"
mongo_dump_db="db"
mongo_dump_storage="/storage/mongo/daily"
if [[ ! -e $mongo_dump_storage ]]
then
mkdir -p ${mongo_dump_storage}
fi
echo "create backup" $(date +%Y-%m-%d)
mongodump --host ${mongo_dump_host} --db ${mongo_dump_db} --username ${mongo_dump_user} --password ${mongo_dump_password} --gzip --archive=${mongo_dump_storage}/parser_$(date +%Y-%m-%d).gz
echo "remove old backup"
find ${mongo_dump_storage} -name "*.gz" -type f -mtime +30 -exec rm -f {} \;
Hi @serverguru666, just wondering does mongoDB authenticationType have anything to do with this error that i get when i try mongodump using your connection format -
2020-05-31T23:53:02.921+0000 Failed: can't create session: could not connect to server: connection() : auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-256": (AuthenticationFailed) Authentication failed.
NB: The issue is that the command doesn't want me to add --password
as plaintext, if i remove the --password
flag it prompts me for password and works ok.
How to delete after 1 week please let me know..
Make it executable:
Schedule a Cronjob:
Enter this in a new line:
Also See: mongo-sync