用 Python 实现 MySQL 数据库定时自动备份

简介: 本文介绍如何用Python脚本实现MySQL数据库的自动化备份。通过调用`mysqldump`工具,结合时间戳命名、文件压缩与定时任务(如crontab),可轻松实现“无人值守”备份。涵盖配置修改、安全建议及日志管理,提升备份效率与可靠性,适用于日常开发与生产环境。

日常开发中,数据库备份是必备操作。手动备份不仅麻烦,还容易忘 —— 用 Python 写个自动化脚本,搭配定时任务,就能实现 “无人值守” 的 MySQL 备份,省心又可靠。

一、实现思路

  1. 用subprocess模块调用 MySQL 自带的mysqldump工具,生成数据库备份文件;
  2. 给备份文件命名(包含时间戳,避免重名);
  3. 可选:将备份文件压缩(节省空间);
  4. 搭配系统定时任务(比如 Linux 的 crontab),实现定时自动执行。

二、准备工作

  1. 确保环境已安装 Python(3.x 版本);
  2. MySQL 已安装mysqldump工具(一般随 MySQL 一起安装);
  3. 知道 MySQL 的用户名、密码、数据库名,以及备份文件要存放的目录。

三、Python 脚本代码实现

python

运行

import subprocess
import time
import os
import zipfile
# ---------------------- 配置项(根据你的实际情况修改) ----------------------
MYSQL_USER = "root"          # MySQL用户名
MYSQL_PASSWORD = "your_pwd"  # MySQL密码
MYSQL_DB = "test_db"         # 要备份的数据库名
BACKUP_DIR = "/opt/mysql_backup"  # 备份文件存放目录
# --------------------------------------------------------------------------
# 1. 创建备份目录(如果不存在)
if not os.path.exists(BACKUP_DIR):
    os.makedirs(BACKUP_DIR)
# 2. 生成备份文件名(包含时间戳,格式:数据库名_年-月-日_时-分-秒.sql)
timestamp = time.strftime("%Y-%m-%d_%H-%M-%S")
backup_filename = f"{MYSQL_DB}_{timestamp}.sql"
backup_filepath = os.path.join(BACKUP_DIR, backup_filename)
# 3. 调用mysqldump执行备份
try:
    # 拼接mysqldump命令(注意:密码直接写在命令里有安全风险,生产环境建议用配置文件)
    cmd = f"mysqldump -u{MYSQL_USER} -p{MYSQL_PASSWORD} {MYSQL_DB} > {backup_filepath}"
    # 执行命令
    subprocess.run(cmd, shell=True, check=True)
    print(f"数据库备份成功!文件路径:{backup_filepath}")
except subprocess.CalledProcessError as e:
    print(f"备份失败:{e}")
    exit(1)
# 4. (可选)压缩备份文件(用zip格式)
zip_filename = f"{backup_filepath}.zip"
with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipf.write(backup_filepath, arcname=backup_filename)
# 压缩后删除原sql文件(可选)
os.remove(backup_filepath)
print(f"文件压缩成功!压缩包路径:{zip_filename}")

四、脚本使用说明

  1. 修改代码中的配置项(用户名、密码、数据库名、备份目录);
  2. 运行脚本:python3 mysql_backup.py,执行后去备份目录看是否生成了压缩包;
  3. 定时执行(以 Linux 为例):
  • 打开 crontab 编辑:crontab -e;
  • 添加定时任务(比如每天凌晨 2 点执行):bash

    运行
0 2 * * * /usr/bin/python3 /path/to/your/mysql_backup.py >> /var/log/mysql_backup.log 2>&1
  1. (解释:0 2 * * *代表每天 2 点,后面是脚本路径,最后把日志输出到指定文件)

五、注意事项

  • 密码安全:脚本里直接写密码有风险,生产环境可以把 MySQL 用户名 / 密码写在~/.my.cnf配置文件中,避免明文暴露;
  • 备份清理:定期清理旧的备份文件(可以在脚本里加 “删除 7 天前的备份” 逻辑);
  • 权限问题:确保执行脚本的用户有 MySQL 的备份权限,以及备份目录的读写权限。
相关文章
|
存储 关系型数据库 MySQL
mysql数据库如何做到定期备份
mysql数据库如何做到定期备份
1263 2
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
1530 0
|
6月前
|
人工智能 监控 前端开发
Harness Agent:2026 年 Java AI Agent 开发的终极框架
Harness Agent是2026年专为Java生态打造的AI Agent终极框架,原生Java、深度集成Spring Boot,轻量(仅1MB)、企业级(监控/限流/安全),支持工具调用、记忆管理、多Agent协作等完整能力,学习成本低,开箱即用。
5574 2
Harness Agent:2026 年 Java AI Agent 开发的终极框架
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
AI大模型Transformer基础结构
Transformer是2017年提出的基于注意力机制的神经网络,摒弃了传统RNN结构,采用自注意力与多头注意力机制,实现并行化处理和长距离依赖建模。其核心由编码器-解码器架构、位置编码、残差连接和层归一化组成,广泛应用于NLP任务,成为BERT、GPT等模型的基础。
976 0
|
10月前
|
安全 固态存储 Java
通用权限管理模型详解:从 ACL 到 RBAC0/1/2/3
本文深入解析ACL与RBAC两种主流权限模型,重点剖析RBAC的四个层级(RBAC0-RBAC3),涵盖角色继承、职责分离等核心机制,并结合实际场景给出选型建议,助你构建安全、可维护的权限体系。
|
11月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
61222 11
|
9月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
10月前
|
存储 Linux 编译器
C 语言学习资源精选:从入门到精通的高效资源清单
本文为C语言学习者提供从入门到精通的完整资源指南,涵盖各阶段的优质视频、书籍、博客、项目及工具,助你高效掌握C语言核心技能,轻松进阶嵌入式与底层开发。
703 0