码字,杂谈

windows下mysql自动备份

在windows下,mysql的备份其实也很简单。

写bat文件

首先,需要知道mysql备份的关键语句:
mysqldump.exe --opt --single-transaction=TRUE --user=xxx(自己的用户名) --password=xxx(自己的密码) --default-character-set=utf8 database(需要备份的数据库名称) >X:\BACKUP\mysql_backup\backup.sql(自己的备份路径)

注意括号的内容,替换成自己的内容即可完成备份。

然后,我们就可以基于这个写一个bat文件:
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
::进入mysql安装目录的bin
cd C:\Program Files\MySQL\MySQL Server 8.0\bin\
::执行备份操作
mysqldump.exe --opt --single-transaction=TRUE --user=xxx(自己的用户名) --password=xxx(自己的密码) --default-character-set=utf8 database(需要备份的数据库名称) >X:\BACKUP\mysql_backup\backup_%Ymd%.sql

理解一下内容,set一个变量Ymd,将其放到文件路径后面拼成一个新的备份文件名。因为我们平时很可能一天备份多次,或者一天一次,所以时间名称就很重要了。

删除之前多天的备份文件

备份多了之后,所以之前的文件就没什么用了,可以通过bat将其删除。

forfiles /p "X:\BACKUP\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"

这段循环查找指定文件夹下的所有符合查找文件名规则的文件,并指定日期。最后将其删除。

所以完整的bat文件内容如下:
rem ***** MySQL backup start *****
@echo off
::删除一周之前的备份文件
forfiles /p "X:\BACKUP\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
::设置时间变量
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
::进入mysql安装目录的bin
cd C:\Program Files\MySQL\MySQL Server 8.0\bin\
::执行备份操作
mysqldump.exe --opt --single-transaction=TRUE --user=xxx(自己的用户名) --password=xxx(自己的密码) --default-character-set=utf8 database(需要备份的数据库名称) >X:\BACKUP\mysql_backup\backup_%Ymd%.sql

@echo on
rem ***** MySQL backup end *****

文件中需要注意你的文件路径,同时,需要注意中间进入mysql的bin文件夹,因为mysqldump.exe是bin文件中的文件,如果没有配置全局环境的话,需要先进入到bin文件夹才能继续操作。

写完之后,将bat文件放到我们需要的一个地方。

多说一个小坑

我上面的代码适合一天一次备份。有时候我们需要一天多次备份,这时候Ymd就需要补充时间内容了。

set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"

这个就是完整的时间格式。

但是我们经常都在凌晨备份,这时time函数有一个坑,在cmd中打印完整的time就可以发现:

《windows下mysql自动备份》

这个问题就会导致在备份的时候出现文件名中间有一个空格,无法备份。所以需要解决一下。

最简单的解决方案,使用0替换所有空格:
%Ymd: =0%

将它放到文件名的位置,也就是:

mysqldump.exe --opt --single-transaction=TRUE --user=xxx(自己的用户名) --password=xxx(自己的密码) --default-character-set=utf8 database(需要备份的数据库名称) >X:\BACKUP\mysql_backup\backup_%Ymd: =0%.sql
另外还可以跳过time的第一位,这里就不多说了。

windows下自动化

windows有一个很方便的工具:任务计划。

《windows下mysql自动备份》

右键 我的电脑/此电脑,点击管理:

《windows下mysql自动备份》

打开后找到 计算机管理 > 系统工具 > 任务计划程序,然后点击右侧的创建基本任务:

《windows下mysql自动备份》

打开对话框,首先输入名称:

《windows下mysql自动备份》

然后根据需要选择触发器,我这里只需要每天执行一次就可以:

《windows下mysql自动备份》

选择具体的时间:

《windows下mysql自动备份》

选择具体的操作,这里我们是要运行我们自己的bat文件,所以选择运行程序即可:

《windows下mysql自动备份》

选择启动文件路径,这里我们选择我们的bat文件,并不需要参数:

《windows下mysql自动备份》

然后会显示概览,最后点击完成,就可以在计划任务中看到我们的添加项:

《windows下mysql自动备份》

然后,我们就可以让它自动的运行了~

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注