Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11938
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-29 17:47
个人简介

爱技术,爱美女,爱宅也爱旅行

文章分类

全部博文(3)

文章存档

2015年(3)

我的朋友
最近访客

分类: LINUX

2015-10-26 18:08:22

公司的数据库备份脚本,本分完成后发送完成后的情况邮件,脚本有2个。

这个是备份脚本

  1. #!/bin/bash
  2. #author:lujianwen
  3. #date: 2015.08.31
  4. #backup db by mysqldump
  5. type=$1
  6. dbhost=prod01smartcourt.mysql.rds.aliyuncs.com
  7. dbuser=smart
  8. dbpass=Smartcourt123dotcom
  9. dbnames=`mysql -h$dbhost -u$dbuser -p$dbpass -e "show databases;" |egrep db$|xargs`
  10. fullbakcmd="mysqldump -h$dbhost -u$dbuser -p$dbpass --single-transaction " #-single-transaction innodb不锁表
  11. increbakcmd=''
  12. full_bak_dir=/data/db_bak/fullbak
  13. incre_bak_dir=/data/db_bak/increbak
  14. date=`date +%Y%m%d`
  15. save_time=15
  16. result=/data/scripts/result.txt
  17. mail_list="rd_ops@huiti.com;"
  18. function full_bak()    #全量备份
  19. {
  20. #backup db
  21. for dbname in $dbnames
  22. do
  23. mkdir -p ${full_bak_dir}/$dbname
  24. cd ${full_bak_dir}/$dbname
  25. echo "********************************"
  26. echo "start backup $dbname . . ."
  27. $fullbakcmd $dbname >${dbname}_$date.sql
  28. zip -rm ${dbname}_$date.zip ${dbname}_$date.sql &>/dev/null
  29. if [ -e ${dbname}_$date.zip ];then
  30. echo "bakup $dbname is succed"
  31. echo -e "$(date +%F-%T) $dbname full_backup Succed!\n">>$result
  32. else
  33. echo "bakup $dbname is failed"
  34. echo -e "$(date +%F-%T) $dbname full_backup Failed!\n">>$result
  35. fi
  36. find $full_bak_dir/$dbname/ -mtime +${save_time} -exec rm -rf {} \;
  37. done
  38. #send result by mail
  39. echo "start send backup log . . ."
  40. /data/scripts/send_mail.py lujianwen@huiti.com "【数据库】full_backup完成情况" $result
  41. rm -rf $result
  42. }
  43. function incre_bak()    #增量备份
  44. {
  45. for dbname in $dbnames
  46. do
  47. mkdir -p ${incre_bak_dir}/$dbname
  48. cd ${incre_bak_dir}/$dbname
  49. last_hour=`date -d -1hour +%H`
  50. if [ "${last_hour}" != "23" ];then
  51. bak_file="${dbname}_incre_bak-`date +%F`-${last_hour}.sql"
  52. mysqlbinlog --start-date="`date +%F` ${last_hour}:00:00" --stop-date="`date +%F` ${last_hour}:59:59" -d $dbname -u root $db_data_dir/mysql-bin.00* > $incre_bak_dir/$dbname/$bak_file
  53. zip -rm $bak_file.zip $bak_file &>/dev/null
  54. if [ -e ${incre_bak_dir}/$dbname/$bak_file.zip ];then
  55. echo "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Succed!" >>result.txt
  56. else
  57. echo "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Failed" >>result.txt
  58. fi
  59. else
  60. bak_file="${dbname}_incre_bak-`date -d yesterday +%F`-${last_hour}.sql"
  61. mysqlbinlog --start-date="`date -d yesterday +%F` ${last_hour}:00:00" --stop-date="`date -d yesterday +%F` ${last_hour}:59:59" -d $dbname -u root $db_data_dir/mysql-bin.00* > $binlog_bak_dir/$dbname/$bak_file
  62. zip -rm $bak_file.zip $bak_file &>/dev/null
  63. if [ -e ${incre_bak_dir}/$dbname/$bak_file.zip ];then
  64. echo -e "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Succed!\n" >>$result
  65. else
  66. echo -e "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Failed\n" >>$result
  67. fi
  68. fi
  69. find $incre_bak_dir/$dbname/ -mtime +${save_time} -exec rm -rf {} \;
  70. done
  71. #send result by mail
  72. /data/scripts/send_mail.py $mail_list "【数据库】incre_backup完成情况" $result
  73. rm -rf $result
  74. }
  75. case $type in
  76. full)
  77. full_bak
  78. ;;
  79. incre)
  80. incre_bak
  81. ;;
  82. *)
  83. echo -e "\nUsage: $0 full|incre\n"
  84. ;;
  85. esac

这个是发邮件脚本

  1. #!/usr/bin/env python
  2. #coding:utf8
  3. # 导入 smtplib 和 MIMEText
  4. import sys,getpass
  5. import smtplib
  6. from email.mime.text import MIMEText

  7. # 发送邮件函数
  8. def send_mail(to_list, sub,context):
  9.         me = mail_user + "<"+mail_user+"@"+mail_postfix+">"
  10.         f = open(context)
  11.         msg = MIMEText(f.read(),_charset="utf-8")
  12. #msg = MIMEText(context)
  13.         f.close()
  14.         msg['Subject'] = sub
  15.         msg['From'] = me
  16.         msg['To'] = "".join(to_list)
  17.         try:
  18.                 send_smtp = smtplib.SMTP()
  19.                 send_smtp.connect(mail_host)
  20.                 send_smtp.login(mail_user, mail_pass)
  21.                 send_smtp.sendmail(me, to_list, msg.as_string())
  22.                 send_smtp.close()
  23.                 return True
  24.         except Exception, e:
  25.                 print str(e)
  26.                 return False

  27. # 设置服务器名称、用户名、密码以及邮件后缀
  28. mail_host = "smtp.126.com"
  29. mail_user = "iphone3000@126.com"
  30. mail_pass =getpass.getpass() #隐藏输入密码
  31. mail_postfix="126.com"

  32. #mailto_list = ["1542141838@qq.com","jjyy@qq.com"]
  33. mailto_list = sys.argv[1]
  34. sub= sys.argv[2]
  35. context=sys.argv[3]

  36. if send_mail(mailto_list,sub,context):
  37.         print "Send mail succed!"
  38. else:
  39.         print "Send mail failed!"


阅读(289) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~