Windows系统使用MySQL多个数据库定时本地备份
背景:因升级项目版本,不小心将新的数据库数据覆盖了原本的数据,幸好本地MySQL有备份数据。因为部署项目设置备份不常用,怕操作忘,特写此文章记录,以防下次忘记如何使用。服务器系统为Windows11,MySQL为8.0版本。如需验证脚本是否生效的话,在编写好bat脚本后,双击看导出文件夹内是否有sql文件生成即可。如果只备份单个数据库的话,用以下脚本即可。如果需要备份多个数据库的话,用以下脚本。然
·
前言
背景:因升级项目版本,不小心将新的数据库数据覆盖了原本的数据,幸好本地MySQL有备份数据。因为部署项目设置备份不常用,怕操作忘,特写此文章记录,以防下次忘记如何使用。服务器系统为Windows11,MySQL为8.0版本。
操作实战:
1、首先我们选定一个盘符建个文件夹,比如D盘下script文件夹,创建个.bat后缀的脚步文件,内容如下:
如果只备份单个数据库的话,用以下脚本即可。
@echo off
echo 设置MySql数据库的连接信息
set host=localhost
set port=3306
set user=root
set pass=123456
echo 设置要备份MySql数据库名称
set dbname=dongying
echo 获取当天的日期格式,例如:2022-12-13-14-30-40 这个不需要动
set backup_date=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
echo 设置备份文件的生成路径
set backupfile=D:\mysqlDataSQL\%dbname%-%backup_date%.sql
echo 使用mysqldump对指定的MySql进行备份 注意路径中有空格的要加上双引号
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
echo 删除过期文件,这里是超过30天就删除
forfiles /p D:\mysqlDataSQL\ /s /m *.sql /d -30 /c "cmd /c del @file /f"
exist
如果需要备份多个数据库的话,用以下脚本
@echo off
echo 设置MySql数据库的连接信息
set host=192.168.6.222
set port=3306
set user=root
set pass=123456
echo 设置要备份MySql数据库名称 多个的话 需要定义多个数据库名称
set dbname=bank_video
set dbname1=sansint_oa
echo 获取当天的日期格式,例如:2022-12-13-14-30-40
set backup_date=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
echo 设置备份文件的路径
set backupfile=D:\mysqlDataSQL\%dbname%-%backup_date%.sql
set backupfile1=D:\mysqlDataSQL\%dbname1%-%backup_date%.sql
echo 使用mysqldump对指定的MySql进行备份,注意路径中有空格的要加上双引号 多个数据库需要写多个 因为这样可以导出每个数据库对应的sql 方便查看
"E:\develop\mysql-8.0.32-winx64\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
"E:\develop\mysql-8.0.32-winx64\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname1% > %backupfile1%
echo 删除过期文件,这里是超过30天就删除
forfiles /p D:\mysqlDataSQL\ /s /m *.sql /d -30 /c "cmd /c del @file /f"
exist
如需验证脚本是否生效的话,在编写好bat脚本后,双击看导出文件夹内是否有sql文件生成即可
2、配置定时任务
在这里插入图片描述
3、 创建基本任务
4、 输入任务名称,点击下一步
5、 设置触发器
6、 设置执行时间,点击下一步
7、 选择脚本所在位置,点击下一步
8、 任务设置成功
9、查看定时任务
然后根据设置的时间去测试是否成功即可!
问题1:运行bat脚本,中文乱码
解决:打开文件,另存为编码ANSI
问题2:导入报错
Got packet bigger than ‘max_allowed_packet‘ bytes when dumping table
解释:
这个错误表明在尝试导出数据库表时,MySQL服务器接收到的数据包超过了max_allowed_packet系统变量设置的最大允许值。max_allowed_packet是MySQL的一个系统变量,用于定义MySQL服务器/客户端在单个网络传输中可以接收的最大数据包的大小。
解决方法:
1、临时方法:在当前会话中,可以通过执行以下命令来增加max_allowed_packet的值:
SET GLOBAL max_allowed_packet=VALUE;
其中VALUE是新的大小限制,单位是字节。例如,要设置为16MB,可以使用:
SET GLOBAL max_allowed_packet=16777216;
2、永久方法:要永久更改这个值,需要在MySQL配置文件(通常是my.cnf或my.ini)中设置它。打开配置文件,在[mysqld]部分添加或修改行:
max_allowed_packet=VALUE
然后重启MySQL服务。
如果是使用MySQL的命令行工具导出数据,可以通过--max_allowed_packet选项来指定:mysqldump --max_allowed_packet=VALUE
更多推荐




所有评论(0)