python + crontab 实现 MySQL 数据库自动备份[复制链接] 电梯直达 1# 发表于 2009-2-6 23:10:10 | 只看该作者 | 倒序浏览 很早以前为了实现 MYSQL 数据库自动备份,在 FreeBSD 下用SH写了一个脚本放到 CRONTAB 中,便轻松搞定。 今日突发奇想,想用 Python 做个脚本实现 MYSQL 数据库自动备份,于是折腾了一翻,效果不错,呵呵。 测试环境:ubuntu704 + python2.5 + mysql5 一、程序清单:auto_backup.py (请确定当前用户对备份目录、日志目录有一定权限) #********************************************************************************************************************** #!/usr/bin/env python # -*- coding: utf8 -*- # Mysql_backup @ Python # Functions: 自动创建当日备份目录、日志记录、压缩备份文件 # Created By Fufay on 2007-04-30,Version 0.1 import sys,os,time # ----------------------------- 初始信息 -------------------------------------------- mysql_usr = 'root' # mysql 用户 mysql_pwd = '780408ss' # mysql 密码 mysql_db = 'mysql' # mysql 数据库 mysql_charset = 'gb2312' # 数据库编码 bk_path = '/home/fufay/Python/backup/' # 备份目录 cmd_path = '/usr/bin/' # 命令 mysqldump 的路径 Logs_path = bk_path + 'Logs' # 日志文件全路径 # ----------------------------- 初始完毕 -------------------------------------------- # 写日志函数 def writeLogs(filename,contents): f = file(filename,'aw') f.write(contents) f.close() # 备份目录以当日日期为名 today = bk_path + time.strftime('%Y-%m-%d') # 数据库备份名称以备份时间为名 fname = today + os.sep + time.strftime('%H%M%S') + '.gz' # 创建当日备份目录 if not os.path.exists(today): Msg = '-'*30 + time.strftime('%Y-%m-%d,%H:%M:%S') + '-'*30 + '\n' if(os.mkdir(today)) == None: Msg += '** 成功创建备份目录: ' + today + '\n\n' writeLogs(Logs_path,Msg) else: Msg += '!! 创建备份目录: ' + today + '失败,请检查目录是否可写!\n\n' writeLogs(Logs_path,Msg) sys.exit() # 备份 Mysql 命令 cmd_dump = "%smysqldump -u%s -p%s --default-character-set=%s --opt %s | gzip > %s" % \ (cmd_path,mysql_usr,mysql_pwd,mysql_charset,mysql_db,fname) # 执行备份命令 if os.system(cmd_dump) == 0: writeLogs(Logs_path,'数据备份为: ' + fname + '\n') else: writeLogs(Logs_path,'数据备份失败!\n') # over #********************************************************************************************************************** 二、crontab 相关。 打开终端,将 auto_backup.py 拷贝到某个文件夹(如:/home/fufay/Python/),并将其权限设定为 “允许执行”: chmod a+x ./auto_backup.py 设定 crontab: crontab -e 如: */30 * * * * /home/fufay/Python/auto_backup.py 保存退出 ok,这样系统每隔30分钟(当然可以设置每天/每周等等)就会运行一下 auto_backup.py 这个文件做数据库备份工作了。