Commit c07c01a4 authored by Junling Bu's avatar Junling Bu
Browse files

feat[litemall-admin-api]: 定时任务备份数据库文件

parent 3487f5d6
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("系统结束定时任务数据库备份");
}
}
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();
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment