经常手动获取服务器数据库太麻烦,而且容易影响到服务器配置,要是让数据库自动备份并定时下载到客户端指定位置就好了!
一、环境:
win sever2012+mysql 8
二、自动备份
命令行.bat脚本
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" //可选,指定日期格式
//需要调用MySQL自带的MySQLdump程序
"D:/mysql5.7.23/bin/mysqldump" --opt -u 用户名--password=密码 数据库名 > "D:/指定位置/db_%Ymd%.sql" 2>> "D: estlog.txt"
//%Ymd%:上面定义的日期,用于文件名
//指定一个备份的目录并设定备份文件名,并打印错误日志到指定文件:2>>file
//调用7z压缩程序将备份文件压缩到一个指定目录
"7z.exe" a "D: estdb_%Ymd%.zip" "D:/db_backup/db_%Ymd%.sql"
//forfiles命令:删除文件,这里只保留一份.sql文件
forfiles /p " D:备份位置" /s /m *.sql /d -1 /c "cmd /c del @path"
在wiodows计划程序创建计划任务:
需要注意的是,创建计划任务时,配置要选择当前平台,否则任务无法运行:
三、自动下载
自动下载的脚本需要配置在客户端,用ftp实现(服务端发布ftp网站同理):
这是ftp.txt文本:
open 服务器地址
用户名
密码
prompt off
lcd D:DBBackups本地备份目录
mget *.zip //要下载的文件
yes //可选,部分环境需要yes确认一次下载命令
close
bye
然后配置一个.bat脚本,创建计划任务定时执行:
ftp -s:D:ftp.txt 2>> D:DBBackupsResearchHomeFtpLog.txt
//ftp执行ftp.txt里的命令并将错误重定向输出
每天会定时备份数据库下来,效果: