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 ...
随机推荐
- Github上好的Android开源框架
1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduli ...
- We7的区县站点群建设策略
一.解决门户和委办局.乡镇的互动 构建以区县政府门户为主站,各委办局.乡镇为子站的站点群体系: 基于统一的信息体系,实现分级授权.统一管理的功能.各网站能够有独立的页面展现和管理后台,同一时候网站之间 ...
- WCF基础之承载服务和生成客户端
wcf的承载有三种iis.was和自承载,它们如何承载园子里有很多,就不多赘述. 自iis7以后iis支持http和非http的协议,使用iis承载服务与其他两种承载相比,我觉的最明显的是was和自承 ...
- Pipeline outbound
netty源码死磕8 Pipeline outbound 出站流程揭秘 1. Pipeline outbound流程 1.1. 出站的定义 简单回顾一下. 出站(outbound) 操作,通常是处于上 ...
- 洛谷 P3629 [APIO2010]巡逻
题目在这里 这是一个紫题,当然很难. 我们往简单的想,不建立新的道路时,从1号节点出发,把整棵树上的每条边遍历至少一次,再回到1号节点,会恰好经过每条边两次,路线总长度为$2(n-1)$,根据树的深度 ...
- JNDI知道这么多就够了!
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sunshoupo211/article/details/37924017 JNDI 全称:Java ...
- ggplot2绘图系统
ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系统 .在ggplot2中,图是采用串联起来(+)号函数创建的.详细内容参见<ggplot2:数据分析与图形艺术>,这里只简要 ...
- LeetCode:乘法表中的第K小的数【668】
LeetCode:乘法表中的第K小的数[668] 题目描述 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要 ...
- 每天一个Linux命令(36)ps命令
Linux中的ps命令是Process Status的缩写. ps命令用于报告当前系统的进程状态.可以搭配kill指令随时中断.删除不必要的程序. (1)用法: ...
- 【leetcode刷题笔记】Maximal Rectangle
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...