• 【Mysql备份】Python脚本备份docker的MySQL数据


    1. 可配置备份文件保留天数
    2. 可配置指定表不备份
    import os
    import time
    import schedule
    from datetime import date, timedelta  
    
    DB_user = "root"
    DB_password = "root"
    DB_name = "demo"
    SUDO_Password = ''
    DOCKER_image = "5390aaed0e9c"
    FILE_SAVE_path = "/prod/backup/"
    # 备份文件保留天数
    FILE_SAVE_DATE = 5
    
    def execute():
        del_file()
        backup()
        
    def backup():
        IGNORED_TABLES_STRING = ""
        # 不备份的表
        EXCLUDED_TABLES = [
            'log_data',
            'log_data202210',
            'log_data202209',
            'log_login',
            'log_operation',
            'log_request',
        ]
        for table_name in EXCLUDED_TABLES:
            IGNORED_TABLES_STRING += " --ignore-table=" + DB_name + "." + table_name
    
        FILEPATH = FILE_SAVE_path + "demo_`date +%F`.sql"
        command = "docker exec " + DOCKER_image + " sh -c 'exec mysqldump -u " + DB_user + " -p" + DB_password + " " + DB_name + \
            " " + IGNORED_TABLES_STRING + "' > " + FILEPATH
        
        print(command)
        os.system('echo %s|sudo -S %s' % (SUDO_Password, command))
        
    def del_file():
        dt = date.today() - timedelta(FILE_SAVE_DATE)
        filePath = FILE_SAVE_path + 'demo_' + dt.strftime("%Y-%m-%d") + ".sql"
        if os.path.exists(filePath):
            os.remove(filePath)
            print("删除已有文件 " + filePath)
    
    """
    schedule.every(2).seconds.do(job)     # 部署每2s执行一次job()函数的任务
    schedule.every(2).minutes.do(job)       # 部署每2分钟执行一次job()函数的任务
    schedule.every().hour.do(job)            # 部署每×小时执行一次job()函数的任务
    schedule.every().day.at("10:30").do(job)  # 部署在每天的10:30执行job()函数的任务
    schedule.every().monday.do(job)          # 部署每个星期一执行job()函数的任务
    schedule.every().wednesday.at("13:15").do(job) # 部署每周三的13:15执行函数的任务
    """
    schedule.every().day.at("02:30").do(execute)
    
    if __name__ == "__main__":
        while True:
            schedule.run_pending()
            time.sleep(1)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
  • 相关阅读:
    java毕业生设计校园兼职招聘系统计算机源码+系统+mysql+调试部署+lw
    46-文本编辑器及文本处理
    测试到底是个啥
    德国人工智能公司【Kodex AI】完成160万欧元融资
    面试题:在日常工作中怎么做MySQL优化的?
    卷积神经网络入门
    嵌入式C常见面试题
    【和小白一起练习CTF】攻防世界:web基础练习题(1)
    gazebo各种插件
    OpenGL 图像色调
  • 原文地址:https://blog.csdn.net/weixin_42393758/article/details/128197639