使用Python脚本和crond服务实现innobackupex
2016-09-21 本文已影响0人
yestreenstars
新建一个脚本/root/backup.py,内容如下:
# -*- coding: utf-8 -*-
'''
脚本作者:昨、夜星辰
脚本作用:使用innobackupex命令对MySQL数据库进行周期备份
创建日期:2016年9月21日
'''
import os
from datetime import datetime
# MySQL服务root用户的密码
password = ''
# 存储备份的目录
directory = ''
# 当天的星期
weekday = datetime.today().weekday()
'''
关于weekday的值:
“0”表示星期一,“1”表示星期二,依此类推……“6”表示星期日。
备份模式:
星期日完整备份,星期一至星期六增量备份。
'''
if weekday == 6:
# 清空存储备份的目录
os.system('rm -rf %s/*' % directory)
# 完整备份
os.system('innobackupex --password=%s %s/%d --no-timestamp' % (password, directory, weekday))
elif weekday == 0:
if os.path.isdir('%s/6' % directory):
# 星期一的增量备份
os.system('innobackupex --password=%s --incremental %s/%d --incremental-basedir=%s/6 --no-timestamp' % (password, directory, weekday, directory))
else:
if os.path.isdir('%s/%d' % (directory, (weekday - 1))):
# 其他星期的增量备份
os.system('innobackupex --password=%s --incremental %s/%d --incremental-basedir=%s/%d --no-timestamp' % (password, directory, weekday, directory, (weekday - 1)))
执行下面的命令进入crontab的编辑模式:
crontab -e
新增以下内容:
# 每天凌晨2点自动执行数据库备份脚本
0 2 * * * python /root/python &> /dev/null