如何使用python脚本实现MySQL备份?

91 阅读2分钟

背景

在数据库管理实践中,定期备份是确保数据安全的关键步骤。MySQL数据库的备份可以通过官方的 mysqldump 工具来实现,它能将数据库导出为SQL文件。为了简化和自动化备份过程,本文将介绍如何使用Python脚本来执行MySQL数据库的备份任务。通过本文中的示例脚本,您可以轻松地实现数据库的定期备份,并确保备份过程的高效与稳定。

环境准备

  • Python 3.x:确保您已经安装了最新版本的Python;

  • MySQL:需要安装MySQL服务器,并且确保能够通过命令行访问数据库;

  • mysqldump工具mysqldump 是MySQL提供的官方备份工具,它通常会随MySQL安装包一起提供;

备份脚本概述

下面是一个使用Python脚本结合 mysqldump 工具进行MySQL备份的完整示例。该脚本会自动化执行备份操作,并且根据当前时间生成带有时间戳的备份文件名。

import subprocess
import datetime
import os
def backup_mysql(host, port, user, password, database, output_dir):
    # 获取当前时间,用于生成备份文件名
    now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
    backup_file = f"{output_dir}/{database}_backup_{now}.sql"
    mysqldump_path = r'{mysqldump_path}'
    # mysqldump 命令,包含端口号和其他参数
    command = [
        mysqldump_path,
        '-h', host,
        '-P', str(port),  # 将端口号转换为字符串
        '-u', user,
        f'-p{password}',  # 密码要直接跟在 -p 后面
        '--set-gtid-purged=OFF',  # 关闭 GTID purged 设置
        '--single-transaction',  # 启用单次事务模式,避免锁表
        '--default-character-set=utf8mb4',  # 设置默认字符集为 utf8mb4
        '-q',  # 使用快速模式
        database
    ]

    # 打开备份文件,进行备份
    with open(backup_file, 'w') as f:
        result = subprocess.run(command, stdout=f, stderr=subprocess.PIPE)

    # 检查命令是否成功执行
    if result.returncode == 0:
        print(f"备份成功!文件保存为:{backup_file}")
    else:
        print(f"备份失败,错误信息:{result.stderr.decode()}")


# 调用
output_dir = '{BACKUP_PATH}'
backup_mysql('{MYSQL_HOST_IP}', {MYSQL_PORT}, '{DB_USER}', '{DB_PASSWORD}', 'DB_NAME', output_dir)

如何使用

参数解释:

  • mysqldump_path:mysqldump路径替换成本地的
  • BACKUP_PATH:备份路径,替换成绝对路径或者相对路径
  • MYSQL_HOST_IP:数据库主机IP
  • MYSQL_PORT:数据库端口
  • DB_USER:数据库用户名
  • DB_PASSWORD:数据库用户名密码
  • DB_NAME:数据库名字

修改配置:根据实际情况修改脚本中的数据库连接信息(如数据库主机host、端口port、用户名user、密码password和数据库名database),以及备份文件的保存路径output_dir

运行脚本:在Python环境中执行该脚本,脚本将自动执行mysqldump命令,备份指定的MySQL数据库,并将备份文件保存在指定路径。