91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Springboot 如何實現數據庫備份還原

發布時間:2020-11-02 17:11:59 來源:億速云 閱讀:508 作者:Leah 欄目:開發技術

本篇文章為大家展示了Springboot 如何實現數據庫備份還原,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

備份數據庫

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

Springboot 如何實現數據庫備份還原

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

 /* 備份數據庫 */
  @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 來實現。

 @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);
  }

上述內容就是Springboot 如何實現數據庫備份還原,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

禹城市| 车险| 白山市| 贵州省| 宁城县| 福清市| 长岛县| 昌黎县| 寻甸| 察雅县| 报价| 囊谦县| 黄山市| 慈溪市| 宁南县| 铜陵市| 阿勒泰市| 闽侯县| 大姚县| 嵊泗县| 普兰县| 抚顺县| 宝丰县| 科技| 延寿县| 咸丰县| 楚雄市| 陇西县| 叶城县| 游戏| 顺义区| 凤山市| 固原市| 施甸县| 彭州市| 名山县| 汉寿县| 巨野县| 扎兰屯市| 嘉义市| 田林县|