Advertisement
Guest User

Untitled

a guest
Sep 29th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. sudo vi /usr/local/bin/mysql_backup
  2. #!/bin/bash
  3.  
  4. user_name=root
  5. user_password="<pass>"
  6. backup_name=<backup_name>
  7. host="127.0.0.1"
  8. parallel=4
  9. backup_output="/data/local-backup"
  10. temp_log="/var/log/mysql_backup.log.tmp"
  11. log="/var/log/mysql_backup.log"
  12. galera_param="--galera-info"
  13. myisam_param="--lock-wait-timeout=180 --lock-wait-threshold=20 --lock-wait-query-type=all --kill-long-queries-timeout=20 --kill-long-query-type=all"
  14. root_open_file_limit=8192
  15. email_list="<mail-list>"
  16. mail_sender="<mail-sender>"
  17.  
  18. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  19.  
  20. function do_rm_backup() {
  21. rm -rvf ${backup_output}/* &> ${temp_log}
  22. }
  23.  
  24. function do_notify_on_error() {
  25. status=$1
  26. inter=$(route -n | grep "UG" | awk '{print $8}' | sort -n | uniq)
  27. ip=$(ip a | grep inet | grep $inter | awk '{print $2}' | sed -e 's/\/.*$//')
  28. [ ! $status -eq 0 ] && mail -r ${mail_sender} -s "Backup Error at server with ip=${ip} and hostname=`hostname`" ${email_list} < ${temp_log}
  29. }
  30.  
  31. function do_backup () {
  32. engine=$1
  33. use_galera=$2
  34.  
  35. #echo "engine=$engine, use_galera=$use_galera"
  36. if [[ $use_galera == "false" ]]; then
  37. galera_param=""
  38. fi
  39. if [[ $engine == "innodb" ]]; then
  40. myisam_param=""
  41. fi
  42. #echo "galera_param=$galera_param.myisam_param=$myisam_param."
  43. ulimit -n ${root_open_file_limit}
  44. innobackupex --user=${user_name} --password=${user_password} --host=${host} ${galera_param} --parallel=${parallel} ${myisam_param} ${backup_output} &>> ${temp_log}
  45. status=$?
  46. do_notify_on_error $status
  47. return $status
  48. }
  49.  
  50. function do_mv_backup () {
  51. recent_backup=$(grep "created in directory" ${temp_log} | sed -nr "s/.*directory '([^']*)'.*/\1/p")
  52. echo "RECENT_BACKUP=$recent_backup." >> ${temp_log}
  53. mv ${recent_backup} ${backup_output}/mysql-${backup_name}
  54. }
  55.  
  56. function do_save_log() {
  57. echo "============================ SAVED LOG AT `date`====================" >> ${log}
  58. cat ${temp_log} >> ${log}
  59. }
  60.  
  61. which innobackupex &> /dev/null
  62. if [ ! $? -eq 0 ]; then
  63. echo "You must install percona-xtrabackup"
  64. exit -1
  65. fi
  66.  
  67. (
  68. # Wait for lock on /var/lock/.myscript.lock (fd 200) for 10 seconds
  69. flock -x -w 10 200 || exit 1
  70. do_rm_backup
  71. # DEPEND YOUR DB, CUSTOMIZE THIS COMMAND
  72. do_backup innodb false && do_mv_backup
  73. do_save_log
  74. ) 200>/var/lock/.mysql_backup.lock
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement