下面是刚学python的时候写的小脚本,建议参考另一篇文章中的shell脚本:如何创建一个MySQL备份及自动清理计划
本脚本会执行下面任务
自动创建当日备份文件
日志记录
压缩备份文件
删除n天前的备份文件。
使用前需要先修改配置信息,本脚本为CentOS创建,若使用到windows上需要先看看是否有不兼容的地方。
有问题可以留言。
本脚本不是很成熟,研究一下即可,不建议在生产环境使用。
#!/usr/bin/python
#coding:utf8
#自动创建当日备份文件、日志记录、压缩备份文件、删除n天前的备份文件
import datetime,os,zipfile
#--配置信息--#
user='root' #mysql用户,需要确定此用户有操作所有需要备份数据库的权限
passwd='000000' #mysql密码
dblist=['bbs','cacti','test'] #mysql数据库列表(需要备份几个就填写几个)
bakdir='/backup/sql/' #数据库备份目录
logfile='/backup/sql/sqlbak.log' #备份日志文件
delbak='1' #是否删除备份文件(1=删除,0=不删除)
delday=20 #删除n天前的文件,数字(int)
#-----------#
'''变量说明
now_date 当前日期,格式(0000-00-00)
del_date 要删除的日期(0000-00-00)
file_zip 压缩sql文件后的名称
cmd_sql 根据条件生成的备份语句
dbs 需要备份的数据库数量
m 循环的次数
logtext 日志内容
'''
if os.path.exists(bakdir)==False:
os.makedirs(bakdir)
os.chdir(bakdir)
now_date=str(datetime.datetime.now().date())
del_date=str(datetime.datetime.now().date()-datetime.timedelta(days=delday))
file_zip=now_date+'.zip'
dbs=len(dblist)
m=0
while m != dbs:
file_sql=dblist[m]+now_date+'.sql'
cmd_sql='mysqldump -u '+user+' --password='+passwd+' '+dblist[m]+' > '+bakdir+file_sql
os.popen(cmd_sql)
m=m+1
m=0
f=zipfile.ZipFile(file_zip,'w',zipfile.ZIP_DEFLATED)
while m != dbs:
f.write(dblist[m]+now_date+'.sql')
os.remove(dblist[m]+now_date+'.sql')
m=m+1
m=0
f.close
if delbak=='1':
if os.path.exists(del_date+'.zip')==True:
os.remove(del_date+'.zip')
if os.path.exists(file_zip)==False:
logtext=os.linesep+str(datetime.datetime.now())+':'+os.linesep+'脚本运行已完成,未发现备份后的文件,请检查配置。'+os.linesep
else:
logtext=os.linesep+str(datetime.datetime.now())+':'+os.linesep+'脚本运行已完成,备份后的文件信息为:'+os.linesep+str(os.stat(file_zip))+os.linesep
if os.path.exists(logfile)==True:
f=open(logfile,'a')
f.write(os.linesep+logtext)
f.close
else:
f=open(logfile,'w')
f.write(logtext)
f.close