我需要使用 Spring 为我的 Web 应用程序安排定期数据库备份。Spring Data 是否为备份提供任何特定支持?我打算使用TaskScheduler 和TaskExecutor。
2 回答
不,没有具体的支持。Spring Data 旨在用于事务性使用,而不是批处理操作。当然,有一种findAll()
方法可以迭代并将结果存储在某处。
Spring Batch 可能是一个更好的选择,因为它专注于长时间运行的繁重批处理过程。但是恕我直言,您的应用程序不是运行备份的好地方。为什么不使用数据库或操作系统支持?它会更快,更可靠。
如果您确实需要从应用程序级别备份数据库,请考虑您的数据库手册,也许有一些简单的命令可以将数据库的内容转储到文件中。例如在h2中,我使用SCRIPT
SQL 命令JdbcTemplate
将数据库转储到任意文件。但我使用这种技术在每次集成测试后重置数据库。我JdbcTemplate
用来最小化开销。这就是为什么 Spring Data 不是这项工作的最佳工具。
MySQL中是有mysqldump
进程的,所以从Java中运行会比较麻烦。
请点击此链接并了解您的问题 Spring 支持它
如果您构建 maven 项目,请将以下依赖项添加到 pom.xml
<dependency>
<groupId>com.smattme</groupId>
<artifactId>mysql-backup4j</artifactId>
<version>1.0.0</version>
</dependency>
如果 gradle spring 项目
将依赖项添加到 build.gradle
编译组:'com.smattme',名称:'mysql-backup4j',版本:'1.0.0'
这篇文章可能有助于理解
https://dzone.com/articles/how-to-backup-mysql-database-programmatically-usin