python 处理数据库bak_Python脚本 数据库备份后压缩至zip文件 并删除n天前的备份...

下面是刚学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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值