feat[litemall-admin-api]: 定时任务备份数据库文件
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package org.linlinjava.litemall.admin.job;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.linlinjava.litemall.core.system.SystemConfig;
|
||||
import org.linlinjava.litemall.db.domain.LitemallOrder;
|
||||
import org.linlinjava.litemall.db.domain.LitemallOrderGoods;
|
||||
import org.linlinjava.litemall.db.service.*;
|
||||
import org.linlinjava.litemall.db.util.DbUtil;
|
||||
import org.linlinjava.litemall.db.util.OrderUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据库定时备份任务
|
||||
* 在backup文件夹中备份最近七日的数据库文件
|
||||
*/
|
||||
@Component
|
||||
public class DbJob {
|
||||
private final Log logger = LogFactory.getLog(DbJob.class);
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
||||
/*
|
||||
* 定时时间是每天凌晨5点。
|
||||
*/
|
||||
@Scheduled(cron = "0 0 5 * * ?")
|
||||
public void backup() throws IOException {
|
||||
logger.info("系统开启定时任务数据库备份");
|
||||
|
||||
String user = environment.getProperty("spring.datasource.druid.username");
|
||||
String password = environment.getProperty("spring.datasource.druid.password");
|
||||
String url = environment.getProperty("spring.datasource.druid.url");
|
||||
int index1 = url.indexOf("3306/");
|
||||
int index2 = url.indexOf("?");
|
||||
String db = url.substring(index1+5, index2);
|
||||
|
||||
LocalDate localDate = LocalDate.now();
|
||||
String fileName = localDate.toString();
|
||||
File file = new File("backup", fileName);
|
||||
file.getParentFile().mkdirs();
|
||||
file.createNewFile();
|
||||
|
||||
// 备份今天数据库
|
||||
DbUtil.backup(file, user, password, db);
|
||||
// 删除七天前数据库备份文件
|
||||
LocalDate before = localDate.minusDays(7);
|
||||
File fileBefore = new File("backup", fileName);
|
||||
fileBefore.deleteOnExit();
|
||||
|
||||
logger.info("系统结束定时任务数据库备份");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.linlinjava.litemall.admin;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
|
||||
@WebAppConfiguration
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class DbTest {
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
String user = environment.getProperty("spring.datasource.druid.username");
|
||||
String password = environment.getProperty("spring.datasource.druid.password");
|
||||
String url = environment.getProperty("spring.datasource.druid.url");
|
||||
int index1 = url.indexOf("3306/");
|
||||
int index2 = url.indexOf("?");
|
||||
String db = url.substring(index1+5, index2);
|
||||
System.out.println(user);
|
||||
System.out.println(password);
|
||||
System.out.println(db);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFileCreate() throws IOException {
|
||||
LocalDate localDate = LocalDate.now();
|
||||
String fileName = localDate.toString() + ".sql";
|
||||
System.out.println(fileName);
|
||||
|
||||
File file = new File("backup", fileName);
|
||||
file.getParentFile().mkdirs();
|
||||
file.createNewFile();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFileDelete() throws IOException {
|
||||
LocalDate localDate = LocalDate.now();
|
||||
String fileName = localDate.toString() + ".sql";
|
||||
System.out.println(fileName);
|
||||
|
||||
File file = new File("backup", fileName);
|
||||
file.deleteOnExit();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user