av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:2日期:2023-04-22 10:18:00

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

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

備份數據庫

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

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

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

總結

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 日韩免费在线观看视频 | 中文字幕精品一区 | 久草在线在线精品观看 | 久久精品亚洲 | 亚洲成人一区二区三区 | 九九看片| 日本理论片好看理论片 | 久久国内精品 | 免费观看av | 日本一道本 | 成人精品鲁一区一区二区 | www.99热这里只有精品 | 黄色一级免费 | 欧美日韩在线一区二区 | 99爱国产| 免费看国产一级特黄aaaa大片 | 91中文| 亚洲第1页 | 色呦呦在线 | 高清国产午夜精品久久久久久 | 国产精品国产a | 国产日韩欧美二区 | 国产精品久久久久婷婷二区次 | 精品一区久久 | 亚洲国产精品99久久久久久久久 | 日日摸天天添天天添破 | 福利精品 | 一区二区三区视频免费看 | 网色| 国产精品久久久久久久久久久久久 | 美女黄网 | 毛片在线看片 | 中文字幕欧美日韩一区 | 国产免费一级一级 | 久久成人一区 | 欧美日韩精品区 | 久久精品国产一区老色匹 | 91香蕉视频在线观看 | 中文字幕av网站 | 精品欧美一区二区三区精品久久 | 国产精品久久午夜夜伦鲁鲁 |