MySQL备份python代码

import os, time, pymysql, shutilfrom apscheduler.schedulers.blocking import BlockingScheduler  # 定时任务def getDatabaseNames():    """    链接数据库    返回指定数据库的全部的表    """    conn = pymysql.connect(host='10.100.102.224', port=3316, db='indexdb', user='root', passwd='root')    cur = conn.cursor()    cur.execute('show tables;')    tables = cur.fetchall()    cur.close()    conn.close()    return tablesdef db_bf(path):    """    建立存储路径    而且备份指定数据库下的表    """    path = path.strip()    path = path.rstrip("\\")    if not os.path.exists(path):  # 判断系统是否存在该路径        os.makedirs(path)  # ,不存在则建立        tables = getDatabaseNames()        for table in tables:            try:                tablename = table[0]                # 导出db                cmd = "mysqldump -h%s -u%s -p%s %s > %s/%s.sql" % ('10.100.102.224','root', 'indexdb', tablename, folder, tablename)                print(cmd)                os.system(cmd)            except Exception as e:                print(e)        return True    else:        return Falsedef mysql_rm(path, timestr):    """    删除备份目录下超过必定时长的文件    """    # 列出目录下全部的备份    f = list(os.listdir(path))    print(f)    now_time = timestr[0:8]    # 设置超过的时间    days = 3    for i in f:        exit_time = i[0:8]        update_time = int(exit_time) + days        # if update_time < int(now_time) or exit_time == now_time:        # 若是备份的数据超过规定的天数就删除了        if update_time < int(now_time):            shutil.rmtree(path + i)            # with open(self.__filerm_log, 'a') as file_log:            #     file_log.write("%s删除备份文件%s \n" % (timestr[0:8], i))# def hf_bf(path, db):#     """#     把备份的数据恢复到指定的数据库#     """#     f = list(os.listdir(path))##     # for x in f:#     cmd = "mysql-u%s -p%s %s < %s/%s" % ('root', 'root', db, path, f[0])#     print(cmd)#     os.system(cmd)if __name__ == '__main__':    # 建立备份的存储路径,    timestr = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))    folder = "mysql_data_bak/" + timestr    db_bf(folder)    # 恢复数据库备份    # hf_bf("mysql_data_bak/20191028114943",'ceshi')    scheduler = BlockingScheduler()    # 函数将会在6,7,8,11,12月的第3个周五的1,2,3点运行    # scheduler.add_job(db_bf,args=[folder,], trigger='cron', month='6-8,11-12', day='3rd fri', hour='0-3')    # 截止到2019-12-30 00:00:00,每周一到周五早上五点半运行    # scheduler.add_job(db_bf,args=[folder,], trigger='cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2019-12-31')    # 天天14.39执行任务    scheduler.add_job(db_bf, args=[folder, ], trigger='cron', hour=14, minute=39)    try:        scheduler.start()    except (KeyboardInterrupt, SystemExit):        pass
相关文章
相关标签/搜索