首页 > 数据库 >Python 数据库备份脚本

Python 数据库备份脚本

时间:2024-10-16 10:22:41浏览次数:9  
标签:Python os 备份 file time path backup 数据库

import datetime
import os
import subprocess
# 数据库备份目录
BACKUP_DIR = '/path/to/backup'
# 备份文件保留周期(天)
RETENTION_PERIOD = 7
# 备份数据库
def backup_database():
    current_time = datetime.datetime.now()
    backup_file = f"backup_{current_time.strftime('%Y%m%d%H%M%S')}.sql"
    backup_path = os.path.join(BACKUP_DIR, backup_file)

# 使用 subprocess 模块执行数据库备份命令 
   backup_command = [
        'mysqldump',
        '-u',
        'username',
        '-p',
        'password',
        '--all-databases'
    ]
    with open(backup_path, 'w') as backup_file:
        subprocess.run(backup_command, stdout=backup_file)
    print(f"数据库备份已完成,备份文件保存为: {backup_path}")
# 清理过期备份文件
def cleanup_backup():
    current_time = datetime.datetime.now()
    cutoff_time = current_time - datetime.timedelta(days=RETENTION_PERIOD)

    for file in os.listdir(BACKUP_DIR):
        file_path = os.path.join(BACKUP_DIR, file)
        if os.path.isfile(file_path):
            file_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
            if file_time < cutoff_time:
                os.remove(file_path)
                print(f"过期备份文件已删除: {file_path}")
# 恢复数据库
def restore_database(backup_file, restore_time):
    backup_path = os.path.join(BACKUP_DIR, backup_file)

    # 使用 subprocess 模块执行数据库恢复命令
    restore_command = [
        'mysql',
        '-u',
        'username',
        '-p',
        'password'
    ]
    with open(backup_path, 'r') as backup_file:
        subprocess.run(restore_command, stdin=backup_file)

    print(f"数据库已成功恢复到时间点: {restore_time}")
# 主函数
def main():
    # 执行数据库备份
    backup_database()

    # 清理过期备份文件
    cleanup_backup()
    # 恢复数据库到指定时间点
    restore_database('backup_20220101120000.sql', '2022-01-01 12:00:00')
if __name__ == '__main__':    main()

 

标签:Python,os,备份,file,time,path,backup,数据库
From: https://www.cnblogs.com/liuyuliang/p/18469269

相关文章

  • 122-bt-nginx 配置备份
    userwwwwww;worker_processesauto;error_log/www/wwwlogs/nginx_error.logcrit;pid/www/server/nginx/logs/nginx.pid;worker_rlimit_nofile51200;stream{log_formattcp_format'$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_......
  • python从0快速上手(十一)高级特性1
    Python学习:高级特性1在Python的奇妙世界里,高级特性就像是那些隐藏在角落里的神秘力量,等待着勇敢的程序员去发掘。装饰器、生成器和迭代器,这些听起来就像是古老魔法书中的咒语,但它们其实是Python中强大的编程工具。让我们一起揭开这些高级特性的神秘面纱,看看它们如何让我们......
  • 【新人系列】Python 入门(二):Python IDE 介绍
    ✍个人博客:https://blog.csdn.net/Newin2020?type=blog......
  • python pandas写入excel
    #--coding:utf-8--importdatetimeimportpandasaspdfromcommon_toolimportget_ip_areafromdb.mysqlConnectionimportMyPymysqlPoolfromdb_configimportdata_report_dbsex_dict={"-1":"未知","0":"女&......
  • 软件测试笔记|数据库基础|创建索引的原则
    创建数据库索引有以下原则:一、选择合适的列创建索引1.选择经常用于查询条件的列:如果某一列经常在WHERE子句中作为条件出现,那么为该列创建索引可以大大提高查询速度。例如,在一个员工表中,如果经常根据员工的姓名进行查询,那么为“姓名”列创建索引是一个不错的选择。2.选择......
  • 保证Mysql数据库的安全性
    数据库安全性的重要性在一个企业中,为了维护企业声誉和客户信任,保护客户信息和公司数据就显得至关重要,再者,确保公司的系统正常运行,也要保证数据不被恶意篡改,还需要抵御外部攻击和内部威胁。防止数据泄露加密:使用SSL/TLS加密传输数据,启用数据加密功能保护存储的数据使用Op......
  • python 实现旋转图片算法
    旋转图片算法介绍旋转图片算法是图像处理中常用的一种技术,它可以将图像中的对象旋转到特定的角度。这种算法在图像处理、计算机视觉、人工智能等领域都有广泛的应用,例如自动驾驶、医学影像、安防监控等场景。以下是旋转图片算法的基本步骤:确定旋转中心点:旋转操作通常围绕......
  • python爬虫之cookie管理
    Cookie处理在Web开发中,Cookie是一种常用的技术,用于在Web服务器和浏览器之间存储和传输数据。Cookie通常包含有关用户会话、首选项和其他信息的键值对。     Request库的get()方法的语法是:requests.get(url,params=None,**kwargs))url:想要获取的网页的链接。params:url的额......
  • 基于SpringBoot + mybatis + logback + shiro的仓库管理系统(完美运行、数据库源代码、
    文章目录前言一、系统功能模块二、开发环境三、部分功能模块展示3.1登录模块3.2后台首页3.3客户管理3.4供应商管理3.5商品管理3.6商品进货3.7商品退货查询3.8商品销售3.9销售退货查询3.10部门管理3.11菜单管理3.12权限管理3.13角色管理3.14用户管理3.15图......
  • python datetime.datetime.now() 北京时间
    pythondatetime.datetime.now()北京时间 ===================要获取北京时间(中国标准时间,UTC+8),可以使用datetime模块中的datetime和timedelta类。以下是一个简单的函数,用于获取北京时间:fromdatetimeimportdatetime,timedelta defget_beijing_time():   #获取UTC......