Mysql备份脚本python编写
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
##############################################################
#
# Date: 2017/09/22
# Filename: BackupMySQL.py
# Description: backup mysql files,base percona xtrabackup
#
# 备份mysql数据库数据,在主库进行数据同步备份:10.99.10.22
# 备份的数据存储目录: /data/backup/mysqlbak/
# 备份策略是每天备份一次,以当天日期命名的目录,如:20170922
# 保留最近7天的备份数据,可配置
############################################################## # Import required python libraries
import os
import sys
import time
import logging
import datetime
import subprocess logging.basicConfig(level=logging.DEBUG,
format='[%(asctime)s] [%(levelname)s] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='/software/scrpits/backupMysql/backupMysql.log',
filemode='a') # 配置数据库连接信息
DB_HOST = '10.99.10.22'
DB_USER = 'bakuser'
DB_USER_PASS = 'xxxxxxxx' # 配置本地保留多少天的数据备份,默认保留7天
DataSave = 7 # 配置备份的基础目录
BackupPath = '/data/backup/mysqlbak/' DayTime = time.strftime('%Y%m%d')
TodayBackupPath = BackupPath + DayTime def Check():
'''备份前检查,如果目录存在则退出,否则创建备份目录'''
if os.path.exists(TodayBackupPath):
res = 'The backup directory already exists: %s. exit ...' % TodayBackupPath
print res
logging.error(res)
sys.exit()
else:
os.makedirs(TodayBackupPath)
res1 = "creating backup folder %s " % TodayBackupPath
logging.info(res1) def BackupDB():
'''备份数据库,定义备份指令,参数'''
Check() logging.info('Start backing up the database.')
iArgs = "--slave-info --no-timestamp"
BackupCmd = "/usr/bin/innobackupex %s --host=%s --user=%s --password=%s %s " \
% (iArgs, DB_HOST, DB_USER, DB_USER_PASS, TodayBackupPath)
p = subprocess.Popen(BackupCmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout,stderr = p.communicate()
logging.info(stdout)
logging.info(stderr)
logging.info('The database backup is complete') def GetTimePoint(days):
''' 返回需要删除的时间点 '''
CurrTime = time.time()
DelTime = 3600*24*int(days)
TimePoint = CurrTime - DelTime
return TimePoint def CheckDir(cdir):
''' 删除文件夹的函数 '''
try:
if os.path.isdir(cdir):
os.rmdir(cdir)
s = 'remove dir %s succ ...' % cdir
logging.info(s)
except Exception as e:
s = 'remove dir %s FAIL !!! %s' % (cdir, e)
logging.error(s) def CleanOld(beforeTime, path):
''' 遍历备份目录,获取目录mtime时间,比对时间戳,删除之前目录 '''
logging.warn('Start cleaning up old backup data...')
for eachdir in os.listdir(path):
f = path + eachdir
lastMtime = os.stat(f).st_mtime
if lastMtime <= beforeTime:
CheckDir(f) if __name__ == '__main__':
BackupDB()
t = GetTimePoint(DataSave)
CleanOld(t, BackupPath)
Mysql备份脚本python编写的更多相关文章
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- 自动化运维——MySQL备份脚本(二)
使用if语句编写MySQL备份脚本 代码: #!/bin/bash #auro backup mysql db #by steve yu #define backup path BAK_DIR=/da ...
- MySQL 备份脚本--mysqldump在slave 上进行备份
MySQL 备份脚本--mysqldump在slave 上进行备份 使用mysqldump在slave上进行备份,建议使用stop slave sql_thread,start slave sql_t ...
- Windows 下 MySQL 备份脚本
@title MySQL备份脚本 @echo off @echo root@127.0.0.1:3306 set host=127.0.0.1 set port=3306 set user=root ...
- jar包-循环遍历-开机启动服务-微服务-多项目拷贝-pid杀死进程-mysql备份脚本-防火墙检测脚本
vi /root/serverkaiji.sh #!/bin/bash ls /tlvnksc/ | egrep -v "^c|^f" > /root/service.lis ...
- CMD mysql 备份脚本
创建.bat文件 echo. echo MySQL数据库备份脚本 echo ***************************** echo. echo 备份日期:%date% echo 备份时间 ...
- MySQL备份脚本,应该这么写
前言: 数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果.所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库.在 MySQL 中,比较常用的逻辑备份工具是 ...
- mysql备份脚本,每天执行一次全量备份,三次增量备份
线上一个小业务的mysql备份 全量备份 #!/bin/bash #crete by hexm at -- #scripte name : full_backup.sh #descriptioni : ...
- MySQL备份脚本-亲试ok
#!/bin/bash # 以下配置信息请自己修改mysql_user="USER" #MySQL备份用户mysql_password="123456" #My ...
随机推荐
- 也谈在 .NET 平台上使用 Scala 语言(续)
而我是在 Ubuntu 操作系统中使用 Scala.NET 的,应该没有这个问题. 那么,就让我们来測试一下吧. 如今,我们添加一个 DotNet.cs 文件,例如以下所看到的: 1 2 3 4 5 ...
- thinkphp自动验证无效的问题
新手入门thinkphp,试用自动验证表单输入数据功能,却发现怎么都不能调用自动验证,自动验证无效,原因竟是一个小细节的疏忽,学习一定要细心啊! Action方法: IndexAction下的adds ...
- SET IDENTITY_INSERT ON/OFF 权限
今天突然遇到了,找不到对象“XXXX”,因为它不存在或者没有您所需的权限,于是检查程序,突然发现程序中有一段代码是: SET IDENTITY_INSERT eticket ON //执行业务 ... ...
- JS获取图片的缩略图,并且动态的加载多张图片
找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset=" ...
- 九度OJ 1340:小A的计算器 (进制转换)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:735 解决:202 题目描述: 以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-2 ...
- DNN 数据的表示
- windows7下cmd命令窗口没有滚动条的解救方法
由于昨天的好123问题没有解决,我想查看一下本机的ip地址等,于是打开了cmd窗口,输入ipconfig/all命令进行查看,但是发现出现了下面的窗口,无法进行滚动,完全无法查看详细的信息. 然后我百 ...
- C#基础知识之三
C#基础知识之三 1. 程序集间的继承:基类必须被声明为public.必须在project中包含对该基类的程序集引用. 2. 对其它程序集引用和添加对using指令的差别:前者是告诉编译器所需的类 ...
- python+NLTK 自然语言学习处理五:词典资源
前面介绍了很多NLTK中携带的词典资源,这些词典资源对于我们处理文本是有大的作用的,比如实现这样一个功能,寻找由egivronl几个字母组成的单词.且组成的单词每个字母的次数不得超过egivronl中 ...
- JavaScript中的this用法
最近看了许多JavaScript源代码,发现this经常出现,于是对this这个非常特殊的关键词标识符进行总结. 题外话: 1.当函数被调用时,一个activation record[过程活动记录 - ...