ITPub博客

首页 > 应用开发 > IT综合 > python脚本备份mysql并发送邮件提醒

python脚本备份mysql并发送邮件提醒

原创 IT综合 作者:tianyuso 时间:2016-12-16 15:12:55 0 删除 编辑


这是python2.7环境开发的一个脚本,欢迎大家提宝贵意见


#!/usr/bin/env Python
# -*- coding:utf-8 -*-
#导入模块
import MySQLdb
import time
import datetime
import os
import smtplib
from email.Header import Header
from email.mime.text import MIMEText
"""
  Purpose: 备份数据库
  Created: 2016/12/14
  Modified:2016/12/13
  @author: tc
"""
class Mail:
    def __init__(self,mailServer="smtp.######.com",user="tianyuso",pwd="######"):
        self.mailServer = mailServer
        self.user = user
        self.pwd = pwd
        self.conn = None
    def send_mail(self,mailFrom,mailTo,msg):
        try:
                self.conn = smtplib.SMTP()
                self.conn.connect(self.mailServer)
                self.conn.login(self.user,self.pwd)
                self.conn.sendmail(mailFrom, mailTo, msg.as_string())
                self.conn.close()
                return True
        except Exception, e:
                return False


    def send_text(self,mailFrom,mailTo,subject,text):
        msg = MIMEText(str(text),format,'utf-8')
        me = ("%s<"+mailFrom+">") % (Header(mailFrom,'utf-8'),)
        msg['From'] = me
        msg['To'] = ",".join(mailTo)


        if not isinstance(subject,unicode):
            subject=unicode(subject,'utf-8')
        msg['Subject'] = subject
        print msg
        return self.send_mail(me,mailTo,msg)
dbUser='root'
dbPasswd='########'
dbHost='localhost'
dbCharset = 'utf8'
backupDir = '/home/backup'
backupDate =  time.strftime("%Y%m%d")
#查出MySQL中所有的数据库名称
sqlStr1 = "show databases"
try:
    connDB= MySQLdb.connect("localhost","root","#######","db" )
    connDB.select_db('db')
    curSql1=connDB.cursor()
    curSql1.execute(sqlStr1)
    allDatabase = curSql1.fetchall()
    print 'The database backup to start! %s'   %time.strftime('%Y-%m-%d %H:%M:%S')
    for db in allDatabase:
        dbName = db[0]
        fileName = '%s/%s_%s.sql' %(backupDir,backupDate,dbName)
        print fileName
        if os.path.exists(fileName):
                os.remove(fileName)
        os.system("mysqldump -h%s -u%s -p%s %s --default_character-set=%s > %s/%s_%s.sql" %(dbHost,dbUser,dbPasswd,dbName,dbCharset,backupDir,backupDate,dbName))


    s = Mail()
    subject = "mysql备份成功"
    mess = "hi, 数据库备份成功"
    s.send_text("发件人",["收件人1","收件人2"],subject,mess)

#    print 'The database backup success! %s'  %time.strftime('%Y-%m-%d %H:%M:%S')


#异常
except MySQLdb.Error,err_msg:
    print "MySQL error msg:",err_msg
    s = Mail()
    subject = "mysql备份失败"
    mess = err_msg
    s.send_text("test@gmail.com",["收件人1","收件人2"],subject,mess)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26366838/viewspace-2130802/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-12-11

  • 博文量
    3
  • 访问量
    10022