公司的数据库备份脚本,本分完成后发送完成后的情况邮件,脚本有2个。
-
#!/bin/bash
-
#author:lujianwen
-
#date: 2015.08.31
-
#backup db by mysqldump
-
-
type=$1
-
dbhost=prod01smartcourt.mysql.rds.aliyuncs.com
-
dbuser=smart
-
dbpass=Smartcourt123dotcom
-
dbnames=`mysql -h$dbhost -u$dbuser -p$dbpass -e "show databases;" |egrep db$|xargs`
-
fullbakcmd="mysqldump -h$dbhost -u$dbuser -p$dbpass --single-transaction " #-single-transaction innodb不锁表
-
increbakcmd=''
-
full_bak_dir=/data/db_bak/fullbak
-
incre_bak_dir=/data/db_bak/increbak
-
date=`date +%Y%m%d`
-
save_time=15
-
result=/data/scripts/result.txt
-
mail_list="rd_ops@huiti.com;"
-
-
function full_bak() #全量备份
-
{
-
#backup db
-
for dbname in $dbnames
-
do
-
mkdir -p ${full_bak_dir}/$dbname
-
cd ${full_bak_dir}/$dbname
-
echo "********************************"
-
echo "start backup $dbname . . ."
-
$fullbakcmd $dbname >${dbname}_$date.sql
-
zip -rm ${dbname}_$date.zip ${dbname}_$date.sql &>/dev/null
-
if [ -e ${dbname}_$date.zip ];then
-
echo "bakup $dbname is succed"
-
echo -e "$(date +%F-%T) $dbname full_backup Succed!\n">>$result
-
else
-
echo "bakup $dbname is failed"
-
echo -e "$(date +%F-%T) $dbname full_backup Failed!\n">>$result
-
fi
-
find $full_bak_dir/$dbname/ -mtime +${save_time} -exec rm -rf {} \;
-
done
-
-
#send result by mail
-
echo "start send backup log . . ."
-
/data/scripts/send_mail.py lujianwen@huiti.com "【数据库】full_backup完成情况" $result
-
rm -rf $result
-
}
-
-
function incre_bak() #增量备份
-
{
-
for dbname in $dbnames
-
do
-
mkdir -p ${incre_bak_dir}/$dbname
-
cd ${incre_bak_dir}/$dbname
-
last_hour=`date -d -1hour +%H`
-
if [ "${last_hour}" != "23" ];then
-
bak_file="${dbname}_incre_bak-`date +%F`-${last_hour}.sql"
-
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
-
zip -rm $bak_file.zip $bak_file &>/dev/null
-
if [ -e ${incre_bak_dir}/$dbname/$bak_file.zip ];then
-
echo "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Succed!" >>result.txt
-
else
-
echo "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Failed" >>result.txt
-
fi
-
else
-
bak_file="${dbname}_incre_bak-`date -d yesterday +%F`-${last_hour}.sql"
-
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
-
zip -rm $bak_file.zip $bak_file &>/dev/null
-
if [ -e ${incre_bak_dir}/$dbname/$bak_file.zip ];then
-
echo -e "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Succed!\n" >>$result
-
else
-
echo -e "$(date +%F-%T) $dbname $(date +%F-%H) incre_backup Failed\n" >>$result
-
fi
-
fi
-
find $incre_bak_dir/$dbname/ -mtime +${save_time} -exec rm -rf {} \;
-
done
-
-
#send result by mail
-
/data/scripts/send_mail.py $mail_list "【数据库】incre_backup完成情况" $result
-
rm -rf $result
-
}
-
-
case $type in
-
full)
-
full_bak
-
;;
-
incre)
-
incre_bak
-
;;
-
*)
-
echo -e "\nUsage: $0 full|incre\n"
-
;;
-
esac
-
#!/usr/bin/env python
-
#coding:utf8
-
# 导入 smtplib 和 MIMEText
-
import sys,getpass
-
import smtplib
-
from email.mime.text import MIMEText
-
-
# 发送邮件函数
-
def send_mail(to_list, sub,context):
-
me = mail_user + "<"+mail_user+"@"+mail_postfix+">"
-
f = open(context)
-
msg = MIMEText(f.read(),_charset="utf-8")
-
#msg = MIMEText(context)
-
f.close()
-
msg['Subject'] = sub
-
msg['From'] = me
-
msg['To'] = "".join(to_list)
-
try:
-
send_smtp = smtplib.SMTP()
-
send_smtp.connect(mail_host)
-
send_smtp.login(mail_user, mail_pass)
-
send_smtp.sendmail(me, to_list, msg.as_string())
-
send_smtp.close()
-
return True
-
except Exception, e:
-
print str(e)
-
return False
-
-
# 设置服务器名称、用户名、密码以及邮件后缀
-
mail_host = "smtp.126.com"
-
mail_user = "iphone3000@126.com"
-
mail_pass =getpass.getpass() #隐藏输入密码
-
mail_postfix="126.com"
-
-
#mailto_list = ["1542141838@qq.com","jjyy@qq.com"]
-
mailto_list = sys.argv[1]
-
sub= sys.argv[2]
-
context=sys.argv[3]
-
-
if send_mail(mailto_list,sub,context):
-
print "Send mail succed!"
-
else:
-
print "Send mail failed!"
阅读(289) | 评论(0) | 转发(0) |