前言
背景:因升级项目版本,不小心将新的数据库数据覆盖了原本的数据,幸好本地MySQL有备份数据。因为部署项目设置备份不常用,怕操作忘,特写此文章记录,以防下次忘记如何使用。服务器系统为Windows10,MySQL为8.0版本。
操作实战:
1、首先我们选定一个盘符建个文件夹,比如D盘下script文件夹,创建个.bat后缀的脚步文件,内容如下:
如果只备份单个数据库的话,用以下脚本即可。
@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
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进行备份 注意路径中有空格的要加上双引号
"E:\develop\mysql-8.0.32-winx64\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
chcp 65001
setlocal enabledelayedexpansion
echo 设置MySQL数据库的连接信息
set host=127.0.0.1
set port=3306
set user=root
set pass=gyqdz2021
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 "backup_dir=D:\server2\mysql\sql\"
echo 设置数据库名称列表,多个数据库用空格分隔
set "dbnames=hb_industry_api industry_citycenter industry_upload sansint_industry mysql"
set "mysql=C:\Program Files\mysql-8.0.23-winx64\bin\mysqldump"
echo 开始备份数据库...
:: 循环备份每个数据库
for %%d in (%dbnames%) do (
set "dbname=%%d"
set "backupfile=%backup_dir%!dbname!-%backup_date%.sql"
echo 检查备份文件是否已存在,文件:!backupfile!
if exist "!backupfile!" (
echo !backupfile! 已存在,跳过备份
) else (
echo 正在备份数据库 !dbname!
"!mysql!" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table !dbname! > "!backupfile!"
)
)
:: 删除过期备份文件,超过5天的文件将被删除
echo 删除过期文件,超过2天的文件将被删除...
forfiles /p %backup_dir% /s /m *.sql /d -2 /c "cmd /c del @file /f"
echo 数据库备份任务完成!
如需验证脚本是否生效的话,在编写好bat脚本后,双击看导出文件夹内是否有sql文件生成即可
2、配置定时任务
3、 创建基本任务
4、 输入任务名称,点击下一步
5、 设置触发器
6、 设置执行时间,点击下一步
7、 选择脚本所在位置,点击下一步
8、 设置安全选项
9、 输入密码确定
10、 任务设置成功
然后根据设置的时间去测试是否成功即可!