Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # For create user `GRANT LOCK TABLES, SELECT ON DATABASE.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';`
- #
- #### MySQL CREDENTIAL ###
- HOST='localhost'
- USER='root'
- PASSWD=''
- DBS='db01 db02 db03' # Databases separated by spaces
- BACKUPDIRECTORY='/tmp/' # Ex: /tmp/
- EMAIL='pepito@mail.com'
- #### MySQL CREDENTIAL ###
- basesize=800 # Base size compare 785 normal to mysqldump
- d=$(date +%Y-%m-%d_%H%M%S)
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Starting backup on '$HOST
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Starting backup on '$HOST >> backup_$d.log
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Saving on '$BACKUPDIRECTORY
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Saving on '$BACKUPDIRECTORY >> backup_$d.log
- # create dump file by database with date
- for DB in $DBS
- do
- filename=$DB'_'$d'.sql.gz'
- path=$BACKUPDIRECTORY$filename
- echo $(date +%Y-%m-%d' '%H:%M:%S)" Init "$filename
- echo $(date +%Y-%m-%d' '%H:%M:%S)" Init "$filename >> backup_$d.log
- (mysqldump -h $HOST -u $USER --password=$PASSWD $DB | gzip > $path) 2> error_$d.log
- size=$(cat $path | wc -c)
- # check file dump is valid
- if [ $size -lt $basesize ]; then
- echo $(date +%Y-%m-%d' '%H:%M:%S)" * "$filename" failed *"
- echo $(date +%Y-%m-%d' '%H:%M:%S)" * "$filename" failed *" >> backup_$d.log
- rm -f $path
- else
- echo $(date +%Y-%m-%d' '%H:%M:%S)" - "$filename" ready"
- echo $(date +%Y-%m-%d' '%H:%M:%S)" - "$filename" ready" >> backup_$d.log
- fi
- done
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Finish backup'
- echo $(date +%Y-%m-%d' '%H:%M:%S)' Finish backup' >> backup_$d.log
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement