前段時間某某刪庫事故付出的慘重代價告訴咱們: 數據備份的必要性是企業數據管理極其重要的一項工做。java
1. Mysql備份與還原命令
備份命令:mysql
mysqldump -h127.0.0.1 -uroot -ppwd test > d:/test.sql #備份數據庫test到 D 盤
還原命令:git
mysql -h127.0.0.1 -uroot -ppwd test< test.sql ---將D備份的數據庫腳本,恢復到數據庫test中
原理就是:經過cmd命令行,調用 mysql安裝路徑下面的bin目錄下面的 msqldump.exe和mysql.exe來完成相應的工做.sql
2. Web項目中的使用
備份代碼:數據庫
@OperLog("備份新增") @PreAuthorize("@ps.hasPerm('backup_add')") @PostMapping("/save") @ResponseBody @Transactional public R save(@RequestBody Backup backup) { String name = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN); backup.setName(name); String filePath = profile + "backup/"; File uploadDir = new File(filePath); if (!uploadDir.exists()) uploadDir.mkdirs(); String cmd = "cmd /c mysqldump -u" + username + " -p" + password + " " + CommonConstants.DB_NAME + " > " + filePath + CommonConstants.DB_NAME + "_" + name + ".sql"; backup.setPath(filePath + CommonConstants.DB_NAME + "_" + name + ".sql"); //執行備份命令 try { StaticLog.info("執行備份命令:" + cmd); RuntimeUtil.exec(cmd); } catch (Exception ex) { return R.error(ex.getMessage()); } backupService.save(backup); return R.ok(); }
還原代碼:app
@OperLog("備份還原") @PreAuthorize("@ps.hasPerm('backup_restore')") @GetMapping("/restore/{id}") @ResponseBody public R restore(@PathVariable("id") Integer id) { Backup backup = backupService.getById(id); if (backup != null) { String cmd = "cmd /c mysql -u" + username + " -p" + password + " " + CommonConstants.DB_NAME + " < " + backup.getPath(); //執行還原命令 try { StaticLog.info("執行還原命令:" + cmd); RuntimeUtil.exec(cmd); } catch (Exception ex) { return R.error(ex.getMessage()); } } return R.ok(); }
3. 環境變量Path中添加mysql安裝路徑
如:計算機-》屬性-》高級系統設置-》環境變量-》系統變量Path-》增長 ;C:\Program Files\MySQL\MySQL Server 5.7\bin;命令行
既然數據庫備份文件都到本地了,固然能夠將sql腳本文件經過電子郵件發到你的郵箱,若是再加個定時備份就更完美了rest