bat脚本
@echo off
::设置编码格式utf-8否则有中文乱码
chcp 65001
echo.
echo MySQL数据库开始备份
echo *****************************
echo.
echo 备份时间:%date% %time%
echo.
echo *****************************
set "back_path=D:\mysql_backup\genius_children"
:: 周五 2024/05/17
set "Ymd=%date:~3,4%%date:~8,2%%date:~11,2%"
:: 2024/05/17 周五
:: set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
:: 文件计数器
set FILE_COUNT=0
set FILE_COUNT_ALL=0
IF NOT EXIST %back_path% (
md "%back_path%"
)
mysqldump --defaults-extra-file=D:\mysql_backup\genius_children.password genius_children --skip-lock-tables > "%back_path%\%Ymd%_back.sql"
echo 删除超过5天的备份数据
:: 遍历文件夹,统计大于5120的数据
for /R "%back_path%" %%f in (*) do (
set /a "FILE_COUNT_ALL+=1"
:: 大于5120
If %%~zf gtr 5120 (
set /a "FILE_COUNT+=1"
) else (
echo 文件大小: %%~zf %%f"
)
)
echo 当前文件数量:%FILE_COUNT_ALL% , 大于5120文件数量:%FILE_COUNT%
:: 备份失败会生成0KB的文件,数量统计忽略小于5120的文件,if判断防止备份数量过少却被删除的情况
if %FILE_COUNT% gtr 7 (
echo 当前文件数量大于7,执行删除程序
:: 删除7天之前的数据
forfiles /p "%back_path%" /m *back.sql -d -7 /c "cmd /c del /f @path"
) else (
echo 当前文件数量小于7,不执行删除程序
)
echo MySQL数据库备份完成
:: 关闭窗口
@echo 数据库备份操作完成,30秒后关闭程序...
ping /n 30 127.1 >nul
exit
genius_children.password
[mysqldump]
user=root
password=123456
Windows 任务计划程序
1. 点击右侧创建任务
2. 创建触发器
3. 创建操作
选择要执行的脚本
4. 运行
点击保存,输入密码后在列表中找到该任务右键执行运行。