python + crontab 实现 MySQL 数据库自动备份

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 这个文件做数据库备份工作了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值