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机器上分别创建计划任务,分配执行时间,即可完成自动管理。

计划任务不再讲述,这里备份文件没有压缩,可自行添加。



五、

大功告成