[/span>dependency
[/span>groupIdorg.apache.commonsgroupId
[/span>artifactIdcommons-execartifactId
[/span>version1.3version
dependencybackup:
host: 127.0.0.1
port: 3306
user: root
password: 123456
database: mydb
path: /data/backup@Service
public class BackupService {
@Value("${backup.host}") private String host;
@Value("${backup.user}") private String user;
@Value("${backup.password}") private String pwd;
@Value("${backup.database}") private String db;
@Value("${backup.path}") private String path;
public String backup() throws IOException {
String file = path + "/" + db + "_" + LocalDate.now() + ".sql";
String cmd = String.format("mysqldump -h%s -u%s -p%s %s > %s",
host, user, pwd, db, file);
CommandLine cli = CommandLine.parse(cmd);
DefaultExecutor exec = new DefaultExecutor();
exec.execute(cli);
return "备份成功,文件路径:" + file;
}
}@RestController
@RequestMapping("/db")
@RequiredArgsConstructor
public class BackupController {
private final BackupService backupService;
@PostMapping("/backup")
public String backup() {
try {
return backupService.backup();
} catch (IOException e) {
return "备份失败:" + e.getMessage();
}
}
}mysqldump -V能看到版本)。/data/backup。pom.xml加入Apache Commons Exec,用于安全地执行外部命令:[/span>dependency
[/span>groupIdorg.apache.commonsgroupId
[/span>artifactIdcommons-execartifactId
[/span>version1.3version
dependencyapplication.yml中集中管理数据库与备份路径:backup:
host: 127.0.0.1
port: 3306
user: root
password: 123456
database: testdb
path: /data/backupBackupService.java,负责拼接mysqldump命令并执行:@Service
public class BackupService {
@Value("${backup.host}")
private String host;
@Value("${backup.user}")
private String user;
@Value("${backup.password}")
private String password;
@Value("${backup.database}")
private String database;
@Value("${backup.path}")
private String backupPath;
public String backup() throws IOException {
String date = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); // yyyyMMdd
String fileName = String.format("%s/%s_%s.sql", backupPath, database, date);
String cmd = String.format("mysqldump -h%s -u%s -p%s %s --result-file=%s",
host, user, password, database, fileName);
CommandLine commandLine = CommandLine.parse(cmd);
DefaultExecutor executor = new DefaultExecutor();
executor.execute(commandLine);
return "备份完成,文件:" + fileName;
}
}BackupController.java,通过POST请求触发备份:@RestController
@RequestMapping("/api/db")
@RequiredArgsConstructor
public class BackupController {
private final BackupService backupService;
@PostMapping("/backup")
public Map[/span>String, String backup() {
Map[/span>String, String result = new HashMap[/span>();
try {
String msg = backupService.backup();
result.put("status", "success");
result.put("message", msg);
} catch (Exception e) {
result.put("status", "fail");
result.put("message", e.getMessage());
}
return result;
}
}curl -X POST http://localhost:8080/api/db/backup。/data/backup目录,应生成testdb_20250902.sql(日期以当天为准)。@EnableScheduling,再新建:@Component
@RequiredArgsConstructor
public class BackupTask {
private final BackupService backupService;
@Scheduled(cron = "0 0 2 * * ?")
public void autoBackup() throws IOException {
backupService.backup();
}
}--default-character-set=utf8mb4。/data/backup有读写权限。硬盘保命的秘密武器:选购图像备份软件全攻略
开心哥教你用SpringBoot轻松备份数据库
从ftp cute到CuteFTP:企业级文件传输的极简进化论
王爸爸教你用dedecms arclist sql让网站流量翻三倍
DBeaver连接MSSQL的轻松入门指南
商业逻辑与数据库顺序执行
mysql数据库怎么用、用这个关键词,以“当年明月”幽默的语
王爸爸教你用dedecms arclist sql让网站流量翻三倍
开心分享:多站点内容聚合的WordPress秘籍
WordPress页面跳转小技巧:让网站“跳”得开心
王总教你用FlashFXP:计划任务设置教程
老板开心教你双服务器同步备份信息
MSSQL收费全攻略:如何选最划算套餐
王总分享内网穿透WordPress的开心经历
MySQL密码遗忘怎么办?教你用set命令轻松重置!
1. 《零基础搭建MySQL数据库服务器教程》2. 《手把手教你用MySQL创建数据库服务器》3.
马哥教育:精通MySQL数据库实战技巧
开心消消乐备份文件:安全保存攻略
开心消消乐:备份文件丢失怎么办?