Java代码如何备份Mysql数据库及还原mysql数据库呢?
下文笔者讲述java代码备份mysql和还原mysql的方法及示例分享,如下所示
阅读完这篇文章之后,你将掌握“Java备份mysql数据库”、“Java还原mysql数据库”的方法技巧
阅读完这篇文章之后,你将掌握“Java备份mysql数据库”、“Java还原mysql数据库”的方法技巧
借助java运行linux shell命令 使用Runtime.getRuntime运行命令即可达到备份数据库和还原数据库的效果例:编写mysql数据库操作工具类及使用示例
public class Main { public static void main(String[] args) { //备份数据库 BakDb.bakDB(); //获取本地备份的sql文件 list<String> names = Unitls.sqlFileNameByLocal(); //获取最后一个文件名 String name = names.get(names.size()-1); System.out.println(name); //恢复数据库 RestoreDB.restoreDB(name); } } Unitls public class Unitls { //设置sql文件的名字 public static String sqlFileNameByDate(){ Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒"); String dateStr = format.format(date); return dateStr; } //获取本地sql文件的名字 public static List<String> sqlFileNameByLocal(){ String path="d:/"; File file = new File(path); String[] array = file.list(); List<String> list = Arrays.asList(array); List<String> nameList = new ArrayList<>(); //list=list.stream().filter(item->item.endsWith(".sql")).sorted().collect(Collectors.toList()); for (String s : list) { if (s.endsWith("sql")){ nameList.add(s.replace(".sql","")); } } return nameList; } } BakDb备份数据库 public class BakDb { public static void bakDB(){ //设置sql文件的名字 String sqlName = Unitls.sqlFileNameByDate(); //设置参数 String dbIp="127.0.0.1"; String username="root";//用户名 String password="123456";//密码 String dbName="db1";//数据库 String path="d:/"; //备份数据库 Runtime run = Runtime.getRuntime(); try { Process process = run.exec("cmd /c mysqldump -h"+dbIp+" -u"+username+" -p"+password+" --default-character-set=UTF8 --single-transaction "+dbName+" > "+path+sqlName+".sql"); process.waitFor(); //执行完成后进行下一步操作 int i = process.exitValue(); System.out.println(i); if (i==0){ System.out.println("成功"); }else { System.out.println("失败"); //删除刚刚最后备份的文件 } //打印错误流 InputStream errorStream = process.getErrorStream(); InputStreamReader isr = new InputStreamReader(errorStream,"gbk"); BufferedReader br = new BufferedReader(isr); while (br.readLine() != null) { System.out.println(br.readLine()); } process.destroy(); //杀死进程 } catch (Exception e) { e.printStackTrace(); } } } //RestoreDB恢复数据库 public class RestoreDB { public static void restoreDB(String sqlName){ //设置参数 String dbIp="127.0.0.1"; String username="root";//用户名 String password="1234";//密码 String dbName="db1";//数据库 String path="d:/";//本地保存的路径 //恢复数据库 Runtime run = Runtime.getRuntime(); try { Process process = run.exec("cmd /c mysql -h"+dbIp+" -u"+username+" -p"+password+" --default-character-set=utf8 "+dbName+" < "+path+sqlName+".sql"); process.waitFor(); //执行完成后进行下一步操作 int i = process.exitValue(); System.out.println(i); if (i==0){ System.out.println("成功"); }else { System.out.println("失败"); //重新恢复 或联系管理员 } //打印错误 InputStream errorStream = process.getErrorStream(); InputStreamReader isr = new InputStreamReader(errorStream,"gbk"); BufferedReader br = new BufferedReader(isr); while (br.readLine() != null) { System.out.println(br.readLine()); } process.destroy(); //销毁进程 } catch (Exception e) { e.printStackTrace(); } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。