mysqldump,文件命名 backup_full_{yyyyMMddHHmmss}.sql,直接落 NAS。/health 直接 DOWN,K8s 自动摘除该 Pod。/rollback?date=20250831&db=trade,内部用 Testcontainers 起临时 MySQL 容器做校验:spring init -d=web,data-jpa,mysql,actuator backup-service
[/span>dependency
[/span>groupIdorg.zeroturnaroundgroupId
[/span>artifactIdzt-execartifactId
[/span>version1.12version
dependency
[/span>dependency
[/span>groupIdcom.aliyun.ossgroupId
[/span>artifactIdaliyun-sdk-ossartifactId
[/span>version3.16.1version
dependencyspring:
datasource:
online:
jdbc-url: jdbc:mysql://db-online:3306/app?useSSL=false
username: app
password: ***
backup:
jdbc-url: jdbc:mysql://db-backup:3306/app?useSSL=false
username: backup
password: ***@Component
@RequiredArgsConstructor
public class FullBackupTask implements CommandLineRunner {
private final MeterRegistry registry;
private final OssClient ossClient;
@Override
public void run(String... args) throws Exception {
String fileName = "backup_full_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".sql";
long start = System.currentTimeMillis();
new ProcessExecutor()
.command("mysqldump", "-h", "db-backup", "-u", "backup", "-p***", "app")
.redirectOutput(new File("/tmp/" + fileName))
.execute();
ossClient.upload(fileName, new File("/tmp/" + fileName));
registry.timer("backup.full").record(System.currentTimeMillis() - start, TimeUnit.MILLISECONDS);
}
}@Configuration
@EnableScheduling
public class ScheduleConfig {
@Scheduled(cron = "0 0 2 * * ?")
public void fullBackup() {
SpringApplication.run(FullBackupTask.class, "--spring.profiles.active=backup");
}
}@RestController
@RequiredArgsConstructor
public class RollbackController {
private final RollbackService rollbackService;
@PostMapping("/rollback")
public String rollback(@RequestParam String date, @RequestParam String db) {
return rollbackService.rollback(date, db);
}
}# 启动备份服务
./mvnw spring-boot:run -Dspring-boot.run.profiles=backup
# 模拟回滚
curl -X POST http://localhost:8080/rollback?date=20250831&db=trade图像备份软件:轻松解决存储焦虑
企业级数据灾备:SpringBoot实现数据库备份体系
老王解密:ftp cute背后的幽默故事
织梦CMS的arclist SQL魔法:让文章列表更听话
DBeaver连接MSSQL的实战指南
朕的SQL今天不想加班——顺序执行这件“小”事
MySQL数据库新手入门指南:轻松搭建数据库
企业级软件备份应用:构建数据生命力的关键
小企业数据备份软件:守护企业命脉的守护神
软件备份:构建企业数据韧性的关键
数据备份:小企业轻松守护信息安全
构建企业数据安全的金钟罩:最佳备份策略解析
WordPress主题企业一号:专业企业网站建设解决方案
动易数据库:企业数据管理的智能引擎
企业级服务器备份解决方案权威评测
企业级大容量文件备份策略
群集备份服务器:企业数据安全的守护者
机房双备份:构建企业数据安全的坚实防线
企业邮件管理员有备份机制吗?