MySQL之windows下使⽤批处理定时备份数据库并删除过期数
据备份mysql下载下来是一个文件夹
1.创建批处理⽂件mysql_backup.bat
rem ******MySQL backup start********
@echo off
::删除超过30天的备份数据
forfiles /p "D:\db_backup" /m *_backup_*.sql -d -30 /c "cmd /c del /f @path"
::定义时间
set "data_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%"
::备份数据库命令
F:\DevelopTools\mysql-5.6.36-winx64\bin\mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=330 F:\DevelopTools\mysql-5.6.36-winx64\bin\mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=330
@echo on
rem ******MySQL backup end********
注:有时直接运⾏bat⽂件会出现乱码现象
解决⽅案:在⽂件开头加上  hcp 936
命令介绍:  chcp 65001  #换成utf-8代码页
chcp 936      #换成默认的gbk
chcp 437      #美国英语
2.创建定时计划运⾏mysql备份批处理
打开:计算机管理--系统⼯具--任务计划程序    到创建任务
设置常规属性
设置触发器
设置操作,即需要执⾏的程序
在任务计划程序库中便可以查看到
3.部分命令介绍
@echo  off      表⽰在批处理⽂件执⾏过程中,只显⽰结果,⽽不显⽰执⾏的命令    @echo on      表⽰批处理⽂件执⾏过程中,先显⽰执⾏命令,在显⽰执⾏结果
注释命令:
注释内容(第⼀个冒号后也可以跟任何⼀个⾮字母数字的字符)
:: 注释内容
注释内容(不能出现重定向符号和管道符号)
rem 注释内容
echo 注释内容(不能出现重定向符号和管道符号)〉nul
if not exist nul 注释内容(不能出现重定向符号和管道符号)
:注释内容(注释⽂本不能与已有标签重名)
%注释内容%(可以⽤作⾏间注释,不能出现重定向符号和管道符号)
goto 标签 注释内容(可以⽤作说明goto的条件和执⾏内容)
:标签 注释内容(可以⽤作标签下⽅段的执⾏内容)
通过forfiles命令到⼏天前的数据。
forfiles的⼏个参数:
/P 可是搜索的路径。在我们这⾥就是要在哪个⽬录寻要删除的⽂件
/
M 根据搜索掩码搜索⽂件。默认为*,我们要删除某时间以前的⽂件。我们只关⼼时间
/D ⽂件修改时间在某个时间之前或者之后。-200 表⽰200天之前的⽂件
/C 表⽰为每个⽂件执⾏的命令,这⾥是要删除该⽂件所以为"cmd /c del /f @path"
command string:
@file - returns the name of the file.
@fname - returns the file name without extension.
@ext - returns only the extension of the file.
@path - returns the full path of the file.
@relpath - returns the relative path of the file.
@isdir - returns "TRUE" if a file type is a directory, and "FALSE" for files.
@fsize - returns the size of the file in bytes.
@fdate - returns the last modified date of the file.
@ftime - returns the last modified time of the file.
F:\DevelopTools\mysql-5.6.36-winx64\bin\mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --p
F:\DevelopTools\mysql-5.6.36-winx64\bin\mysqldump为 MySQL 安装时,   ⽂件所在路径, --user=root  指 MySQL ⽤户名为  root--password=123456  指 MySQL 密码为 123456 , "saiku"  为要备份的数据库的名称,saiku_backup_%data_time%.sql  为备份⽂件的名称,这个名称是根据当前的时间规则⽣成的。
⽐如在windowscmd命令⾏窗⼝执⾏date命令后这个环境变量的值为
当前⽇期:2014-09-01 星期六 或2014/09/01 周六
那么如下的各个操作的意义如下:
%date:~0,4% 表⽰从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符,结果是2014(年的值)
%date:~5,2%  表⽰指针从左向右偏移5位,然后从偏移处开始提取2位字符,结果是03(⽉的值)
%date:~8,2%  表⽰指针从左向右偏移8位,然后从偏移处开始提取2位字符,结果是01(⽇的值)
%date:~5%    表⽰指针从左向右偏移5位,然后提取所有的值
%date:~-5%  表⽰指针反⽅向偏移,从最右端开始,偏移5位,然后从指针处提取左边的所有数值。
注意:“2014-09-01星期六”是个字符串,在计算机⾥指针是从0开始计数的,所以这串字符的指针意义上的第5位是0,⽉份的0,取两位刚好是03.
同理,⽐如当前系统的time变量的值如下:
当前时间: 11:36:56.63
那么如下的各个操作的意义如下:
%time:~0,2%  表⽰从左向右指针向右偏0位,然后从指针偏移到的位置开始提取2位字符,结果是⼩时字段数值
%time:~3,2%  表⽰指针从左向右偏移3位,然后从偏移处开始提取2位字符,结果是分钟字段数值
%time:~6,2%  表⽰指针从左向右偏移6位,然后从偏移处开始提取2位字符,结果是秒字段数值
//创建时间命名的⽂件夹
md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。