windwos bat命令 备份mysql数据库
昨天写了一个linux 备份mysql 的sh脚本
想了一下,如果在window 环境下面如何定时备份 mysql 数据库
单机运行mysql 总觉得不靠谱,担心出问题,
数据库可能因为硬件故障、软件故障、恶意攻击、人为错误等导致数据丢失。备份可以帮助恢复数据,减少数据丢失的风险。
1、程序错误 数据库中的数据可能因为病毒感染,磁盘错误等原因而损坏,导致无法正常使用。
2、人为错误
3、运算失败
4、磁盘故障
5、灾难(盗窃自然灾害、火灾、洪水)等不可预测事件可能导致数据库的物理损坏或无法访问。
为了保险起见,所以在另外一台机器上备份 mysql 服务器数据 思路如下
1、每天业务低峰期定时备份
2、备份整个mysql实例下多个数据库
3、能讲备份后的sql 文件压缩 减少磁盘占用
4、将备份文件删除
5、保留15天的备份压缩文件。
@echo off & setlocal ENABLEEXTENSIONS
REM 使用mysqldump逐个备份所有数据库到指定目录
REM 备份文件存放的路径
set BACKUP_PATH=E:\MySqlBackUp\SqlBack\Dw
REM 设置数据库参数
set MYSQL_PATH=D:\mysql-5.7.25-winx64\bin\
set HOST=192.168.2.xxx
set PORT=3306
REM 同一个实例下面 多个数据库 用空格 隔开test1 test2 test3
set DATABASES=test1 test2 test3
set USERNAME=root
set PASSWORD=123456
REM 获取时间参数
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set HOUR=%time:~0,2%
if %HOUR% LSS 10 (
set HOUR=0%time:~1,1%
)
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
set ADDON=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%
REM 创建备份文件夹
if not exist %BACKUP_PATH% (
echo %BACKUP_PATH%
mkdir %BACKUP_PATH% > nul
)
REM 判断 文件夹是否创建成功,没有的话则退出
if not exist %BACKUP_PATH% (
echo Backup path: %BACKUP_PATH% not exists, createdir failed.
goto exit
)
REM cd /d %BACKUP_PATH%
cd /d %BACKUP_PATH%
echo Start dump databases...
REM 循环遍历备份数据库
for %%D in (%DATABASES%) do (
echo Dumping database %%D ...
REM 备份数据库文件
%MYSQL_PATH%\mysqldump.exe -h%HOST% -u%USERNAME% -p%PASSWORD% -P%PORT% --default-character-set=utf8 --single-transaction --quick %%D > %%D_%ADDON%.sql
REM 压缩备份的.sql文件 (想要压缩sql文件,备份的机器上必须安装WinRAR软件) WinRAR软件路径换成备份服务器上的地址 C:\Program Files\WinRAR\WinRAR.exe
"C:\Program Files\WinRAR\WinRAR.exe" a -ibck -m5 %%D_%ADDON%.rar %%D_%ADDON%.sql
REM 压缩完成后 删除.sql 文件
del %%D_%ADDON%.sql
echo Backup database %%D Sucess...
)
REM 删除历史备份.rar文件 释放存储空间 -15 代表14天前的文件
REM 第一次备份出现 错误: 用指定的搜索标准没有找到文件。 是正常现象因为不存在14天前的文件,如果想要测试,可以将 -15 改成0
Forfiles /p %BACKUP_PATH% /s /d -15 /m *.rar /c "cmd /c del /q /f @path"
echo Done
:exit
脚本放到 txt 文件下 ,对应修改路径地址 用户名密码
然后设置windows 定时调度任务 定时 执行bat 文件即可。
定时任务 参考
Windows通过计划任务定时执行bat文件