1 public ResultData backupDatabase(Integer type) {
2 // 构建备份sql的文件名
3 String sqlFileName = "test" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".sql";
4 PrintWriter printWriter = null;
5 BufferedReader bufferedReader = null;
6
7 try {
8 // 查询所需备份的表(备份的具体哪些表由数据库配置)
9 List<SwBackUpTable> backUpTableList = dataManagerDao.getBackupTables();
10 StringBuilder stringBuilder = new StringBuilder("");
11
12 // 所需备份的表的拼接字符串
13 for (SwBackUpTable swBackUpTable : backUpTableList) {
14 stringBuilder.append(" ").append(swBackUpTable.getTableName());
15 }
16 String backupTables = stringBuilder.toString();
17
18 // 构建备份sql文件路径
19 File savePath = new File(backupSqlPath);
20 if (!savePath.exists()) {
21 // 创建文件夹
22 savePath.mkdirs();
23 }
24 String sqlPath = backupSqlPath + "/" + sqlFileName;
25
26 //导出指定数据库指定表的结构和数据
27 String command = mysqlPath + backupTables;
28 System.out.println("mysql执行指令:" + command);
29 Process process = Runtime.getRuntime().exec(command);
30
31 printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(sqlPath), "utf8"));
32 InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");
33 bufferedReader = new BufferedReader(inputStreamReader);
34
35 String line;
36 while ((line = bufferedReader.readLine()) != null) {
37 printWriter.println(line);
38 }
39 printWriter.flush();
40
41 //0 表示线程正常终止。
42 if (process.waitFor() == 0) {
43 System.out.println("备份数据成功");
44 }
45 System.out.println("数据备份路径==>" + sqlPath);
46
47 // 备份记录
48 BackUpRecords record = new SwBackUpRecords();
49 record.setName(sqlFileName);
50 record.setTables(backupTables);
51 record.setSource(type);
52 record.setPath(sqlPath);
53 record.setBackupTime(new Date());
54 dataManagerDao.insertRecords(record);
55
56 return ResultData.success("备份成功");
57 } catch (Exception e) {
58 e.printStackTrace();
59 return ResultData.success("备份失败");
60 } finally {
61 //关闭流
62 try {
63 if (bufferedReader != null) {
64 bufferedReader.close();
65 }
66 if (printWriter != null) {
67 printWriter.close();
68 }
69 } catch (IOException e) {
70 e.printStackTrace();
71 }
72 }
73 }

以上代码中,type字段为业务所需,无需关注.

  mysqlPath: /user/local/mysql/mysql-8.0/bin/mysqldump -uroot -proot Test

    Test为数据库名

  backupSqlPath:服务器存放备份sql的文件夹路径(如:/home/date/backupSql)

Java-Java调用mysqldump进行数据库备份的更多相关文章

  1. mysqldump 把数据库备份到异地的服务器

    原文:http://www.open-open.com/code/view/1420121471484 这个方法可以把通过mysqldump 把本地数据库备份到远端主机, 中间数据的传输通过 ssh ...

  2. JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

    package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...

  3. windows下Java调用mysql的客户端备份和恢复

    这种东西没啥好聊的,其实就是Java执行dos界面下的命令,不过有些要注意就是了,真实dos下面的命令和java调用的windows系统的接口其实还是有一点不同. /** * @param hostI ...

  4. java 实现mysql数据库备份

    package com.itenp.gen.action; import java.io.BufferedReader; import java.io.FileInputStream; import ...

  5. Java实现MySQL数据库备份(二)

    权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...

  6. Java实现MySQL数据库备份(一)

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...

  7. Java实现mysql数据库备份

    Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...

  8. Java达到MySQL数据库备份(两)

    博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这样的方法比較繁杂.以下介绍还有一种备份MySQL数据库的方法: import java.io ...

  9. Java实现Oracle数据库备份

    今天将很早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的: import java.io.File; import java.io.IOException; /** ...

  10. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

随机推荐

  1. (Crack)SQL转Linq工具的使用——Linqer

    官方下载网站:http://www.sqltolinq.com/ 这是干什么用的         就是Sql语句转Linq  给不熟悉的小白用 再用Linq 转 Lambda      (用到Linq ...

  2. 实现一个简单的在浏览器运行Dotnet编辑器

    之前已经实现过Blazor在线编译了,现在我们 实现一个简单的在浏览器运行的编辑器,并且让他可以编译我们的C#代码, 技术栈: Roslyn 用于编译c#代码 [monaco](microsoft/m ...

  3. mysql15 sql优化-小表驱动大表 IN和EXITS

    转:https://blog.csdn.net/qq_27409289/article/details/85963089 1.IN查询分析 select * from a  where a.id in ...

  4. Visual Studio更改项目文件夹名称

    一.VS打开项目解决方案(按以下顺序操作) PS:如果已经出错,打不开.sln文件,就从第三步开始操作,进入目录更改对应其.csproj文件名称即可 1.选择要更改的项目或类库,右键属性,更改程序集名 ...

  5. Python关键字 asynico

    同步和异步 同步和异步是指程序的执行方式.在同步执行中,程序会按顺序一个接一个地执行任务,直到当前任务完成.而在异步执行中,程序会在等待当前任务完成的同时,执行其他任务. 同步执行意味着程序会阻塞,等 ...

  6. Eureka、Consul、Zookeeper注册中心总结

    组件名 编写语言 CAP 服务健康检查 对外暴露接口 Springcloud集成 Eureka Java AP 可配支持(安全机制) Http √ Consul Go CP 支持 Http/DNS √ ...

  7. ps抠图小技巧

    1.背景橡皮擦工具 适合分离单一背景. 中括号键可以调整大小. 2.调整边缘抠图(也叫选择并遮住) 适合扣毛发丝. 套索工具框选出大概: 点击选择并遮住后出来一个面板: 视图选择叠加,输出设置勾上净化 ...

  8. 2020.11.30【NOIP提高A组】模拟

    总结与反思 很不幸,估分 \(170\),可惜 \(T2\) 暴力 \(50pts\) 全掉了 \(T1\) 结论题,如果想到了,\(O(n)\) 过,只有十几行代码 感觉不好想,不过还是 \(A\) ...

  9. Socket.io + Knex 实现私聊聊天室

    前言 本文只介绍实现的核心代码,目的是记录和分享知识.若感兴趣可以往下看,在文章最后贴上了仓库地址.前端使用 Vite + Vue3:后端使用 Knex + Express. Room 的概念 私密 ...

  10. Postgresql之闪回数据库示例

    一.摘要 在Oracle中,若发生重大的误操作,那么我们可以使用flashback database命令来把数据库整体闪回到过去的误操作的时间点,当然前提是需要打开数据库的闪回功能. 在PG中,能否也 ...