Guest User

Untitled

a guest
Jan 21st, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. #!/bin/sh
  2. ## backup each mysql db into a different file, rather than one big file
  3. ## as with --all-databases. This will make restores easier.
  4. ## To backup a single database simply add the db name as a parameter (or multiple dbs)
  5.  
  6. ## Putting the script in /var/backups/mysql seems sensible... on a debian machine that is
  7. ## Create the user and directories
  8. # mkdir -p /var/backups/mysql/databases
  9. # useradd --home-dir /var/backups/mysql --gid backup --no-create-home mysql-backup
  10. ## Remember to make the script executable, and unreadable by others
  11. # chown -R mysql-backup:backup /var/backups/mysql
  12. # chmod u=rwx,g=rx,o= /var/backups/mysql/dump.sh
  13.  
  14. ## crontab entry - backup every night at 02:00
  15. # sudo -u mysql-backup crontab -e
  16. # 0 2 * * * /var/backups/mysql/dump.sh
  17. #
  18. # Every Monday at 2AM
  19. # 0 2 * * 1 /root/scripts/backup_mysql.sh
  20.  
  21. ## Create 'backup' mysql user
  22. # CREATE USER 'backup'@'localhost' IDENTIFIED BY 's3cr3t';
  23. # GRANT EVENT, LOCK TABLES, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER ON *.* TO 'backup'@'localhost' ;
  24.  
  25. # Changelog:
  26. # Remove duplicate code
  27. # Automatically create output directory
  28. # Gzip backups
  29. # Ignore performance_schema table
  30.  
  31. USER="root"
  32. PASSWORD="s3cr3t"
  33. OUTPUTDIR="/root/backups_mysql"
  34. MYSQLDUMP="/usr/bin/mysqldump"
  35. MYSQL="/usr/bin/mysql"
  36. TODAY=$(date +%F)
  37.  
  38. if [ -z "$1" ]; then
  39. databases=`$MYSQL --user=$USER --password=$PASSWORD --batch --skip-column-names -e "SHOW DATABASES;" | grep -v 'mysql\|information_schema\|performance_schema'`
  40. else
  41. databases=${@}
  42. fi
  43.  
  44. for database in $databases; do
  45. echo $database
  46. mkdir -p "$OUTPUTDIR/${database}"
  47. $MYSQLDUMP \
  48. --user=$USER --password=$PASSWORD \
  49. --force \
  50. --quote-names --dump-date \
  51. --opt --single-transaction \
  52. --events --routines --triggers \
  53. --databases $database \
  54. --result-file="$OUTPUTDIR/${database}/${database}_${TODAY}.sql"
  55. gzip -9 "$OUTPUTDIR/${database}/${database}_${TODAY}.sql"
  56. done
Add Comment
Please, Sign In to add comment