Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Shell script to backup MySql database
- # To backup Mysql databases file to /backup dir and later pick up by your
- # script. You can skip few databases from backup too.
- MyUSER="root" # USERNAME
- MyPASS="fI78SbTWjzgc" # PASSWORD
- MyHOST="localhost" # Hostname
- # Linux bin paths, change this if it can't be autodetected via which command
- MYSQL="$(which mysql)"
- MYSQLDUMP="$(which mysqldump)"
- CHOWN="$(which chown)"
- CHMOD="$(which chmod)"
- GZIP="$(which gzip)"
- # Backup Dest directory, change this if you have someother location
- DEST="/home/backups/mysql"
- # Main directory where backup will be stored
- MBD="$DEST"
- # Get hostname
- HOST="$(hostname)"
- # Get data in dd-mm-yyyy format
- NOW="$(date +"%Y%m%d")"
- echo $NOW: Starting MySQL backup on $HOST
- echo Backup location: $DEST
- # File to store current backup file
- FILE="databasedump"
- # Store list of databases
- DBS=""
- # DO NOT BACKUP these databases
- IGGY="information_schema sys performance_schema mysql"
- [ ! -d $MBD ] && mkdir -p $MBD || :
- # Get all database list first
- DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
- echo Databases to backup:
- echo $DBS
- declare -i RESULT
- RESULT=0
- declare -i THISRESULT
- THISRESULT=0
- for db in $DBS
- do
- skipdb=-1
- if [ "$IGGY" != "" ];
- then
- for i in $IGGY
- do
- [ "$db" == "$i" ] && skipdb=1 || :
- done
- fi
- if [ "$skipdb" == "-1" ] ; then
- FILE="$MBD/$db.$HOST.$NOW.gz"
- touch $FILE
- chown root.root $FILE
- chmod 0600 $FILE
- # do all inone job in pipe,
- # connect to mysql using mysqldump for select mysql database
- # and pipe it out to gz file in backup dir :)
- $MYSQLDUMP --set-gtid-purged=OFF --single-transaction --routines -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
- THISRESULT=$?
- RESULT=RESULT+THISRESULT
- echo Dump file for database $db should be here:
- echo `ls -l $FILE`
- if [[ $THISRESULT -ne 0 ]]; then
- echo "!!!! An error occured while running mysqldump. Please report this !!!!"
- fi
- fi
- done
- echo Backup finished at `date`
- if [[ $RESULT -ne 0 ]]; then
- echo "!!!! There was at least one error, please report this !!!!"
- fi
- exit $RESULT
Add Comment
Please, Sign In to add comment