zoukankan      html  css  js  c++  java
  • MySQL备份python代码

    import os, time, pymysql, shutil

    from 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 tables


    def 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 False


    def 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 " % (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
  • 相关阅读:
    异常空格处理
    django
    django的ORM理解
    Django前后端分离
    Django企业项目实战
    Centos7 从 git version 1.8.3.1升级git version 2.32.0 全过程
    代码 80070005 Windows Uudate 遇到未知错误
    Power Shell Active Directory 批量创建分组
    H3C S5024E-PWR-X 端口镜像及抓包实例
    FusionCompute 忘记密码 重置操作
  • 原文地址:https://www.cnblogs.com/guofeng-1016/p/11762731.html
Copyright © 2011-2022 走看看