Window系统的mysql数据库定时备份()

  本篇文章为你整理了Window系统的mysql数据库定时备份()的详细内容,包含有 Window系统的mysql数据库定时备份,希望能帮助你了解 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博客

  以上就是Window系统的mysql数据库定时备份()的详细内容,想要了解更多 Window系统的mysql数据库定时备份的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: