项目开发接近deadline了,打算把数据库的备份做一下,能够让管理员在网页上直接进行数据库的备份、还原等操作。
备份
备份接口
// 备份
@PreAuthorize("@permission.CheckUser() == 1")
@PostMapping("/backup/{name}")
public ResponseEntity backup(@PathVariable("name") String name,
HttpServletRequest request,
HttpServletResponse response){
backupService.backup(name,request,response);
return new ResponseEntity(HttpStatus.CREATED);
}
这里的name是前端传来的文件名
备份方法
@Override
public ResponseResult backup(String name, HttpServletRequest request, HttpServletResponse response){
log.info("开始进行数据库备份******************************");
Admin admin = adminService.checkAdmin(request,response);
if(admin == null || admin.getAdminId() == null){
log.info("没有登陆");
return ResponseResult.ACCOUNT_NOT_LOGIN();
}
String host = BackupConstants.HOST;
String userName = BackupConstants.USER_NAME;
String password = BackupConstants.PASSWORD;
String database = BackupConstants.DATABASE;
String backupFolderPath = BackupConstants.BACKUP_FOLDER + name + File.separator;
String fileName = name;
log.info("校验成功,开始进行备份");
try {
boolean success = MySqlBackupRestoreUtils.backup(host, userName, password, backupFolderPath, fileName, database);
if(!success) {
log.info("数据备份失败");
return ResponseResult.FAILED("备份失败!");
}
} catch (Exception e) {
System.out.println(e);
}
log.info("备份成功!文件存储在: "+backupFolderPath+fileName);
return ResponseResult