Java-Java调用mysqldump进行数据库备份
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进行数据库备份的更多相关文章
- mysqldump 把数据库备份到异地的服务器
原文:http://www.open-open.com/code/view/1420121471484 这个方法可以把通过mysqldump 把本地数据库备份到远端主机, 中间数据的传输通过 ssh ...
- JSP 实现 之 调用java方法实现MySQL数据库备份和恢复
package cn.qm.db; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.IOEx ...
- windows下Java调用mysql的客户端备份和恢复
这种东西没啥好聊的,其实就是Java执行dos界面下的命令,不过有些要注意就是了,真实dos下面的命令和java调用的windows系统的接口其实还是有一点不同. /** * @param hostI ...
- java 实现mysql数据库备份
package com.itenp.gen.action; import java.io.BufferedReader; import java.io.FileInputStream; import ...
- Java实现MySQL数据库备份(二)
权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...
- Java实现MySQL数据库备份(一)
下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...
- Java实现mysql数据库备份
Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...
- Java达到MySQL数据库备份(两)
博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这样的方法比較繁杂.以下介绍还有一种备份MySQL数据库的方法: import java.io ...
- Java实现Oracle数据库备份
今天将很早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的: import java.io.File; import java.io.IOException; /** ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
随机推荐
- Unity - 自定义Log
嗨,崽崽们大家好.实在是不知道写个啥了,最近总是恍惚,今儿偷个懒吧,给大家推荐一个小黑自己写的小型日志工具,在一些小项目中管够使用了. 那有人会问了,Unity不是自带日志么,为什么还要自己做个小工具 ...
- 顶层QWidget弹窗设置背景为透明,透明部分为黑色。
setAttribute(Qt::WA_TranslucentBackground); 设置此属性,解决.
- 浙江某男子对多端应用开发工具HBuilderX在windows下安装的解说
同学,学uni-app好啊,大致上写一套代码能生成这么多个平台的应用,我简单念一下,它们分别是Android应用.IOS应用.Web应用.微信小程序.支付宝小程序.百度小程序.字节跳动小程序.快应用. ...
- Java JDK Proxy和CGLib动态代理示例讲解
简介 代理模式在Java中有很多应用场景,而代理又分静态代码和动态代理.静态代理是编写.编译或加载时织入代码实现,而动态代理则在运行时实现.简单而言,静态代理是在运行前就已经存在,而动态代理则在运行时 ...
- 理论+实践,教你如何使用Nginx实现限流
摘要:Nginx作为一款高性能的Web代理和负载均衡服务器,往往会部署在一些互联网应用比较前置的位置.此时,我们就可以在Nginx上进行设置,对访问的IP地址和并发数进行相应的限制. 本文分享自华为云 ...
- 四、python解释器、环境变量和多版本共存
目录 一.python解释器 1.python发展方向 2.python解释器 1.历史 2.版本 3.下载 4.安装 5.使用 二.环境变量与多版本共存 环境变量设置 多版本共存 三.运行pytho ...
- magic-api数据库存储方案
建表语句 drop table if exists magic_api_file; CREATE TABLE `magic_api_file` ( `id` int(11) NOT NULL AUTO ...
- 《深入理解java虚拟机》第七章读书笔记——虚拟机类加载机制
系列文章目录和关于我 一丶虚拟机类加载机制是什么 java虚拟机将描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可用被虚拟机直接使用的java类型. 二丶类加载时 ...
- appium 在linux安装和使用(持续更新)
appium V1.10 centos7.4 安装 安装步骤 1. 安装node 为了得到npm(node package manager,nodejs的安装包管理工具,可以通过npm来下载appiu ...
- 关于Promise.all()的理解
本篇笔记是抄的别人的,目的只是为了日后有用到时有个参考,原文地址是https://www.jianshu.com/p/7e60fc1be1b2 一.Pomise.all的使用 Promise.all可 ...