为了账号安全,请及时绑定邮箱和手机立即绑定

mysql数据库备份与维护脚本

标签:
Java

准备工作:

创建mysql备份账号:

GRANT SELECT, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup'@'localhost' IDENTIFIED BY 'XXX';

FLUSH PRIVILEGES


1, 全备脚本(backup.sh)

#!/usr/bin/env sh

#

# full backup

################################################################################

################################################################################

BINLOG_HOME=/export/mysql/logs

BACKUP_HOME=/export/mysql_backup

BACKUP_DEST=$BACKUP_HOME/full

BACKUP_LOG=$BACKUP_HOME/log

################################################################################

# make one backup

innobackupex --defaults-file=/etc/mysql/my.cnf --user='backup' \

--password='XXX' --slave-info  --safe-slave-backup \

--compress --compress-threads=4 $BACKUP_DEST


2, 备份log ( backup_log.py)

#!/usr/bin/python

#

# log backup

import os

import os.path

import shutil

import time,  datetime

import re

binlog_home = '/export/mysql/logs/'

backup_home = '/export/mysql_backup/log'

basename = 'mysql-bin.[0-9]'

def copyFiles(sourceDir, targetDir):

if not os.access(sourceDir, os.F_OK):

print '%s does not exist' %(sourceDir)

return

if sourceDir.find(".svn") > 0:

return

for file in os.listdir(sourceDir):

sourceFile = os.path.join(sourceDir, file)

targetFile = os.path.join(targetDir, file)

if os.path.isfile(sourceFile) and re.compile(basename).match(file):

if not os.path.exists(targetDir):

os.makedirs(targetDir)

if not os.path.exists(targetFile) or (os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):

open(targetFile, "wb").write(open(sourceFile, "rb").read())

if  __name__ =="__main__":

print "Start binlog Copying..."

copyFiles(binlog_home, backup_home)

print "End Copying!"



3,清理历史文件(cleanoldfile.sh)

#!/bin/sh

#

#  clean up history backup data/log files

echo "begin cleaning..."

find /export/mysql_backup/full -type d -ctime +10 | xargs rm -rf

find /export/mysql_backup/log -type f -ctime +7 | xargs rm -rf

echo "end cleaning!"


4,crontab设置:

0 1 * * * /export/mysql_backup/cleanoldfile.sh

0 2 * * * /export/mysql_backup/backup.sh

*/30 * * * * /export/mysql_backup/backup_log.py



作者:严国华
链接:https://www.jianshu.com/p/d0775148c4c4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消