Advertisement
Guest User

Untitled

a guest
Aug 5th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. #!/bin/bash
  2. # Simple script to backup MySQL databases
  3.  
  4. # Parent backup directory
  5. backup_parent_dir="/var/dbdumps/mysql"
  6.  
  7. # MySQL settings
  8. mysql_user="root"
  9. mysql_password=""
  10. #name of database which you want to backup
  11. mysql_database=""
  12.  
  13. # Read MySQL password from stdin if empty
  14. if [ -z "${mysql_password}" ]; then
  15. echo -n "Enter MySQL ${mysql_user} password: "
  16. read -s mysql_password
  17. echo
  18. fi
  19.  
  20. # Read MySQL Database name from stdin if empty
  21. if [ -z "${mysql_database}" ]; then
  22. echo -n "Enter Database name: "
  23. read -s mysql_database
  24. echo
  25. fi
  26.  
  27. # Check MySQL password
  28. echo exit | mysql --user=${mysql_user} --password=${mysql_password} -B 2>/dev/null
  29. if [ "$?" -gt 0 ]; then
  30. echo "MySQL ${mysql_user} password incorrect"
  31. exit 1
  32. else
  33. echo "MySQL ${mysql_user} password correct."
  34. fi
  35.  
  36. #delete last week's backup, so we keep daily backup but upto last week
  37. last_week_date=`date -d '-7 day' '+%Y_%m_%d'`
  38. last_backup_dir="${backup_parent_dir}/${last_week_date}"
  39. echo "Removing Last week's backup"
  40. rm -rf ${last_backup_dir}
  41.  
  42.  
  43. # Create backup directory and set permissions
  44. backup_date=`date +%Y_%m_%d`
  45. backup_dir="${backup_parent_dir}/${backup_date}"
  46.  
  47. echo "Backup directory: ${backup_dir}"
  48. mkdir -p "${backup_dir}"
  49. chmod 700 "${backup_dir}"
  50.  
  51. echo "Creating backup of \"${mysql_database}\" database"
  52. mysqldump --user=${mysql_user} --password=${mysql_password} ${mysql_database} | gzip -9 > "${backup_dir}/${mysql_database}.sql.gz"
  53. chmod 600 "${backup_dir}/${mysql_database}.sql.gz"
  54. echo "Backup Created at: ${backup_dir}/${mysql_database}.sql.gz"
  55.  
  56. #if you want to backup all databases change above code to this
  57.  
  58. # Get MySQL databases
  59. # mysql_databases=`echo 'show databases' | mysql --user=${mysql_user} --password=${mysql_password} -B | sed /^Database$/d`
  60.  
  61. # # Backup and compress each database
  62. # for database in $mysql_databases
  63. # do
  64. # if [ "${database}" == "information_schema" ] || [ "${database}" == "performance_schema" ]; then
  65. # additional_mysqldump_params="--skip-lock-tables"
  66. # else
  67. # additional_mysqldump_params=""
  68. # fi
  69. # echo "Creating backup of \"${database}\" database"
  70. # mysqldump ${additional_mysqldump_params} --user=${mysql_user} --password=${mysql_password} ${database} | gzip > "${backup_dir}/${database}.gz"
  71. # chmod 600 "${backup_dir}/${database}.gz"
  72. # done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement