windows下实现mysql备份至异地,并结合计划任务实现自动管理,删除之前的备份。
这是一个配合计划任务实现简单备份的批量处理,部分内容需根据实际环境自行修改。
实验环境:
A机器:mysql
ip:192.168.1.10
B机器:备份
ip:192.168.1.11
一、
在B机器上,首先创建一个共享文件夹share,注意权限的控制,我们将A机器的备份放在这里。
设定test用户对share文件夹有写入权限,test用户的密码为123456.
二、
在A机器上,新建一个文本文件,输入一下内容:
@echo off
::关闭显示命令,使得所有命令执行前不显示
set shareip=192.168.1.10
set sharefile=share
set shareuser=test
set sharepassword=123456
set databasename=data
set datauser=root
set datapassword=456789
::设置所需变量
C:\WINDOWS\system32\net use z: \\%shareip%\%sharefile% %sharepassword% /user:%shareuser%
::挂载网络驱动器,将B机器上的share文件夹挂载到A机器上,并命名为Z:/
::“C:\WINDOWS\system32\net”为net命令的绝对路径
::“z:”为指定将share文件夹挂载到本地启动器的名称
::“/user:”前为密码,后为户名。注意这里的空格和“\”与“/”
ping -n 4 127.0.0.1>nul
::“-n”后的参数决定ping多少个包,主要想延迟4秒后执行下面的操作,可以不写
%mysqlpath%\bin\mysqldump -u%datauser% -p%datapassword% --database %databasename% >z:\%databasename%%date:~0,10%.sql
::利用mysqldump命令备份数据库,并指定存储路径为Z:/
::“%mysqlpath%”为mysql的安装路径
::“%date:~0,10%”为当前日期,格式为“yyyy-mm-dd”
::“databasename%date:~0,10%.sql”备份文件的名称,以这种方式命令方便以后管理
exit
输入完成后保存退出,并修改后缀名为.bat
三、
在B机器上,新建文本文件,并输以一下内容:
@echo off
set databasename=data
::这里的数据库的名称,要和A机器上面的一致
echo wscript.echo dateadd("d",-3,date) >%tmp%\tmp.vbs
for /f "tokens=1,2,3 delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do (
set "y=%%i"
set "m=%%j"
set "d=%%k"
)
if /i %m% leq 9 set m=0%m% ::变量“%m%”小于9时在前面加一个0补位
if /i %d% leq 9 set d=0%d%
set tt=%y%-%m%-%d%
::将三天前的日期设置为变量tt,并且为“yyyy-mm-dd”格式
::如果想保留10天的备份,将上面的("d",-3,date)中的“-3”改为“-10”
del D:\share\%databasename%%tt%.sql
::删除三天前的备份文件
exit
输入完成后保存退出,并修改后缀名为.bat
四、
A、B机器上分别创建计划任务,分配执行时间,即可完成自动管理。
计划任务不再讲述,这里备份文件没有压缩,可自行添加。
五、
大功告成