Advertisement
Guest User

Untitled

a guest
Mar 12th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. # by: anryko
  3. # date: 2017.03.12
  4. # description: Script to backup mysql databases on Debian based OS
  5.  
  6. set -e
  7. set -o pipefail
  8.  
  9. umask 0077
  10. trap cleanup ERR INT TERM EXIT
  11.  
  12. # global variables
  13. SCRIPT_NAME=mysql_backup
  14. BACKUP_DATE=$(date +%F-%H-%M-%S)
  15. BACKUP_DIR=/backup/tmp
  16. BACKUP_SUBDIR=mysql_$BACKUP_DATE
  17. BACKUP_STORE_DIR=/backup/mysql/$BACKUP_DATE
  18.  
  19. MYSQL_USER=$(grep -m1 ^user /etc/mysql/debian.cnf | awk '{print $NF}')
  20. MYSQL_PASS=$(grep -m1 ^pass /etc/mysql/debian.cnf | awk '{print $NF}')
  21. MYSQL_AUTH="--user=$MYSQL_USER --password=$MYSQL_PASS"
  22. MYSQL_DBS=$(/usr/bin/mysql $MYSQL_AUTH -e 'show databases;' | egrep -v "Database|---|information_schema|performance_schema" | fmt -999)
  23.  
  24. # helper functions
  25. log() {
  26. logger -i -t "$SCRIPT_NAME" -p "user.info" "$*"
  27. echo "$*"
  28. }
  29.  
  30. cleanup() {
  31. log "cleanup started"
  32. cd $BACKUP_DIR
  33. rm -fr $BACKUP_SUBDIR
  34. log "cleanup finished"
  35. }
  36.  
  37. mysql_backup() {
  38. # call with string of mysql db names to backup separated by ' '
  39. [[ ! -d $BACKUP_DIR/$BACKUP_SUBDIR ]] && mkdir -p $BACKUP_DIR/$BACKUP_SUBDIR
  40.  
  41. mysql_db=$1
  42. while shift; do
  43. backup_file_path=$BACKUP_DIR/$BACKUP_SUBDIR/$mysql_db_${mysql_db}_$BACKUP_DATE.gz
  44. log "starting backup of $mysql_db database to $backup_file_path"
  45. /usr/bin/mysqldump $MYSQL_AUTH $mysql_db | gzip -9 > $backup_file_path
  46. log "finished backup of $mysql_db database to $backup_file_path"
  47. mysql_db=$1
  48. done
  49.  
  50. [[ ! -d $BACKUP_STORE_DIR ]] && mkdir -p $BACKUP_STORE_DIR
  51.  
  52. log "moving backups to $BACKUP_STORE_DIR"
  53. mv $BACKUP_DIR/$BACKUP_SUBDIR/* $BACKUP_STORE_DIR/
  54. }
  55.  
  56. # main
  57. log "starting mysql backup"
  58. mysql_backup $MYSQL_DBS
  59. log "mysql backup finished"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement