使用java代码在linux下备份mysql数据库

1.执行下列代码

linux中,下列代码可以备份数据库

mysqldump --user=root --password=123456 --opt my>/root/test.2018.sql;

(其中,my为数据库名,>后为sql文件保存位置)

2.java代码

//数据库的备份

public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath,

String fileName, String databaseName) throws InterruptedException {

// 创建文件保存的路径

File saveFile = new File(savePath);

if (!saveFile.exists()) {// 如果目录不存在

saveFile.mkdirs();// 创建文件夹

}

if (!savePath.endsWith(File.separator)) {

savePath = savePath + File.separator;

}

PrintWriter printWriter = null;

BufferedReader bufferedReader = null;

try {

printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("mysqldump").append(" --opt").append(" -h").append(hostIP);

stringBuilder.append(" --user=").append(userName).append(" --password=").append(password)

.append(" --lock-all-tables=true");

stringBuilder.append(" --result-file=").append(savePath + fileName).append(" --default-character-set=utf8 ")

.append(databaseName);

Process process = Runtime.getRuntime().exec(stringBuilder.toString());

InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");

bufferedReader = new BufferedReader(inputStreamReader);

String line;

while ((line = bufferedReader.readLine()) != null) {

printWriter.println(line);

}

printWriter.flush();

if (process.waitFor() == 0) {// 0 表示线程正常终止。

return true;

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (bufferedReader != null) {

bufferedReader.close();

}

if (printWriter != null) {

printWriter.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

return false;

}



//数据库的恢复

public static void recover(String path) throws IOException {

Runtime runtime = Runtime.getRuntime();

// 恢复到数据库的账户信息

Process process = runtime.exec("mysql -h 192.168.25.129 -u root -p123456 --default-character-set=utf8 qinmei");

OutputStream outputStream = process.getOutputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));

String str = null;

StringBuffer sb = new StringBuffer();

while ((str = br.readLine()) != null) {

sb.append(str + "\r\n");

}

str = sb.toString();

System.out.println(str);

OutputStreamWriter writer = new OutputStreamWriter(outputStream, "utf-8");

writer.write(str);

writer.flush();

outputStream.close();

br.close();

writer.close();

}



//启动备份到另一个数据库,执行该方法进行备份到异地数据库

@RequestMapping("/mysql")

@ResponseBody

public void getEmpById() throws IOException {

// 备份

try {

if (exportDatabaseTool("127.0.0.1", "root", "root", "D:/backupDatabase", "qinmei.sql", "qinmei")) {

System.out.println("数据库成功备份!!!");

} else {

System.out.println("数据库备份失败!!!");

}

} catch (InterruptedException e) {

e.printStackTrace();

}

// 恢复

recover("D:/backupDatabase/qinmei.sql");

}


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • java实现mysql数据库的备份及还原 备份1: import java.io.BufferedReader; ...
    Alex_1799阅读 2,806评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,334评论 0 7
  • 假期到,宅女到,掐指一算我已经一礼拜没出去转转了,成天就在家待着,写作业,看书,看电视,还有就是上QQ。 我决定从...
    清北y阅读 1,319评论 0 0
  • Linux安装 Linux磁盘类型:ext2 wxt3(最先进的) swapwindow磁盘盘文件类型 fat3...
    coder_hong阅读 3,499评论 0 1