修身养性,知行合一

  • 首页
  • 爱码
    • 系统
    • 数据库
    • JavaScript
    • CSharp
    • Python
  • 生活
    • 文化
    • 美食
  • 杂谈
  • 关于
修身养性,知行合一
码字,杂谈
  1. 首页
  2. 爱码
  3. 数据库
  4. 正文

windows下mysql自动备份

2020年2月19日 2417点热度 0人点赞 0条评论

在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就可以发现:

file

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

最简单的解决方案,使用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有一个很方便的工具:任务计划。

file

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

file

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

file

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

file

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

file

选择具体的时间:

file

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

file

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

file

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

file

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

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: mysql
最后更新:2020年2月19日

jeremyjone

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

文章目录
  • 写bat文件
  • 多说一个小坑
  • windows下自动化
最新 热点 随机
最新 热点 随机
我的开源组件 @xpyjs/gantt 100颗星星啦 volar 检查 element 表格的 slot-scope 错误 关于 *.vue 文件中使用 TypeScript 声明类型报错的解决方案 element table 加载时宽度闪烁问题 windows 无法登录便签、OneNote等应用 vue2 中 vuex 对 ts 的支持
volar 检查 element 表格的 slot-scope 错误我的开源组件 @xpyjs/gantt 100颗星星啦
真丶深入理解JavaScript异步编程(三):async / await CSS多元素不换行 js 中优雅的捕获 await 的异常 Windows下管理Linux格式硬盘 解决mount cifs时出现"is not a valid block device"的问题 JavaScript异步加载图片

(っ•̀ω•́)っ✎⁾⁾ 开心每一天

COPYRIGHT © 2021 jeremyjone.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

京ICP备19012859号-1

京公网安备 11010802028585号