python脚本按表备份MySQL数据库
admin
2023-06-11 03:02:38
0


脚本功能:

 1.自动创建备份目录

 2.自动备份数据库的每个表,并压缩

 3.备份结果,邮件通知联系人

python脚本按表备份MySQL数据库

python脚本按表备份MySQL数据库

 4.脚本内容

#!/usr/bin/env  python
# --*-- coding:UTF-8 --*--
# Create by JIANGLEI.YU on 2016/04/21
# 多表自动备份ok。发送邮件失败。
import  MySQLdb
import  sys
import  os
import  datetime
import  smtplib
from    email.mime.text   import MIMEText
import  sys

# Define Mysql Environments
Hostname='192.168.0.141'
Username='root'
Password='123456'
Database='virtual'
MYSQLDUMP='/usr/bin/mysqldump'
GZIP='/usr/bin/gzip'
timestamp=datetime.datetime.now().strftime("%Y%m%d%H%M%S")
Destination_dir='/home/bak/tables/' + timestamp + '/'

# Define Smtp Environments
Host='smtp.exmail.qq.com'
Port=25
sender='yujianglei@singulax.com'
Pass='123456'
recivers='jianglei.yu@foxmail.com'
def main():
if os.path.exists(Destination_dir) == False:
os.makedirs(Destination_dir)
db_table_backup()
else:
db_table_backup()
def email():
try:
server= smtplib.SMTP()
server.connect(Host,Port)
server.login(sender,Pass)
server.sendmail(sender,recivers,msg.as_string())
except Exception,e:
print e
print "邮件发送失败!"
def backup_failed():
global msg
msg = MIMEText('数据库单表备份失败')
msg['subject'] = '数据库单表备份失败'
msg['From'] = sender
msg['To'] = recivers
email()
sys.exit(2)
def backup_sucess():
global msg 
msg = MIMEText(('数据库单表备份成功,共备份%d张表,共用时%.2f分钟.') % (tables_count,backup_period) ,  'plain','utf-8' ) 
msg['subject'] = '数据库单表备份成功'  
msg['From'] = sender
msg['To'] = recivers
email()
def db_table_backup():
start_time=datetime.datetime.now()
try:
db = MySQLdb.connect(Hostname,Username,Password,Database,connect_timeout=2)
cursor = db.cursor()
except Exception, e:
# print e
print "连接数据库失败"
backup_failed()
cursor.execute('show tables')
f = cursor.fetchall()
list_status = []
for table in f:
# print table
for i in table:
MYSQLDUMP_CMD = MYSQLDUMP + ' -h' + Hostname + ' -u' + Username + ' -p' + Password + ' ' +  Database + ' ' + i + ' ' + '| ' + GZIP + ' >' + Destination_dir + Database + '-' + timestamp+ '.' + i + '.' + 'sql.gz'
result = os.system(MYSQLDUMP_CMD)
list_status.append(result)
global tables_count
tables_count = len(list_status)
list_test=[0]
j = set(list_status).issubset(set(list_test))
if j == True:
end_time=datetime.datetime.now()
global backup_period
backup_period = ((end_time - start_time).seconds)/60.0
backup_sucess()
else:
backup_failed()
cursor.close()
db.close()
if __name__ ==  '__main__':
main()


相关内容

热门资讯

以文化为媒 聚产业之力(新时代... 传统文化邂逅当代设计外籍客商向展位工作人员咨询非遗文创产品。毕 晗摄(人民视觉)传统文化邂逅当代设计...
外籍女子回答含糊 司机多看一眼... 外籍女子回答含糊 司机多看一眼立功  【外籍女子回答含糊 司机多看一眼立功】一个网约车司机的“多看一...
别让一副耳环模糊了救灾焦点 澎湃首席评论员 与归湖南石门县龙池河村女支书向金元讲述受灾情况。“电也没有,网也没有,特别是看到我们...
全球单机规模最大塔式光热发电项... 5月20日,海西蒙古族藏族自治州格尔木市乌图美仁光伏光热园区可胜技术格尔木350MW塔式光热发电项目...
健康智能手表厂家推荐指南:聚焦... 导语:健康智能手表作为智能穿戴设备的重要分支,近年来在健康监测领域发展迅速。本文基于行业白皮书、市场...
四大品牌新机密集定档 OPPO... 【CNMO科技消息】5月25日,CNMO科技注意到,OPPO、荣耀、vivo、华为四大品牌全新机型即...
戴金耳环遭网暴的灾区女干部:工... 近日,湖南石门县遭遇强降雨过程,超10万人受灾。石门县壶瓶山镇龙池河村党支部书记向金元连日扎在救灾一...
十年琴台启新程,千城万店筑华章... 5月23日,琴台酒肆十周年庆典暨琴台打酒千城万店战略发布会在郑州丰乐农庄隆重举行。行业领导、全国经销...
别墅小区违建“越投诉越多”,究... 那一栋栋违建就像砌在业主心里的添堵墙,也会遮蔽执法公信力。据封面新闻报道,近日多名邢台市民反映,位于...
十载酿新章,琴台打酒铺解锁酒类... 5月23日,琴台酒肆十周年庆典暨琴台打酒千城万店战略发布会在郑州丰乐农庄隆重举行。行业领导、全国经销...