Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #!/bin/bash
  2. # Shell script to backup MySQL database
  3.  
  4. # Set these variables
  5. MyUSER="" # DB_USERNAME
  6. MyPASS="" # DB_PASSWORD
  7. MyHOST="" # DB_HOSTNAME
  8.  
  9. # Backup Dest directory
  10. DEST="" # /home/username/backups/DB
  11.  
  12. # Email for notifications
  13. # EMAIL=""
  14.  
  15. # How many days old files must be to be removed
  16. DAYS=3
  17.  
  18. # Linux bin paths
  19. MYSQL="$(which mysql)"
  20. MYSQLDUMP="$(which mysqldump)"
  21. GZIP="$(which gzip)"
  22.  
  23. # Get date in dd-mm-yyyy format
  24. NOW="$(date +"%d-%m-%Y_%s")"
  25.  
  26. # Create Backup sub-directories
  27. MBD="$DEST/$NOW/mysql"
  28. install -d $MBD
  29.  
  30. # DB skip list
  31. SKIP="information_schema
  32. performance_schema
  33. mysql
  34. sys"
  35.  
  36. # Get all databases
  37. DBS="$($MYSQL -h $MyHOST -u $MyUSER -p$MyPASS -Bse 'show databases')"
  38.  
  39. # Archive database dumps
  40. for db in $DBS
  41. do
  42. skipdb=-1
  43. if [ "$SKIP" != "" ];
  44. then
  45. for i in $SKIP
  46. do
  47. [ "$db" == "$i" ] && skipdb=1 || :
  48. done
  49. fi
  50.  
  51. if [ "$skipdb" == "-1" ] ; then
  52. FILE="$MBD/$db.sql"
  53. $MYSQLDUMP -h $MyHOST -u $MyUSER -p$MyPASS $db > $FILE
  54. fi
  55. done
  56.  
  57. # Archive the directory, send mail and cleanup
  58. cd $DEST
  59. tar -cf $NOW.tar $NOW
  60. $GZIP -9 $NOW.tar
  61.  
  62. # echo "MySQL backup is completed! Backup name is $NOW.tar.gz" | mail -s "MySQL backup" $EMAIL
  63. rm -rf $NOW
  64.  
  65. # Remove old files
  66. find $DEST -mtime +$DAYS -exec rm -f {} \;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement