Guest User

Untitled

a guest
Dec 4th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #!/bin/bash
  2. # Shell script to backup MySql database
  3. # To backup Mysql databases file to /backup dir and later pick up by your
  4. # script. You can skip few databases from backup too.
  5. MyUSER="root" # USERNAME
  6. MyPASS="fI78SbTWjzgc" # PASSWORD
  7. MyHOST="localhost" # Hostname
  8.  
  9. # Linux bin paths, change this if it can't be autodetected via which command
  10. MYSQL="$(which mysql)"
  11. MYSQLDUMP="$(which mysqldump)"
  12. CHOWN="$(which chown)"
  13. CHMOD="$(which chmod)"
  14. GZIP="$(which gzip)"
  15. # Backup Dest directory, change this if you have someother location
  16. DEST="/home/backups/mysql"
  17.  
  18. # Main directory where backup will be stored
  19. MBD="$DEST"
  20.  
  21. # Get hostname
  22. HOST="$(hostname)"
  23.  
  24. # Get data in dd-mm-yyyy format
  25. NOW="$(date +"%Y%m%d")"
  26.  
  27. echo $NOW: Starting MySQL backup on $HOST
  28. echo Backup location: $DEST
  29.  
  30. # File to store current backup file
  31. FILE="databasedump"
  32. # Store list of databases
  33. DBS=""
  34.  
  35. # DO NOT BACKUP these databases
  36. IGGY="information_schema sys performance_schema mysql"
  37.  
  38. [ ! -d $MBD ] && mkdir -p $MBD || :
  39.  
  40. # Get all database list first
  41. DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
  42. echo Databases to backup:
  43. echo $DBS
  44.  
  45.  
  46. declare -i RESULT
  47. RESULT=0
  48. declare -i THISRESULT
  49. THISRESULT=0
  50.  
  51. for db in $DBS
  52. do
  53. skipdb=-1
  54. if [ "$IGGY" != "" ];
  55. then
  56. for i in $IGGY
  57. do
  58. [ "$db" == "$i" ] && skipdb=1 || :
  59. done
  60. fi
  61.  
  62. if [ "$skipdb" == "-1" ] ; then
  63. FILE="$MBD/$db.$HOST.$NOW.gz"
  64. touch $FILE
  65. chown root.root $FILE
  66. chmod 0600 $FILE
  67. # do all inone job in pipe,
  68. # connect to mysql using mysqldump for select mysql database
  69. # and pipe it out to gz file in backup dir :)
  70. $MYSQLDUMP --set-gtid-purged=OFF --single-transaction --routines -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE
  71. THISRESULT=$?
  72. RESULT=RESULT+THISRESULT
  73. echo Dump file for database $db should be here:
  74. echo `ls -l $FILE`
  75. if [[ $THISRESULT -ne 0 ]]; then
  76. echo "!!!! An error occured while running mysqldump. Please report this !!!!"
  77. fi
  78. fi
  79. done
  80. echo Backup finished at `date`
  81. if [[ $RESULT -ne 0 ]]; then
  82. echo "!!!! There was at least one error, please report this !!!!"
  83. fi
  84. exit $RESULT
Add Comment
Please, Sign In to add comment