前言
功能如题。
mysql备份想到了两种方式:
- 一种是通过sql语句进行数据备份
- 一种是通过mysqldump进行备份
其实两种方式都可以,只是第一种比较麻烦而且耗费时间会比较长,第二种相对简单,但是他是通过cmd命令方式执行,不能直接操作
通过mysqldump方式
前端
首先要讲返回的类型改成
option: {
responseType: 'blob'
}
接受函数:
this.buckup().then(res => {
let blob = new Blob([res,option:{type: 'text/plain;charset=utf-8'}]);
let ele = document.CreateElement('dw');
ele.download = 'xxx.sql';
ele.href = URL.createObjectURL(blob);
ele.click()
URL.revokeObjectURL(ele.href)
})
后端
@GetMapping("backup)
public void backup(HttpServletResponse reponse){
ServletOutpotStream outputStream;
try{
String cmdStr = " mysqldump -h 127.0.0.1 -uroot -p123456 database --ser-charset=UTF-8";
Process exec = Runtime.getRuntime.exec(cmdStr);
outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];int i;
while ((i = exec.getInputStream().read(buffer )) != -1){
outputStream .write(buffer,0,i);
}
reponse.setHeader("Content-Disponsition","sttachment; filename=backup.sql");
outputStream.close();
}
}
通过cmd执行,返回执行后的输出流,再输出到前端