Windows下的神器之一就是【任务计划程序】,可以定时执行一些任务,我们可以通过【任务计划程序】执行批处理文件实现每天定时备份MySQL数据库。
1.MySQL自带的mysqldump
最方便当属mysqldump了,比我们常用的Navicat备份更快、文件体积更小。该方法无需停止数据库,并可以加上执行日期作为sql文件名保存。
总体步骤:
写好批处理文件->创建基本任务->设置触发方式->选中写好的批处理文件(.bat)
具体操作步骤:
①打开记事本,复制以下代码,然后保存为.bat文件
rem *******************************ProcessStart*****************************
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" --opt -u root --password=your_password your_database > D:/sqlbackup/filename_%Ymd%.sql
@echo on
rem *******************************Process End*****************************
代码解释:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump"
为你的MySQL安装目录bin文件夹下的mysqldump.exe的路径
D:/sqlbackup/filename_%Ymd%.sql
是保存备份sql文件的路径以及保存的文件名
root为数据库你的用户名
your_password
是你的数据库密码
your_database
是你要备份的数据库名称
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
查询当前日期存为变量
@echo off/echo on
关闭代码回显,避免数据库密码信息直接暴露在命令行中
避坑环节:
-
执行那段
mysqldump
的命令,如果你的路径含有空格,需要加上双引号,否则CMD命令行判断空格是前后识别不同级别的文件夹,导致报错或运行无效。 -
可以在写好批处理文件后,双击bat文件试运行一下,如果没问题再创建任务计划。
②开始菜单搜索【任务计划程序】or Win+R(运行) 输入【taskschd.msc】
③正常填写和选择触发方式、我们的写好的批处理程序点击下一步即可
④大功告成~可以在这里查看我们设置的任务详情
如何本地备份远程数据库?
在现有bat命令行中的mysqldump行中加入--host=127.0.0.1 --protocol=tcp --port=3306
,远程数据库地址以及端口,可参考例子
mysqldump --opt --user=root --password=root --host=127.0.0.1 --protocol=tcp --port=3306