一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Springboot 實現數據庫備份還原的方法

Springboot 實現數據庫備份還原的方法

2020-09-21 14:09Maolic Java教程

這篇文章主要介紹了Springboot 實現數據庫備份還原的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

  之前對電腦重裝了一下,結果IDEA的項目目錄沒有備份,導致有幾個平時會拿來參考的項目都丟失了,尤其有一個自己寫的Springboot項目當初沒有備份,這次是徹底無緣再見了,有的東西可以對外(開源)的還是放在博客園這些地方記錄一下比較不錯,偶爾再遇到這樣的問題Ctrl+C&Ctrl+V即可解決了。

  這回記錄一下Springboot實現對數據庫進行一個備份和通過備份數據對數據庫進行恢復。當然不限于Springboot,對數據庫備份還原中的代碼,Java 相關的都可以使用。

備份數據庫

  備份通過命令行對數據庫導出到指定目錄即可。我這里是一個Get請求,頁面需要展示備份文件名稱、大小和備份時間,代碼中使用的log是Slf4j,最終界面效果如圖:

Springboot 實現數據庫備份還原的方法

  代碼對我的原代碼有所改動,關于備份文件的存放目錄,我配置在了application.properties配置文件中,通過一個配置類ProjectUrlConfig去獲取,代碼中的projectUrlConfig.getBackPath()即為文件目錄,與fileName拼接成完整的路徑。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 備份數據庫 */
 @GetMapping("backupSQL")
 public ModelAndView backupSQL(Map<String, Object> map){
   String fileName = "backup_" + new Date().getTime() + ".sql";
   String cmd = "mysqldump -uroot -p123456 dbName > " + projectUrlConfig.getBackPath() + fileName; //-u后的root為mysql數據庫用戶名,-p后接的123456為該用戶密碼,注意不要有空格;dbName填寫需要備份數據的數據庫名稱,大于號后接生成文件路徑
   try {
     Runtime.getRuntime().exec(cmd);
   }catch (Exception e){
     log.error("【備份數據庫】失敗:{}", e.getMessage());
     map.put("msg", e.getMessage());
     return new ModelAndView("common/error", map);
   }
   log.info("【備份數據庫】成功,SQL文件:{}", fileName);
   map.put("msg","備份數據庫成功");return new ModelAndView("common/success", map);
 }

恢復數據庫

  備份雖然在cmd命令行中使用 “mysql -uroot -p123456 dbName < SQL文件路徑” 可以對數據庫還原,嘗試使用時沒有發現報錯但數據庫并未還原,最后通過OutputStreamWriter 來實現。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@GetMapping("rollback")
 public ModelAndView rollback(@RequestParam("filename") String fileName, Map<String, Object> map){
   String path = projectUrlConfig.getBackPath() + fileName;
   try {
     Runtime runtime = Runtime.getRuntime();
     Process process = runtime.exec("mysql -uroot -p123456 --default-character-set=utf8 dbName");
     OutputStream outputStream = process.getOutputStream();
     FileInputStream fis = new FileInputStream(path);
     InputStreamReader isr = new InputStreamReader(fis, "utf-8");
     BufferedReader br = new BufferedReader(isr);
     String str = null;
     StringBuffer sb = new StringBuffer();
     while ((str = br.readLine()) != null) {
       sb.append(str + "\r\n");
     }
     str = sb.toString();
     OutputStreamWriter writer = new OutputStreamWriter(outputStream,"utf-8");
     writer.write(str);
     writer.flush();
     if(writer!=null){
       writer.close();
     }
     if(br!=null){
       br.close();
     }
     if(isr!=null){
       isr.close();
     }
     if(fis!=null){
       fis.close();
     }
     if(outputStream!=null){
       outputStream.close();
     }
   }catch (Exception e){
     log.error("【還原數據庫】失敗:{}", e.getMessage());
     map.put("msg", e.getMessage());
     return new ModelAndView("common/error", map);
   }
   log.info("【還原數據庫】成功,還原文件:{}", fileName);
   map.put("msg","還原數據庫成功");return new ModelAndView("common/success", map);
 }

  以上即可對數據庫進行備份與恢復,但是也只是適用于較小的數據庫。

  參考文章:https://blog.csdn.net/duli3554197/article/details/89468758

總結

到此這篇關于Springboot 實現數據庫備份還原的文章就介紹到這了,更多相關Springboot 數據庫備份還原內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/shenyuanfeng/p/13698456.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲性爱区| 日韩精品特黄毛片免费看 | 精品国产品在线18年 | 亚洲国产日韩制服在线观看 | 日本国产成人精品视频 | 射西西| 91原创国产 | 韩国三级做爰 | 免费高清www动漫视频播放器 | 欧美s级人做人爱c视频 | 亚洲欧美综合区自拍另类 | 四虎影院4hu | 丝袜性爱 | 香港三级系列在线播放 | www91在线观看| 欧美精品一区二区三区免费播放 | 青青青国产精品国产精品美女 | 国产精品久久久久毛片真精品 | 亚洲免费在线视频 | 亚洲欧美日韩另类精品一区二区三区 | 亚洲性色永久网址 | 热久久最新网址 | 国产首页精品 | 男人视频网站 | 香蕉免费一区二区三区 | 国产真实一区二区三区 | 青青草视频破解版 | 精品国产免费第一区二区三区日韩 | 91久久99热青草国产 | 问一问免费咨询 | 果冻传媒九一制片厂网站 | 国产3344视频在线观看免费 | 国产99页 | 日本国产高清色www视频在线 | 亚洲国产自拍在线 | 99精品观看 | 男人j放进女人的p免费看视频 | 日本精品人妖shemale人妖 | 国产首页精品 | 特级av毛片免费观看 | 亚洲精品无码不卡 |