Java Web 实现Mysql 数据库备份与还原
前段时间某某删库事故付出的惨重代价告诉我们: 数据备份的必要性是企业数据管理极其重要的一项工作。
1. Mysql备份与还原命令
备份命令:
mysqldump -h127.0.0.1 -uroot -ppwd test > d:/test.sql #备份数据库test到 D 盘
还原命令:
mysql -h127.0.0.1 -uroot -ppwd test< test.sql ---将D备份的数据库脚本,恢复到数据库test中
原理就是:通过cmd命令行,调用 mysql安装路径下面的bin目录下面的 msqldump.exe和mysql.exe来完成相应的工作.
2. Web项目中的使用
备份代码:
@OperLog("备份新增")
@PreAuthorize("@ps.hasPerm('backup_add')")
@PostMapping("/save")
@ResponseBody
@Transactional
public R save(@RequestBody Backup backup) {
String name = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN);
backup.setName(name);
String filePath = profile + "backup/";
File uploadDir = new File(filePath);
if (!uploadDir.exists())
uploadDir.mkdirs();
String cmd = "cmd /c mysqldump -u" + username + " -p" + password + " " + CommonConstants.DB_NAME + " > "
+ filePath + CommonConstants.DB_NAME + "_" + name + ".sql";
backup.setPath(filePath + CommonConstants.DB_NAME + "_" + name + ".sql");
//执行备份命令
try {
StaticLog.info("执行备份命令:" + cmd);
RuntimeUtil.exec(cmd);
} catch (Exception ex) {
return R.error(ex.getMessage());
}
backupService.save(backup);
return R.ok();
}
还原代码:
@OperLog("备份还原")
@PreAuthorize("@ps.hasPerm('backup_restore')")
@GetMapping("/restore/{id}")
@ResponseBody
public R restore(@PathVariable("id") Integer id) {
Backup backup = backupService.getById(id);
if (backup != null) {
String cmd = "cmd /c mysql -u" + username + " -p" + password + " " + CommonConstants.DB_NAME + " < " + backup.getPath();
//执行还原命令
try {
StaticLog.info("执行还原命令:" + cmd);
RuntimeUtil.exec(cmd);
} catch (Exception ex) {
return R.error(ex.getMessage());
}
}
return R.ok();
}
3. 环境变量Path中添加mysql安装路径
如:计算机-》属性-》高级系统设置-》环境变量-》系统变量Path-》增加 ;C:\Program Files\MySQL\MySQL Server 5.7\bin;
既然数据库备份文件都到本地了,当然可以将sql脚本文件通过电子邮件发到你的邮箱,如果再加个定时备份就更完美了
注:环境变量一定要配置否则无法备份成功,以上代码适用于Windows环境
代码地址:[代码下载]
Java Web 实现Mysql 数据库备份与还原的更多相关文章
- Mysql数据库备份和还原常用的命令
Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...
- [转]MySQL数据库备份和还原的常用命令小结
MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...
- MySQL数据库备份和还原的常用命令
其实很多情况下mysql备份就是采用了这些命令,例如: mysql导入和导出数据 linux自动定时备份web程序和mysql数据库 备份MySQL数据库的命令 mysqldump -hhostnam ...
- JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...
- mysql数据库备份与还原(转)
MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的. 1.Linux下MySQL的备份与还原 1.1 备份 [root@localhost ~]# cd /var/ ...
- mysql数据库-备份与还原实操
目录 备份工具 1 基于 LVM 的快照备份(几乎热备) 2 数据库冷备份和还原 3 mysqldump备份工具 3.1 实战备份策略 3.1.1 全备份 3.1.2 分库分表备份 3.2 mysql ...
- mysql数据库-备份与还原-Percona XtraBackup 2.4备份工具使用
目录 xtrabackup 特点 备份生成的相关文件 xtrabackup 安装 xtrabackup 用法 1 备份 2 预备份 3 还原 4 其他 还原注意事项 xtrabackup实现完全备份及 ...
- java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux
相信很多朋友都经历过数据库出问题的情况,我也同样(见我的上一篇博文:phpmyadmin误删表后的恢复过程(心惊胆跳啊) ).如果数据很大或者很重要,那么恢复起来是相当困难的,所以我们在做一个相对 ...
- mysql数据库备份及还原
数据库备份代码: package com.gd.test; import java.io.BufferedReader; import java.io.FileOutputStream; import ...
随机推荐
- 负载均衡算法WRR介绍
一.负载均衡 负载均衡是一个很大的概念,既有从硬件层面来解决问题的,又有从软件层面解决的,有关负载均衡的介绍,推荐阅读: http://os.51cto.com/art/201108/285359.h ...
- SqlServer修改某个字段的默认值时的操作步骤
sqlserver有时候需要修改一个字段的默认值,却发现修改(update)不了,也删除(delete)不了,排查发现,需要先删除原有的默认值约束,才行:步骤如下1.2.3.若原来这个字段就没有默认值 ...
- python实现图片的ROI(region of interest)和泛洪填充
目录: (一)ROI操作 (1)获取感兴趣区域(2)还原操作 (二)泛洪填充floodFill 正文: (一)ROI操作 感兴趣区(Region of Interest,ROIs) 是图像的一部分,它 ...
- [hdu6581]Vacation
首先发现,最终第0辆车一定被堵在某一辆车前,那么等价于它的初始位置就在(那辆车的位置+中间车的车长)/那辆车的速度,其中最大的那个就是答案因此得出结论:$ans=max((\sum_{j=1}^{i} ...
- [atAGC013F]Two Faced Cards
先对$c_{i}$离散到$[0,n]$上,并令$a_{i},b_{i},d_{i},e_{i}$对应到第一个大于等于他的数 考虑若$a_{n+1}$和$b_{n+1}$也已经确定如何做: 有一个$o( ...
- 手动实现一个vue cli
目录 手动实现一个vue cli 1. 思考准备 2. 我们组织源码将会放在名为src的目录,webpack 打包需要一个入口文件,我们取作 main.js 3. 先预想以下会用到哪些基本依赖,第一个 ...
- Linux下Zabbix5.0 LTS添加自定义监控项
自定义监控项 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建mysql自定义监控项为例,分享如何创建zabbix自定义监控项. ...
- java配置方法
1.新建一个Config文件夹 2.代码 package com.shao.config; import com.shao.pojo.User; import org.springframework. ...
- Java异常与错误
Java错误与异常 三种类型的异常 检查性异常:用户错误或问题引起的异常,这是程序员无法预见的.例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略 运行时异常:运行时异常是 ...
- React-native键盘遮挡输入框问题的解决
2016年10月25日更新: 现在有一个更准确一点的做法是用一个View包裹住TextInput,然后通过该View的onLayout方法获取该输入框的y轴位置,再减去一个适当的高度去处理scroll ...