Guest User

Untitled

a guest
Jan 18th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 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. #Consulta que excluye las DB de sytema y otras innecesarias
  29. SHOW="SHOW DATABASES WHERE \`DATABASE\` NOT IN ('mysql','information_schema')"
  30. FILE="bk/DB_"$(date '+%y-%m-%d.bk')
  31.  
  32.  
  33. if [ -z "$1" ]; then
  34. databases=`$MYSQL --user=$USER --password=$PASSWORD --batch --skip-column-names -e "$SHOW"`
  35. for database in $databases; do
  36. $MYSQLDUMP \
  37. --user=$USER --password=$PASSWORD \
  38. --force \
  39. --quote-names --dump-date \
  40. --opt --single-transaction \
  41. --events --routines --triggers \
  42. --databases $database \
  43. --result-file="$OUTPUTDIR/$database.sql"
  44. done
  45. else
  46. for database in ${@}; do
  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.sql"
  55. done
  56. fi
  57. #Comprension de todo las bases de datos
  58. tar -czvf $FILE databases/
Add Comment
Please, Sign In to add comment