Python3.7备份MySQL数据库

MySQL用户:root
MySQL密码:123456
需要事先使用pip3安装pymysql库

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: vincen


import pymysql.cursors
import os
import time

db_host = '127.0.0.1'
db_user = 'root'
db_passwd = '123456'
# db_name = 'zabbix'

backup = '/data/backup/mysql'

time_year = time.strftime('%Y')
time_month = time.strftime('%m')
time_day = time.strftime('%d')

todayBackupDir = backup + '/' + time_year + '/' + time_month + '/' + time_day
# backupName = db_name + '_' + time.strftime('%Y%m%d') + time.strftime('%H%M') + '.sql'


def checkDir():
    '''检查是否存在对应的目录,如果不存在就创建'''
    if os.path.isdir(todayBackupDir):
        resInfo = 'the backup directory %s already exits...' % todayBackupDir
        print(resInfo)
    else:
        os.makedirs(todayBackupDir)
        resInfo1 = 'the backup directory has created....'
        print(resInfo1)


def backup(databaseName):
    '''备份数据库'''
    checkDir()
    backupName = databaseName + '_' + time.strftime('%Y%m%d') + time.strftime('%H%M') + '.sql'
    try:
        print('start backup  %s database...' % databaseName)
        backupcmd = "/usr/bin/mysqldump -u%s -p%s %s | /usr/bin/gzip > %s/%s.tar.gz" % (db_user,db_passwd,databaseName,todayBackupDir,backupName)
        os.system(backupcmd)
        return "the %s database backup is complete" % databaseName
    except:
        return False



def main():
    connection = pymysql.connect(host='127.0.0.1',user='root',password='123456')
                                 # db='zabbix',
                                 # charset='utf8')
                                 # cursorclass=pymysql.cursors.DictCursor)
    results = []
    try:
        with connection.cursor() as cursor:
            sql = '''SHOW DATABASES'''
            cursor.execute(sql)
            result = cursor.fetchall()
            # print(result)
            for i in range(len(result)):
                results.append(result[i][0])
            # print(results)
    finally:
        connection.close()
    # a = len(results)
    # print(type(a))
    for databasename in results:
        # databaseName = results[i][0]
        if databasename != "information_schema" and databasename != "mysql" and databasename != "performance_schema":
            # pass
            # print(databasename)
            backup(databasename)



if __name__ == "__main__":
    main()
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值