Guest User

Untitled

a guest
Apr 23rd, 2019
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 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. ## Create 'backup' mysql user
  19. # CREATE USER 'backup'@'localhost' IDENTIFIED BY 's3cr3t';
  20. # GRANT EVENT, LOCK TABLES, PROCESS, REFERENCES, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER ON *.* TO 'backup'@'localhost' ;
  21.  
  22.  
  23. USER="backup"
  24. PASSWORD="s3cr3t"
  25. OUTPUTDIR=$(dirname $0)"/databases"
  26. MYSQLDUMP="/usr/bin/mysqldump"
  27. MYSQL="/usr/bin/mysql"
  28.  
  29.  
  30.  
  31. if [ -z "$1" ]; then
  32. databases=`$MYSQL --user=$USER --password=$PASSWORD --batch --skip-column-names -e "SHOW DATABASES;" | grep -v 'mysql\|information_schema'`
  33. for database in $databases; do
  34. $MYSQLDUMP \
  35. --user=$USER --password=$PASSWORD \
  36. --force \
  37. --quote-names --dump-date \
  38. --opt --single-transaction \
  39. --events --routines --triggers \
  40. --databases $database \
  41. --result-file="$OUTPUTDIR/$database.sql"
  42. done
  43. else
  44. for database in ${@}; do
  45. $MYSQLDUMP \
  46. --user=$USER --password=$PASSWORD \
  47. --force \
  48. --quote-names --dump-date \
  49. --opt --single-transaction \
  50. --events --routines --triggers \
  51. --databases $database \
  52. --result-file="$OUTPUTDIR/$database.sql"
  53. done
  54. fi
Add Comment
Please, Sign In to add comment