shell脚本备份Mysql数据库

   最近两天在帮所在测试组搭建testlink服务,并且和jira进行关联,实现ldap登录方式等等。。。由于之前的jira和testlink服务器硬盘坏过一次,所以主管要求我对服务器的数据每天都要进行备份,之前学得shell正好用上了,哈哈。。

 

  
  
  
  
  1. #!/bin/bash  
  2. #History:2012.08.04 
  3. #Backup the testlink database /backups 
  4. #Author: songfei 
  5. #Email:  [email protected] 
  6.  
  7. PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin 
  8. export PATH 
  9.  
  10. #当天日期 
  11. date=`date +%Y%m%d`   
  12. #当天日期+时间 
  13. now=`date "+%Y-%m-%d %H:%M:%S"
  14. #10天前的日期 用来删除较早的备份文件 
  15. olddate=`date +%Y%m%d --date="10 days ago"` 
  16.  
  17. #备份文件夹 
  18. Data_backup_dir="/home/awind/backups" 
  19. #新产生的备份文件名 
  20. new_backup_file="${Data_backup_dir}/backup${date}.sql" 
  21. #要删除的文件 即10天前的备份文件 
  22. old_backup_file="${Data_backup_dir}/backup${olddate}.sql" 
  23.  
  24. #用户名 密码 要备份的数据库 
  25. user=root 
  26. password=****
  27. db_name=****
  28.  
  29. #存放邮件的正文 
  30. eMailfile="${Data_backup_dir}/email" 
  31. #邮件收件人  
  32. emailto=root@localhost 
  33. #产生的log 
  34. logfile="$Data_backup_dir/mysqlbackup.log" 
  35.  
  36.  
  37.  
  38.  
  39. if [ ! -e $Data_backup_dir ];then 
  40.  mkdir -p $Data_backup_dir 
  41. fi 
  42.  
  43.  
  44. if [ ! -e $logfile ];then 
  45.  touch $logfile 
  46. fi 
  47.  
  48. if [ ! -e $eMailfile ];then 
  49.  touch $eMailfile 
  50. fi 
  51.  
  52. echo "">$eMailfile 
  53. echo "================================================================">>$logfile 
  54. echo "${now}" >> $eMailfile 
  55. echo "${now}" >> $logfile 
  56.  
  57.  
  58.  
  59. #删除较早的备份文件 
  60. if [ -e ${old_backup_file} ];then 
  61.  rm -f ${old_backup_file} >>$logfile 
  62.  if [ $? == 0 ];then  
  63.    echo "delete old backup file SUCCESS!" >>$logfile  
  64.  else 
  65.    echo "delete old backup file FAILED!">>$logfile 
  66.  fi 
  67. else 
  68.  echo "the old backup file Not exist!">>$logfile 
  69. fi 
  70.  
  71.  
  72.  
  73. #备份数据库 
  74. #-all-database备份所有数据库 
  75. mysqldump -u${user} -p${password--opt $db_name > ${new_backup_file}  
  76.  
  77.  
  78. #mysqldump命令的执行结果 并且检查备份文件是否为空 
  79. if [ $? == 0 ];then 
  80.  if [ -s ${new_backup_file} ];then 
  81.    echo "mysqldump : backup the database ${db_name} SUCCESS">>$logfile 
  82.    echo "mysqldump: backup the database ${db_name} SUCCESS">>$eMailfile 
  83.  else 
  84.    echo "mysqldump : the file ${new_back_file} is NULL,soory the backup is FAILED">>$logfile 
  85.    echo "mysqldump : the file ${new_back_file} is NULL,sorry the backup is FAILED">>$eMailfile 
  86.  fi 
  87. else 
  88.   echo "mysqldump : Sorry, the backup is FAILED!" >>$logfile 
  89.   echo "mysqldump : Sorry, the backup is FAILED!" >>$eMailFile 
  90. fi 
  91.  
  92. echo "===================================================================">>$logfile 
  93.  
  94. cat ${eMailfile} | mail -s "Mysql Backup" $emailto 

 

 

你可能感兴趣的:(shell)