mysql server密码忘记(Window系统的mysql数据库定时备份)
原文:Window系统的mysql数据库定时备份 - Stars-One的杂货小窝
最近老大提到了数据库备份的功能 ,由于服务器是window系统的 ,所以研究了下备份的方案,特此记录
主要是实现每天定时备份功能 ,如果还要搞容灾的话 ,就得对mysql数据库进行主从配置了
cmd命令
核心的cmd命令如下所示
"D:\app\dev\MySQL Server 5.5\bin\mysqldump.exe" -uroot -proot --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x db_package >D:/temp/db_backup/db_package20220.sql命令的更多使用可以参考MySQL命令行导入导出工具--mysqldump命令详解
之后的bat命令也是在此基础上进行改造
实现
bat命令:
echo 取日期 、时间变量值 set yy=%date:~0,4% set mm=%date:~5,2% set dd=%date:~8,2% if /i %time:~0,2% lss 10 set hh=0%time:~1,1% if /i %time:~0,2% geq 10 set hh=%time:~0,2% set mn=%time:~3,2% set ss=%time:~6,2% set date=%yy%%mm%%dd% set time=%hh%%mn%%ss% %这里不要具体时分数据 ,要的话可以追加time% set filename=%date% %赋值等号两边不能有空格% set mysqldumpPath="D:\app\dev\MySQL Server 5.5\bin\mysqldump.exe" set dbName=db_package set dbUser=root set dbPwd=root set outpurDir=D:/temp/db_backup/ set outputFileName=%outpurDir%%dbName%_%filename%.sql echo %outputFileName% %mysqldumpPath% -u%dbUser% -p%dbPwd% --opt --default-character-set=utf8 -e --triggers -R --hex-blob --flush-logs -x %dbName% > %outputFileName%将上面的内容复制到bat文件里 ,然后将上面的5个变量进行修改:
mysqldumpPath 你本地mysql路径 dbName 需要备份的数据库 dbUser 数据库用户名 dbPwd 数据库密码 outpurDir 备份文件输出路径之后如果想要定时 ,有以下两种方法:
Spring Boot项目中加入定时任务去执行bat文件 使用window的任务计划功能Spring Boot的定时任务
目标:每天凌晨0:00备份一次数据库 ,最大保存30天数据 ,超过的自动删除最久的那一份数据
首先 ,我们要知道java应该如何执行bat文件 ,通过以下代码执行bat文件
Runtime.getRuntime().exec("cmd /c run.bat")主要区别:
#转至https://blog.csdn.net/liuyukuan/article/details/5974517 cmd /c command 执行完命令后关闭命令窗口 。 cmd /k command 执行完命令后不关闭命令窗口 。 cmd /c start command 会打开一个新窗口后执行命令,原窗口会关闭。 cmd /k start command 会打开一个新窗口后执行命令 ,原窗口不会关闭 。定时的话 ,使用Spring Boot里的定时任务即可
1.Application类中标明注解@EnableScheduling,可开启定时任务
@SpringBootApplication @EnableScheduling public class BusinessApplication { }2.创建你的定时任务类:
/** * @author starsone * @date 2022/12/09 11:52 */ @Component public class DbBackupService { /** * 每天凌晨0:00触发 */ @Scheduled(cron="0 0 0 * * ?") private void scheduled3(){ File file = new File(dbBkFile); if (file.exists()) { File[] files = file.getParentFile().listFiles(); if (files.length > 30) { //文件超过30个 ,删最旧的那个文件 File oldFile = Arrays.stream(files).sorted((o1, o2) -> { Long l = o1.lastModified(); Long l2 = o2.lastModified(); return l.compareTo(l2); }).findFirst().get(); oldFile.delete(); } System.out.println("-------------开始数据库备份------------"); try { Runtime.getRuntime().exec("cmd /c " + dbBkFile); } catch (IOException e) { System.out.println("------------备份失败 ,出现异常----------"); e.printStackTrace(); } } else { System.out.println("------------备份失败,bat文件未找到----------"); } } }cron表达式常用示例:
0 0 12 * * ? 每天中午12点触发 0 15 10 ? * * 每天上午10:15触发 0/2 * * * * ? 表示每2秒 执行任务 0 0/2 * * * ? 表示每2分钟 执行任务 0 0 12 ? * WED 表示每个星期三中午12点
- 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业 0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行window系统任务计划
具体看参考12 、windows定时备份数据库 - 云起时 。 - 博客园
参考
MySQL命令行导入导出工具--mysqldump命令详解 windows下mysql每天定时备份数据库几种方法 - Rukh - 博客园 12 、windows定时备份数据库 - 云起时 。 - 博客园 java程序执行cmd命令出现权限问题场景相应解决方案_小叶要吃丶肉的博客-CSDN博客创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!