日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

備份數據庫

  備份通過命令行對數據庫導出到指定目錄即可。我這里是一個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 + "rn");
            }            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);
    } 

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

分享到:
標簽:備份 數據庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定