python备份和还原MySQL数据库

该博客介绍了如何使用Python脚本进行MySQL数据库的备份和还原操作。通过定义数据库名、主机、用户和密码等参数,利用`mysqldump`命令进行备份,将备份文件保存在指定目录,并在需要时执行`mysql`命令或使用`pymysql`库来还原数据库。文章还提醒在执行前需确保MySQL bin目录在环境变量中,并针对MySQL8.0之前的版本可能需要额外参数。
摘要由CSDN通过智能技术生成

其实你数据库的表和字段都存放在了一个系统表中emmm

备份数据库

#!/usr/bin/env python
# coding: utf-8

import os
import pymysql
import time

''' 定义变量 '''
databases = ['pet']  # 定义要备份的数据库名
sql_host = 'localhost'
sql_user = 'root'  # 数据库登陆用户
sql_pwd = '422518'  # 数据库登陆密码
root_path = './'  # 存放sql文件的地址


''' 创建存放备份文件的文件夹 '''
mkdir_dir = root_path+time.strftime('%Y%m%d')+"/"  # 在/home/work/目录下用当天时间的格式创建目录
if not os.path.exists(mkdir_dir):  # 判断如果没有当天时间目录
    os.mkdir(mkdir_dir)  # 创建
print('创建文件夹成功:', os.path.abspath(mkdir_dir))  # 打印创建成功


''' 开始备份到指定文件夹 '''
os.chdir(mkdir_dir)  # 改变当前工作目录到指定的路径
for database_name in databases:  # 循环zabbix数据库
    today_sql = database_name+'_'+time.strftime('%Y%m%d')+'.sql'  # 定义数据库文件名变量
    # 编写cmd语句
    sql_comm="mysqldump -u%s -p%s %s > %s --default_character-set=utf8"%(sql_user,sql_pwd,database_name,today_sql)  # 定义备份数据库变量
    if os.system(sql_comm) == 0:  # 如果上一条执行结果等于0,表示成功
        print(database_name, 'is backup successfully!')  # 打印成功信息
        print('备份文件地址:',os.path.abspath('./')+today_sql)
    else:  # 备份失败
        print(database_name, 'is backup fai!')  # 打印成功信息

命令行还原数据库(执行sql文件)

#!/usr/bin/env python
# coding: utf-8

import os
import pymysql
import time

''' 定义变量 '''
databases = ['pet']  # 定义要备份的数据库名
sql_host = 'localhost'
sql_user = 'root'  # 数据库登陆用户
sql_pwd = '422518'  # 数据库登陆密码
database_name = 'pet'  # 数据库名字
sql_path = './20210415/pet_20210415.sql'  # 存放sql文件的地址

''' 开始还原数据到指定文件夹 '''
if not os.path.exists(sql_path):
    print('文件不存在')
else:
    sql_comm="mysql –u%s –p%s -D%s < %s"%(sql_user,sql_pwd,database_name,os.path.abspath(sql_path))  # 定义备份数据库变量
    print(sql_comm)
    if os.system(sql_comm) == 0:  # 如果上一条执行结果等于0,表示成功
        print(database_name, '还原成功')  # 打印成功信息
    else:  # 备份失败
        print(database_name, '还原失败')  # 打印成功信息

使用pymysql还原数据库(执行sql文件)

#!/usr/bin/env python3
# coding: utf-8
import pymysql

sql_host = 'localhost'
sql_user = 'root'  # 数据库登陆用户
sql_pwd = '422518'  # 数据库登陆密码
database_name = 'pet'  # 数据库名字
sql_path = './20210415/pet_20210415.sql'  # 存放sql文件的地址

connect = pymysql.connect(host=sql_host, user=sql_user, password=sql_pwd, database=database_name)
cursor = connect.cursor()
try:
    with open(sql_path,encoding='utf-8',mode='r') as f:
        # 读取整个sql文件,以分号切割。[:-1]删除最后一个元素,也就是空字符串
        sql_list = f.read().split(';')
        for x in sql_list:
            # sql语句添加分号结尾
            sql_item = x.strip() + ';'
            cursor.execute(sql_item)
            print("执行成功sql: %s"%sql_item)
except Exception as e:
    print(e)
    print('执行失败sql: %s'%sql_item)
finally:
    # 关闭mysql连接
    cursor.close()
    connect.commit()
    connect.close()

问题补充

需要将MySQL的bin文件夹配置到环境变量中,除此之外MySQL8.0之前的数据库需要加一个参数,记不太清了,可以把sql_comm打印出来,在cmd执行一下,等报错了再百度嘿嘿

### 回答1: 在 MySQL 中,可以使用以下几种方法来自动备份数据库: 1. 使用 mysqldump 命令:通过定时任务(如 cron)来执行 mysqldump 命令,将数据库的数据转存到备份文件中。 2. 使用脚本:编写 shell 脚本或 Python 脚本等,定时执行该脚本,自动导出数据库数据。 3. 使用 MySQL 管理工具:比如 MySQL Workbench,提供了图形界面,可以方便地管理数据库备份。 根据个人需求和环境不同,可以选择合适的方法来自动备份 MySQL 数据库。 ### 回答2: 在MySQL中,可以使用多种方式来自动备份数据库。 其中一种常用的方式是使用定时任务工具,如cron(Linux系统)或Task Scheduler(Windows系统)。通过创建一个定时任务,我们可以编写一个脚本或命令来执行数据库备份的操作。 以下是一个使用cron来实现自动备份数据库的示例: 1. 打开终端并输入`crontab -e`来编辑cron任务。 2. 在打开的文件中添加一行类似于以下的命令: ``` 0 3 * * * mysqldump -u <用户名> -p<密码> <数据库名> > /路径/到/备份目录/备份文件名.sql ``` 这个命令会在每天凌晨3点执行数据库备份,并将备份文件保存在指定目录下。 另一种方式是使用MySQL提供的工具,如mysqldump和mysqlpump。这些工具可以通过命令行执行数据库备份操作,并提供了各种选项来控制备份的方式和内容。 以下是一个使用mysqldump来自动备份数据库的示例: 1. 创建一个名为`backup.sh`的Shell脚本文件,并在其中编写以下内容: ```bash #!/bin/bash mysqldump -u <用户名> -p<密码> <数据库名> > /路径/到/备份目录/备份文件名.sql ``` 2. 保存并退出编辑器后,使用`chmod +x backup.sh`命令将脚本文件修改为可执行文件。 3. 使用cron或其他定时任务工具,设置定时执行此脚本文件。 无论是使用定时任务还是命令行工具,自动备份数据库都需要提供正确的用户名、密码和数据库名,以及指定备份文件的路径和名称。同时,还应该确保备份文件的存储位置具有足够的磁盘空间来存储备份文件。 ### 回答3: 在MySQL中,可以使用多种方式来自动备份数据库。 1. 使用MySQL提供的内置工具:MySQL提供了多个内置工具来备份数据库,其中最常用的是mysqldump命令。可以通过编写一个shell脚本,使用该命令来备份数据库并定期执行该脚本来实现自动备份。 2. 使用第三方备份工具:有许多第三方备份工具可以帮助自动备份MySQL数据库,如Percona XtraBackup、MyDumper等。这些工具提供了更高效和灵活的备份还原功能,并且支持增量备份和并行备份。 3. 使用计划任务:在Linux系统中,可以使用cron来设置定时任务执行备份脚本。通过设置适当的定时规则,可以实现每天、每周或每月自动备份数据库。 4. 使用存储过程:MySQL支持使用存储过程来备份数据库。可以编写一个存储过程,在其中执行备份命令,并将该存储过程与定时任务结合起来实现自动备份。 5. 使用复制功能:MySQL的复制功能可以将主数据库上的数据复制到备份数据库上。可以设置一个备份服务器,将其配置为主数据库的从服务器,并定期对从服务器进行备份。这样可以实现实时备份和容灾。 需要注意的是,在备份过程中要确保备份的数据完整性和一致性。在进行生产环境的数据库备份前,应该先对备份过程进行测试,并考虑备份策略、备份存储和备份恢复等方面的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值