python调用mysqldump备份mysql

生产中经常使用mysqldump备份mysql库,以下脚本是备份mysql库的脚本

# -*- coding: utf-8 -*-
#!/usr/bin/python
'''
Created on 2018年7月6日

@author: author

Description:
    此脚本适用于使用mysqldump备份数据库
    数据库服务器IP地址:192.168.2.253
    异机备份服务器IP地址:192.168.2.252
    数据库保留份数:10份
    脚本运行服务器:192.168.2.253
    定时任务:0 5 * * * python /mvtech/253mysqlBackup.py
'''

import tarfile
import datetime
import os
import ftplib


# 上传至ftp
def upload_file(ftpHost, ftpUser, ftpPwd, ftpDir, fileName, overdueFileName):
    ftp = ftplib.FTP(ftpHost)
    ftp.login(ftpUser, ftpPwd)
    try:
        ftp.mkd(ftpDir)
    except Exception as e:
        print(e)
    ftp.cwd(ftpDir)
    try:
        ftp.delete(overdueFileName)
    except Exception as e:
        print(e)
    ftp.storbinary("STOR " + fileName, open(fileName, "rb"))
    ftp.quit()


# tar打包
def tar_file(backup_path, package_name, local_path):
    os.chdir(backup_path)
    tar = tarfile.open(package_name, 'w:gz', encoding='UTF-8')
    tar.add(local_path)
    tar.close()

    
# 主运行函数
if __name__ == "__main__":
    # 定义日期
    today = datetime.date.today()
    oneday = datetime.timedelta(days=1)
    deleteDay = today - 10 * oneday
    # ftp server 配置信息
    ftp_host = '192.168.2.252'
    ftp_user = 'duftp'
    ftp_pwd = 'mvtech123'
    # ftp 备份工作目录
    ftp_dir = 'mysqlBackup'
    # mysql server 配置信息
    db_host = '192.168.2.253'
    db_user = 'root'
    db_pwd = 'mvtech123'
    # 本地备份目录
    db_backup_dir = '/mvtech/backupMysql/'
    # 今天的临时备份目录
    today_backup_dir = '/mvtech/backupMysql/' + str(today)
    # 创建今天的临时备份目录
    if not os.path.exists(today_backup_dir):
        os.system('mkdir -p %s' % today_backup_dir)
    # tar包名称
    tar_package_name = db_host + '_' + str(today) + '.tar.gz'
    # 过期tar包名称
    overdue_package_name = db_host + str(deleteDay) + '.tar.gz'
    # 备份的数据库列表
    db_name_list = ['gaxsxk', 'xyyq', 'isms']
    
    for db_name in db_name_list:
        backup_file_name = db_name + '.sql';
        # 注:mysqldump位置位于/mvtech/mysql/bin/,若不是该目录需要更改
        mysqlcmd = "/mvtech/mysql/bin/mysqldump -h " + db_host + " -u" + db_user + " -p" + db_pwd + " --single-transaction " + db_name + " > " + today_backup_dir + "/" + backup_file_name;
        # 执行备份
        os.system(mysqlcmd);
        
    # 将备份文件使用tar_file打包
    tar_file(db_backup_dir, tar_package_name, today_backup_dir);
    # 通过ftp上传tar包备份
    upload_file(ftp_host, ftp_user, ftp_pwd, ftp_dir, tar_package_name, overdue_package_name);
    # 清除今天的临时备份目录
    os.system('rm -rf %s' % today_backup_dir);
    # 删除过期tar包
    os.system('rm -rf %s' % overdue_package_name);

猜你喜欢

转载自www.cnblogs.com/hang0716/p/9283312.html