亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot 實現(xiàn)數(shù)據庫備份還原的方法

 更新時間:2020年09月21日 08:42:51   作者:Maolic  
這篇文章主要介紹了Springboot 實現(xiàn)數(shù)據庫備份還原的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

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

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

備份數(shù)據庫

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

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

 /* 備份數(shù)據庫 */
  @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數(shù)據庫用戶名,-p后接的123456為該用戶密碼,注意不要有空格;dbName填寫需要備份數(shù)據的數(shù)據庫名稱,大于號后接生成文件路徑
    try {
      Runtime.getRuntime().exec(cmd);
    }catch (Exception e){
      log.error("【備份數(shù)據庫】失?。簕}", e.getMessage());
      map.put("msg", e.getMessage());
      return new ModelAndView("common/error", map);
    }
    log.info("【備份數(shù)據庫】成功,SQL文件:{}", fileName);
    map.put("msg","備份數(shù)據庫成功");return new ModelAndView("common/success", map);
  }

恢復數(shù)據庫

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

 @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("【還原數(shù)據庫】失敗:{}", e.getMessage());
      map.put("msg", e.getMessage());
      return new ModelAndView("common/error", map);
    }
    log.info("【還原數(shù)據庫】成功,還原文件:{}", fileName);
    map.put("msg","還原數(shù)據庫成功");return new ModelAndView("common/success", map);
  }

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

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

總結

到此這篇關于Springboot 實現(xiàn)數(shù)據庫備份還原的文章就介紹到這了,更多相關Springboot 數(shù)據庫備份還原內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java的List集合框架之LinkedList詳細解析

    Java的List集合框架之LinkedList詳細解析

    這篇文章主要介紹了Java的List集合框架之LinkedList詳細解析,LinkedList底層是內部Node類的存儲,prev、next、item值,同時最外層還有first、last節(jié)點,需要的朋友可以參考下
    2023-11-11
  • SpringBoot通過redisTemplate調用lua腳本并打印調試信息到redis log(方法步驟詳解)

    SpringBoot通過redisTemplate調用lua腳本并打印調試信息到redis log(方法步驟詳解)

    這篇文章主要介紹了SpringBoot通過redisTemplate調用lua腳本 并打印調試信息到redis log,本文分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 使用Criteria進行分組求和、排序、模糊查詢的實例

    使用Criteria進行分組求和、排序、模糊查詢的實例

    這篇文章主要介紹了使用Criteria進行分組求和、排序、模糊查詢的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • @Value設置默認值后,獲取不到配置值的原因分析

    @Value設置默認值后,獲取不到配置值的原因分析

    這篇文章主要介紹了@Value設置默認值后,獲取不到配置值的原因,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java 實現(xiàn)將一個string保存到txt文檔中

    java 實現(xiàn)將一個string保存到txt文檔中

    今天小編就為大家分享一篇java 實現(xiàn)將一個string保存到txt文檔中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • springboot常用語法庫的基本語法

    springboot常用語法庫的基本語法

    FreeMarker 是一款?模板引擎: 即一種基于模板和要改變的數(shù)據, 并用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具,這篇文章主要介紹了springboot常用語法庫的基本語法,需要的朋友可以參考下
    2022-12-12
  • 一文帶你學會Java網絡編程

    一文帶你學會Java網絡編程

    網絡編程是指編寫運行在多個設備(計算機)的程序,這些設備都通過網絡連接起來。這篇文章將帶大家深入了解一下Java的網絡編程,需要的可以了解一下
    2022-08-08
  • 關于ThreadLocal對request和response的用法說明

    關于ThreadLocal對request和response的用法說明

    這篇文章主要介紹了關于ThreadLocal對request和response的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于JAVA中的四種JSON解析方式詳解

    基于JAVA中的四種JSON解析方式詳解

    這篇文章主要介紹了基于JAVA中的四種JSON解析方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • jstl之map,list訪問遍歷以及el表達式map取值的實現(xiàn)

    jstl之map,list訪問遍歷以及el表達式map取值的實現(xiàn)

    下面小編就為大家?guī)硪黄猨stl之map,list訪問遍歷以及el表達式map取值的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論