Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1838748
  • 博文数量: 117
  • 博客积分: 2559
  • 博客等级: 少校
  • 技术积分: 4385
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-13 20:08
个人简介

作为初学者,要想取得进步,成为高手,首先应该了解自己的不足之处.

文章分类

全部博文(117)

文章存档

2014年(1)

2013年(25)

2012年(13)

2011年(77)

2010年(1)

分类: 系统运维

2011-01-19 14:13:03

功能:

1·调用mysqldump备份数据

2·tar中的--remove-files参数指,归档后,删除源文件,如果备份的是目录,目录会保留

3·删除7天之前的备份

4·调用函数,'--all-databases','mytest'分别定义需要备份的库表和备份出来的文件名,日期是自动加的。

5·备份完成后,调用mail命令,给管理员发一封邮件,并显示目录内容

6·待完善……

代码如下:

#!/usr/local/bin/python

#-*- coding:UTF-8 -*-

'''

author:ninglianjie

email:ning_lianjie@163.com

date:2010-12

'''

import datetime

import os

import commands

NOWDAY = datetime.date.today()

DAY7 = NOWDAY - datetime.timedelta(days = 7)

def touchfile(DB_NAME,FILE_NAME):

    CMDDUMP = '/usr/bin/mysqldump -uroot -p123456 -h127.0.0.1 -P3306 %s > %s.%s.sql' % (DB_NAME,FILE_NAME,str(NOWDAY))

    CMDTAR = '/bin/tar zcvf %s.%s.tgz %s.%s.sql --remove-files' % (FILE_NAME,str(NOWDAY),FILE_NAME,str(NOWDAY))

    CMDRM = '/bin/rm -f %s.%s.tgz' % (FILE_NAME,str(DAY7))

#    CMDMAIL = '%s | mail -s mysql_backup % (op_ls)

    (stat_dump,op_dump) = commands.getstatusoutput(CMDDUMP)

    (stat_tar,op_tar) = commands.getstatusoutput(CMDTAR)

    (stat_rm,op_rm) = commands.getstatusoutput(CMDRM)

    (stat_ls,op_ls) = commands.getstatusoutput('/bin/ls -l')

    CMDMAIL = 'printf "%s" | /bin/mail -s "mysql_backup" % (op_ls)

    os.system(CMDMAIL)

#    (stat_mail,op_mail) = commands.getstatusoutput(CMDMAIL)

if __name__ == '__main__':

    os.chdir('/opt/backup')

    touchfile('--all-databases','mytest')

备注mysqldump其他常用参数(引自《深入浅出MySQL》)
--add-drop-database 每个数据库创建语句前加上DROP DATABASE语句
--add-drop-table    在每个表创建语句前加上DROP TABLE语句
-n, --no-create-db 不包含数据库的创建语句
-t, --no-create-info 不包含数据表的创建语句
-d, --no-data 不包含数据
--compact选项使得输出结果简洁,不包括默认选项中的各种注释
-c --complete-insert选项使得输出文件中的insert语句包括字段名称,默认是不包括字段名称的
-T选项将指定数据表中的数据备份为单纯的数据文本和建表SQL两个文件,经常和下面几个选项一起配合使用,将数据导出为指定格式显示。下面几个选项的具体使用方法,在第27章“备份与恢复”中将会进行详细的讲解
 -T ,--tab=name(备份数据和建表语句)
 --fields-terminated-by=name(域分隔符)
 --fields-enclosed-by=name(域引用符)
 --fields-optionally-enclosed-by=name(域可选引用符)
 --fields-escaped-by=name(转义字符)
--default-character-set=name选项可以设置导出的客户端字符集
-F  --flush-logs(备份前刷新日志)
-l  --lock-tables(给所有表加读锁)

阅读(3151) | 评论(1) | 转发(2) |
0

上一篇:OpenLDAP原理

下一篇:python_rsync多线程

给主人留下些什么吧!~~

ning_lianjie2011-05-12 15:35:30

这个脚本经我几次测试,不太好用,而且mysqldump上面的备份,无须花费太大精力开发脚本。