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)

  

时间: 2024-08-10 23:58:49

Mysql备份脚本python编写的相关文章

mysql 备份脚本(xtrabackup)

mysql备份脚本,记录一下: 全备: #!/bin/sh  set -x                                                             USER=root  PASSWORD=123456 time=`date +"%y-%m-%d-%H-%M"`   date >> /data/mysqlbackup/logs/$time'_allbackup.log'    #1 begin Full Backups  ech

Windows下MySQL备份脚本

1 @echo off 2 rem MySQL备份脚本 支持全备份 3 rem 增量备份需要MySQL服务加--log-bin参数执行 4 rem 数据还原 mysql -u root -p < backup.sql 5 rem ===================== 6 rem 全局变量 7 set dump=mysqldump.exe 8 set rand=%random% 9 rem ===================== 10 11 rem 检测MySQL路径是否添加到PATH变

mysql 备份脚本以及定时任务

数据是企业最宝贵的资源,作为运维人员备份数据库的数据是特别重要的一项工作,以下是个人查找资料以及个人总结所记录的mysql数据库备份脚本,记录在此作为学习和复习笔记. (1)分库备份脚本 #/bin/sh #version 0.1 MYUSER=root MYPASS=123123 #SOCKET=/data/3306/mysql.sock MYLOGIN="mysql -u$MYUSER -p$MYPASS " MYDUMP="mysqldump -u$MYUSER -p$

mysql备份脚本

对extmail数据库进行每天01:00完全热备份,并可以完全恢复! 一.先建立备份脚本,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 vi mysql_extmail_bak.sh #!/bin/bash # Program #    use mysqldump to Fully backup mysql data per week! BakDir=/mysqlback#要备份到的目录 LogFile=/var/log/bak.log#备份记录日志

线上MySQL备份脚本

最近在研究数据库备份,定时执行备份任务,这里直接把备份脚本设置为crontab命令定时执行,脚本内容如下: [[email protected] ~]# cat mysql-backup.sh #!/bin/bash dbpwd='possw0rd123' dbuser=root host=127.0.0.1 port=3306 dbarg=" -u$dbuser -p$dbpwd -h$host -P$port --default-character=utf8 " DATE=`dat

xtrabackup的mysql备份脚本

一.安装xtrabackup工具 安装方法见:xtrabackup安装 二.配置备份脚本 1.拷贝mysql_backup_shell到mysql业务服务器目录,比如:/data/backup_shell/mysql_backup_shell 2.进入拷贝后mysql_backup_shell所在目录, 然后执行chmod 777 mysql_backup.sh 3.修改backup.conf 需要修改的项: mysql_conf_file=/usr/local/meb/my.cnf.3309

两套mysql备份脚本

数据备份其重要性无需多言,再细想一步,我们至少需要两种备份:一种逻辑备份(mysqldump生成sql文件):一种物理备份(xtrabackup可很好完成).逻辑备份在出问题时能提供更细粒度的恢复和对比:物理备份在整库范围的数据恢复或者增加从库方面有着更高额效率. 首先看下逻辑备份脚本,比较简单 #!/bin/sh ###每天运行一次 ###定义用户 密码 备份目录等信息 user=mysqldump psd=mysqldump backup_base=/data/mysql_backup da

基于Innobackupex的MySQL备份脚本

Innobackupex是Xtrabackup的一部分,其实质也是调用xtrabackup.主要的不同是Xtrabackup除了支持innodb引擎外还支持xtradb引擎.本文主要封装了Innobackupex到shell脚本进行定期备份,供大家参考. 1.脚本描述a.支持增量备份以及全备b.需要传递到备份脚本(如备份路径,连接相关参数等)c.基于周日,周三的全量备份,其他增量备份d.可根据需要调整脚本,比如压缩备份的文件夹以及rsync等 2.脚本内容 ###################

MySQL备份脚本V2(添加日志功能及备份后检查)

备份脚本 #!/usr/bin/env python #_*_coding:utf-8_*_ """ @File: backup_db.py @Author: OldTan @Email: [email protected] @Last Modified: 20180408 """ import os import datetime from threading import Thread from logs import log HOST =