# -*- coding:UTF-8 -*-
import os
import sys
import string
import time
import commands
import datetime
import smtplib
from email.mime.text import MIMEText
from email.message import Message
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr
user='xxxxxx'
password='xxxx'
socket='/data/mysql-data/mysql.sock'
defaultsfile='/etc/my.cnf'
target_dir='/backup/xtrabackup/MySQL3306/'
mail_to=['xxxxx@xxx.com;']
def backup():
try:
backup_time=time.strftime("%Y%m%d",time.localtime())
pre_backup_time=(datetime.date.today()-datetime.timedelta(days=1)).strftime("%Y%m%d")
delete_time=(datetime.date.today()-datetime.timedelta(days=14)).strftime("%Y%m%d")#(默认保留半个月的备份集)
number_day = datetime.datetime.now().weekday()
if number_day==5 or number_day==3 or number_day==0:
backup_type='FullBackup'
cmd='xtrabackup --defaults-file=%s '\
'--backup --compress --compress-threads=8 -u%s -p%s ' \
'--socket=%s --target-dir=%s'\
%(defaultsfile,user,password,socket,target_dir+backup_time+backup_type)
(status,output)=commands.getstatusoutput(cmd)
#print(cmd)
if status==0:
cmd='rm -rf %s'%(target_dir+delete_time+backup_type)
(status,output)=commands.getstatusoutput(cmd)
if status==0:
return "Successed"
else:
return "Failed"
else:
return "%s Backup Task Failed \n<br/>"%target_dir.split("/")[3]
else:
return "Don't Need Backup"
except Exception,e:
return (e)
def send_mail(to_list,sub,content):
mail_host = 'smtp.xxxx.com'
mail_port = 465
mail_user = 'xxxx@xxxx.com'
mail_pass = 'xxxxx'
mail_send_from = 'xxx@xxxx.com'
mail_msg = MIMEMultipart()
if not isinstance(sub, unicode):
sub = unicode(sub, 'utf-8')
mail_msg['Subject'] = sub
mail_msg['From'] = "hongda.wu@citylife.com<hongda.wu@citylife.com>"
mail_msg['To'] = ";".join(to_list)
mail_msg.attach(MIMEText(content, 'html', 'utf-8'))
try:
s = smtplib.SMTP_SSL()
s.connect(mail_host, 465)
s.login(mail_user, mail_pass)
s.sendmail(mail_send_from, to_list, mail_msg.as_string())
return True
except Exception,e:
return (e)
def main():
backup_result=backup()
print(backup_result)
if backup_result !='Successed':
send_mail(mail_to,"ip+port:BackupFailed",backup_result)
if __name__=='__main__':
main()