原文: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 备份文件输出路径

之后如果想要定时,有以下两种方法:

  1. Spring Boot项目中加入定时任务去执行bat文件
  2. 使用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定时备份数据库 - 云起时。 - 博客园













参考

Window系统的mysql数据库定时备份的更多相关文章

  1. window自动任务实现数据库定时备份

    原理:利用window定时任务定时cmd加载mytask.bat文件,bat运行php.exe程序编译运行mytask.php文件 ,从而实现了数据库的备份 mytask.bat 内容: D:\php ...

  2. windows下mysql数据库定时备份。

    注意:看本教程先必须会windows自带的"任务计划程序". 首先创建一个bat后缀的文件我的是timerExecutePhp.bat文件 timerExecutePhp.bat ...

  3. Linux下实现MySQL数据库定时备份

    咳~ 咳~ 为了避免数据操作失误.数据丢失.甚至删库跑路,简单做个数据备份吧 1.创建备份目录 # 习惯放在 local 下 cd /usr/local/ # 创建备份目录 mkdir backup ...

  4. Linux系统下MySQL数据库的备份和恢复

    当我们MySQL数据库保存重要数据的时候,备份工作极为重要.本文介绍如何使用mysqldump备份和恢复数据,使用该方法,可以将数据库中的数据备份成一个文本文件,也可将备份好的数据库迁移到另一台的服务 ...

  5. linux篇-linux mysql数据库定时备份

    1在linux上面创建一个文件夹,并且进行备份 cd /home mkdir backup cd backup 2创建一个脚本 Vi imaginebase.sh #!/bin/bash mysqld ...

  6. MySql 数据库定时备份

    1.使用sqldump+任务计划 mysqldump备份成sql文件==============假想环境:MySQL   安装位置:C:\MySQL论坛数据库名称为:bbsMySQL root   密 ...

  7. mysql数据库定时备份

    最近要用到mysql备份,就写了shell脚本用于备份. #!/bin/bash #定义备份的数据库名称 database=*** #定义备份的时间 currTime=$(date +%Y%m%d) ...

  8. Mysql Navicat数据库定时备份,定时删除

    Navicat自带实现数据库定时备份 1.先点击需要备份的数据库,然后点击计划,再点击新建批处理作业 2.然后出现双机可用任务列表,然后在已选择的任务中会出现可用任务 3. 点击保存,弹出对话框,给这 ...

  9. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  10. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

随机推荐

  1. 查询nginx访问日志中访问次数最多的前10个IP地址

    cat log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | awk '{print $0}' | head -n 10

  2. 使用kuboard界面管理k8s集群时使用ConfigMap挂载挂载到pod容器中,映射成一个文件夹

    将 ConfigMap 作为一个数据卷(在挂载时不指定数据卷内子路径,需要指定ConfigMap的子路径)挂载到容器,此时 ConfigMap 将映射成一个文件夹,每一个 KEY 是文件夹下的文件名, ...

  3. jmeter录制登录脚本

    1.添加代理服务器 在非测试元件添加http代理服务器,端口写8888,域写127.0.0.1 在排除模式里填入.*.(js|css|PNG|jpg|ico|png|gif|woff|ttf).* 2 ...

  4. [题解] Atcoder ARC 142 E Pairing Wizards 最小割

    题目 建图很妙,不会. 考虑每一对要求合法的巫师(x,y),他们两个的\(a\)必须都大于\(min(b_x,b_y)\).所以在输入的时候,如果\(a_x\)或者\(a_y\)小于\(min(b_x ...

  5. Python 3.12 目标:还可以更快!

    按照发布计划,Python 3.11.0 将于 2022 年 10 月 24 日发布. 据测试,3.11 相比于 3.10,将会有 10-60% 的性能提升,这个成果主要归功于"Faster ...

  6. 带有pwn环境的Ubuntu22.04快速安装

    pwn环境ubuntu22.04快速安装(有克隆vmk) ubuntu更新到了22.04版本,经过本人测试后非常的好(ma)用(fan),该版本和mac很相像,而且用起来也比较丝滑,只不过配置上稍微有 ...

  7. gradle项目对比maven项目的目录架构以及对gradle wrapper的理解

    转载请注明出处: 1.使用 idea 搭建 gradle项目 注意 type 选择 gradle 以及 language 选择 grooy                       搭建后的项目架构 ...

  8. python2与python区别汇总

    目录 输入与输出 range使用区别 字符编码区别 输入与输出 python2与python3中两个关键字的区别 python2中 input方法需要用户自己提前指定数据类型 写什么类型就是什么类型 ...

  9. 齐博x1 二次开发的灵魂fun函数

    X1最强大之处,体现在灵活,扩展性强,在使用过程中,你会发现灵活之处非常之多. 现在跟大家讲一下,灵魂函数 fun() X1的核心函数文件是 application/common.php 随着模块频道 ...

  10. 10.-ORM-基础字段及选项

    一.ORM-基础字段及选项 任何关于表结构的修改,务必在对应模型类上修改 例如 给 books_book表添加一个info字段 varchar(100) 1.在模型中添加对应的类属性 2.执行数据库迁 ...