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
相關文章
相關標籤/搜索