java备份还原mysql数据库_Java备份还原Mysql数据库

///实体类

package com.ews.util;

/**

* 系统备份展示对象

*

* */

public class DataFile {

private String fileName;//备份文件的名称

private String fileDate;//备份文件的日期

private String filePath;//备份文件的地址

private String fileSize;//备份文件的大小

public String getFileSize() {

return fileSize;

}

public void setFileSize(String fileSize) {

this.fileSize = fileSize;

}

public String getFileName() {

return fileName;

}

public void setFileName(String fileName) {

this.fileName = fileName;

}

public String getFileDate() {

return fileDate;

}

public void setFileDate(String fileDate) {

this.fileDate = fileDate;

}

public String getFilePath() {

return filePath;

}

public void setFilePath(String filePath) {

this.filePath = filePath;

}

}

///实现备份代码

package com.ews.action;

import java.io.BufferedOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.sql.Date;

import java.text.DecimalFormat;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.dbcp.BasicDataSource;

import org.apache.commons.fileupload.FileItem;

import org.apache.struts2.ServletActionContext;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.ews.util.DataFile;

public class DataAction extends EwsAction{

private String username;

private String password;

private String host;

private String PORT;

private String dbname;

private List dataFiles = new ArrayList();

private File reductionFile;

public File getReductionFile() {

return reductionFile;

}

public void setReductionFile(File reductionFile) {

this.reductionFile = reductionFile;

}

public List getDataFiles() {

return dataFiles;

}

public void setDataFiles(List dataFiles) {

this.dataFiles = dataFiles;

}

public String getHost() {

return host;

}

public void setHost(String host) {

this.host = host;

}

public String getPORT() {

return PORT;

}

public void setPORT(String pORT) {

PORT = pORT;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getDbname() {

return dbname;

}

public void setDbname(String dbname) {

this.dbname = dbname;

}

/**

* 删除

* */

public String delete(){

String fileName = request.getParameter("fileName");

System.out.println(fileName);

String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/"+fileName;

File file = new File(backPath);

file.delete();

return "delete";

}

/**

* 得到备份文件的List集合

*

* */

public String findList(){

String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/";

File file = new File(backPath);

if (!file.exists())

return "findListData";

File[] file1 = file.listFiles();

for (int i = 0; i < file1.length; i++) {

if(file1[i].getName().equals("ramdit.txt")) continue;

SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

//前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date类型

java.util.Date dt = new Date(file1[i].lastModified());

String sDateTime = sdf.format(dt); //得到精确到秒的表示:08/31/2006 21:08:00

DataFile dataFile = new DataFile();

dataFile.setFileName(file1[i].getName());

dataFile.setFileDate(sDateTime);

String path = request.getContextPath();

String filePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/ewssite/back/"+file1[i].getName();

dataFile.setFilePath(filePath);

DecimalFormat df = new DecimalFormat( ".## ");

dataFile.setFileSize(df.format(file1[i].length()/1024000f));

dataFiles.add(dataFile);

}

return "findListData";

}

/**

* 配置 Mysql bin目录

* */

public void getConfig(){

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

BasicDataSource ba = (BasicDataSource)context.getBean("dataSource");

setUsername(ba.getUsername());

setPassword(ba.getPassword());

String url = ba.getUrl();

url = url.substring(13, url.length());

String[] temp = url.split("/");

String[] temp1 = temp[0].split(":");

setHost(temp1[0]);

setPORT(temp1[1]);

for (int i = 0; i < temp[1].length(); i++) {

String temp2 = temp[1].charAt(i)+"";

if(temp2.equals("?")){

setDbname(temp[1].substring(0,5));

}

}

}

/**

* 备份

* */

public String backup(){

getConfig();

//得到配置文件

try {

Runtime rt = Runtime.getRuntime();

String backPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/"+System.currentTimeMillis()+".sql";

String mysql = "mysqldump -u" + getUsername()+ " -p" + getPassword() + " --default-character-set=utf8 -h"+getHost()+" -P"+getPORT()+" " + getDbname() +" >"+"\""+backPath+"\"";

Process proc = rt.exec("cmd.exe /c "+mysql);// 设置导出编码为utf8。这里必须是utf8

//String backExe = ServletActionContext.getServletContext().getRealPath("/")+"bin/mysqldump.exe";

//String mysql = getDbname()+ " -u" + getUsername()+ " -p" + getPassword() + " --default-character-set=utf8 -h"+getHost()+" -P"+getPORT()+" >"+"\""+backPath+"\"";

int tag = proc.waitFor();// 等待进程终止

} catch (Exception e) {

e.printStackTrace();

}

return "backup";

}

/**

* 还原

* */

public String load(){

String sqlPath="";

if(request.getParameter("selectName")!=null)

sqlPath = request.getParameter("selectName");

if(reductionFile!=null){

String name = upload(reductionFile);

sqlPath = ServletActionContext.getServletContext().getRealPath("/")+"ewssite/back/" + name;

}

// System.out.println(sqlPath);

if(sqlPath.substring(sqlPath.lastIndexOf(".")+1).equals("sql")){

getConfig();

setHost("127.0.0.1");

setUsername("root");

setPassword("root");

setDbname("test");

//得到配置文件

try {

Runtime rt = Runtime.getRuntime();

String createDb = "mysqladmin -u" + getUsername()+ " -p" + getPassword() + " create "+getDbname();

String mysql = "mysql -u" + getUsername()+ " -p" + getPassword() + " "+getDbname()+"

f68f2add0b68e4f9810432fce46917b7.png

相关文章

相关视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学pyqt5之前需要学python吗_快速学习pyqt5(1)--入门

学习于&#xff1a;PyQt5图形界面编程 想要系统学习的同学建议可以去这个专栏好好学习&#xff0c;没有任何语言基础和计算机基础的也建议直接去看那个专栏。我这里是有java基础了&#xff0c;所以就不重复&#xff0c;针对快速学习使用。学习这个的目的是完成学校的SIT项目&am…

reboot mysql fail_mysql 5.7.18,在系统重启后,为什么无法启动?

度娘也不给力&#xff0c;只好自己研究了。先把结论写出来吧。把pid文件换个位置&#xff0c;就好了。问题是&#xff0c; mysqld.servce的文件是从mysql的安装目录拷贝的&#xff0c;导致没有怀疑pid文件位置的问题。一开始还怀疑是不是自己在一些文件里拼写有误。后来&#x…

mysql 查看锁_别吵吵,分布式锁也是锁

Tomcat是这个系统的核心组成部分&#xff0c; 每当有用户请求过来&#xff0c;Tomcat就会从线程池里找个线程来处理&#xff0c;有的执行登录&#xff0c;有的查看购物车&#xff0c;有的下订单&#xff0c;看着属下们尽心尽职地工作&#xff0c;完成人类的请求&#xff0c;Tom…

php解析js的 arraybuffer_JS的所谓的第七种数据类型Symbol

首先&#xff0c;为什么说叫所谓呢&#xff1f;因为在2007年之前Js给予我们typeof解析数据类型的一共有六种(一直有争议&#xff0c;但是我们暂时就按typeof来算)functionNumberObjectbooleanStringundefined但当我们去 typeof Symbol () 的时候&#xff0c;会惊奇的发现&#…

JAVA MYSQL从数据库中提取图片_java web将图片存到储数据库和从数据库中读取图片...

(Notice&#xff1a;以下所有经验也是我根据网上的经验整理的&#xff0c;如有侵权可以联系我删除&#xff0c;Wx:IT_Ezra&#xff0c;QQ 654303408。 有问题讨论也可联系我&#xff0c;QQ同上。)一、分析一下基本流程从前台页面获取图片&#xff0c;后台接收图片文件转化成数据…

Ubuntu系统如何安装和卸载CUDA和CUDNN

背景 最近在学习PaddlePaddle在各个显卡驱动版本的安装和使用&#xff0c;所以同时也学习如何在Ubuntu安装和卸载CUDA和CUDNN&#xff0c;在学习过程中&#xff0c;顺便记录学习过程。在供大家学习的同时&#xff0c;也在加强自己的记忆。本文章以卸载CUDA 8.0 和 CUDNN 7.05 …

session.merge 缓存不更新_如何保证缓存与数据库双写时的数据一致性?

在做系统优化时&#xff0c;想到了将数据进行分级存储的思路。因为在系统中会存在一些数据&#xff0c;有些数据的实时性要求不高&#xff0c;比如一些配置信息。基本上配置了很久才会变一次。而有一些数据实时性要求非常高&#xff0c;比如订单和流水的数据。所以这里根据数据…

java替换图片中文字_Java 添加、替换、删除Word中的图片

文档中&#xff0c;可以通过图文混排的方式来增加内容的可读性&#xff0c;相比纯文本文档&#xff0c;在内容展现方式上也更具美观性。在给文档添加图片时&#xff0c;可设置图片的文本环绕方式、旋转角度、图片高度/宽度等&#xff1b;另外&#xff0c;也可对文档中已有的图片…

kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?

我们暂且不考虑写磁盘的具体过程&#xff0c;先大致看看下面的图&#xff0c;这代表了 Kafka 的核心架构原理。Kafka 分布式存储架构那么现在问题来了&#xff0c;如果每天产生几十 TB 的数据&#xff0c;难道都写一台机器的磁盘上吗?这明显是不靠谱的啊!所以说&#xff0c;这…

不允许输入特殊字符的正则表达式_JavaScript正则表达式常用技巧

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中&#xff0c;正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正则表达式的掌握程度能粗略地看出程序员的技术底子&#xff…

latex 算法_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络

近期&#xff0c;我们整理和开源了一个基于LaTeX的科技绘图项目&#xff0c;并将其取名为awesome-latex-drawing&#xff08;GitHub网址为&#xff1a;https://github.com/xinychen/awesome-latex-drawing&#xff09;&#xff0c;案例包括贝叶斯网络、图模型、矩阵/张量示意图…

python123动物重量排序_python进阶

面向对象oopclass Student(object):def __init__(self,name,score)self.name nameself.score scoredef print_score(self)print(%s: %s % (self.name,self.score))给对象发消息实际上就是调用对象对应的关联函数&#xff0c;我们称之为对象的方法(Method)。面向对象的程序写出…

mysql中的生日应该是什么类型_MySQL中的定点数类型

上一篇文章我们唠叨了浮点数&#xff0c;知道了浮点数存储小数是不精确的。本篇继续唠叨一下MySQL中的另一种存储小数的方式 —— 定点数。浮点数文章闪现&#xff1a;什么, 0.3 - 0.2 ≠ 0.1 ? 什么鬼定点数类型正因为用浮点数表示小数可能会有不精确的情况&#xff0c;在一些…

python怎么制作图像_python数字图像处理(5):图像的绘制

实际上前面我们就已经用到了图像的绘制&#xff0c;如&#xff1a;io.imshow(img)这一行代码的实质是利用matplotlib包对图片进行绘制&#xff0c;绘制成功后&#xff0c;返回一个matplotlib类型的数据。因此&#xff0c;我们也可以这样写&#xff1a;importmatplotlib.pyplot …

axios代理跨域 cli4_vuecli 3.0之跨域请求代理配置及axios路径配置 莫小龙

vue-cli 3.0之跨域请求代理配置及axios路径配置问题&#xff1a;在前后端分离的跨域请求中&#xff0c;报跨域问题配置&#xff1a;vue.config.js&#xff1a;module.exports {runtimeCompiler: true,publicPath: /, // 设置打包文件相对路径devServer: {// open: process.pla…

string转为char数组_StringBuilder的区别是什么?String是不可变?一点课堂(多岸学院)...

String和StringBuffer、StringBuilder的区别可变性简单的来说&#xff1a;String 类中使用 final 关键字字符数组保存字符串&#xff0c;private final char value[]&#xff0c;所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuild…

python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)

最近IEEE Spectrum 发布了编程语言交互式排行榜&#xff0c;为很多学习代码的朋友们详解各类代码语言的需求和占有率。为学习代码的朋友们能更加重视哪一种编程语言而有一个明确的方向。下面排行榜123网为你公布2017年编程语言排行榜,Python位居榜首(C语言需求最大)。2017年编程…

mysql test数据库_mysql数据库test

Re介绍一下CentOS下MySQL数据库的安装与配置方法MySQL数据库配置的具体步骤&#xff1a;1、编辑MySQL的配置文件&#xff0c;使用vi /etc/my.cnf[rootsample ~]# vi /etc/my.cnf  ← 编辑MySQL的配置文件[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sock# Defau…

mysql 升级 openssl_【1分钟教程】LNMP架构应用实战 Openssl升级操作

由于实际生产环境需求&#xff0c;需要将LNMP环境中的openssl版本升级至目前最新版本openssl-1.1.0c&#xff0c;这玩意升级还真的不是一般的麻烦&#xff0c;由于它与系统各种服务都有相关的联系&#xff0c;比如ssh服务等&#xff0c;因此&#xff0c;升级非常的繁琐,所以今天…

miui秒解bl锁_MIUI12解锁bl篇(原谅我的过失,接上篇文章)

求原谅真心求原谅由于我的疏忽&#xff0c;上期教程不完整&#xff0c;对大家造成不便在这里给大家真诚道歉&#xff01;对不起&#xff01;请收下我的膝盖&#xff01;&#xff01;&#xff01;我的上个教程小米手机MIUI系统降级任意版本通用教程&#xff0c;MIUI12→MIUI9因为…