|
@@ -17,112 +17,112 @@ public class SysCronUtil {
|
|
|
* 分库分表定时任务
|
|
|
*/
|
|
|
public static void exec() {
|
|
|
- StaticLog.info("====>开始执行分库分表定时任务");
|
|
|
- // influxdb client配置信息
|
|
|
- InfluxDBProperties properties = SpringUtil.getBean(InfluxDBProperties.class);
|
|
|
- if (properties.getSubType() == 0) {
|
|
|
- StaticLog.info("====>当前方案为不分库分表,退出定时任务");
|
|
|
- return;
|
|
|
- }
|
|
|
- // 昨天
|
|
|
- Date yesterday = DateUtil.yesterday();
|
|
|
- // 开始时间
|
|
|
- Date startTime = DateUtil.beginOfDay(yesterday);
|
|
|
- // 结束时间
|
|
|
- Date endTime = DateUtil.endOfDay(yesterday);
|
|
|
- // 目标表
|
|
|
- String targetMeasurement = properties.getMeasurement();
|
|
|
- // 目标库
|
|
|
- String targetBucket = properties.getBucket() + "_" + DateUtil.year(yesterday);
|
|
|
- if (properties.getSubType() == 2) {
|
|
|
- // 按年分库按月分表
|
|
|
- targetMeasurement = properties.getMeasurement() + "_" + DateUtil.year(yesterday) + "_" + (DateUtil.month(yesterday) + 1);
|
|
|
- }
|
|
|
- InFluxDBService inFluxDBService = SpringUtil.getBean(InFluxDBService.class);
|
|
|
- // 检查bucket是否存在,不存在则创建
|
|
|
- inFluxDBService.checkAndCreateBucket(targetBucket);
|
|
|
- long start = System.currentTimeMillis();
|
|
|
- // 迁移数据
|
|
|
- inFluxDBService.moveMeasurementByTime(startTime, endTime, targetBucket, targetMeasurement);
|
|
|
- StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", targetBucket, targetMeasurement, System.currentTimeMillis() - start);
|
|
|
- start = System.currentTimeMillis();
|
|
|
- // 删除残留数据
|
|
|
- inFluxDBService.deleteMeasurementByTime(startTime, endTime);
|
|
|
- StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - start);
|
|
|
- StaticLog.info("====>完成执行分库分表定时任务");
|
|
|
+// StaticLog.info("====>开始执行分库分表定时任务");
|
|
|
+// // influxdb client配置信息
|
|
|
+// InfluxDBProperties properties = SpringUtil.getBean(InfluxDBProperties.class);
|
|
|
+// if (properties.getSubType() == 0) {
|
|
|
+// StaticLog.info("====>当前方案为不分库分表,退出定时任务");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// // 昨天
|
|
|
+// Date yesterday = DateUtil.yesterday();
|
|
|
+// // 开始时间
|
|
|
+// Date startTime = DateUtil.beginOfDay(yesterday);
|
|
|
+// // 结束时间
|
|
|
+// Date endTime = DateUtil.endOfDay(yesterday);
|
|
|
+// // 目标表
|
|
|
+// String targetMeasurement = properties.getMeasurement();
|
|
|
+// // 目标库
|
|
|
+// String targetBucket = properties.getBucket() + "_" + DateUtil.year(yesterday);
|
|
|
+// if (properties.getSubType() == 2) {
|
|
|
+// // 按年分库按月分表
|
|
|
+// targetMeasurement = properties.getMeasurement() + "_" + DateUtil.year(yesterday) + "_" + (DateUtil.month(yesterday) + 1);
|
|
|
+// }
|
|
|
+// InFluxDBService inFluxDBService = SpringUtil.getBean(InFluxDBService.class);
|
|
|
+// // 检查bucket是否存在,不存在则创建
|
|
|
+// inFluxDBService.checkAndCreateBucket(targetBucket);
|
|
|
+// long start = System.currentTimeMillis();
|
|
|
+// // 迁移数据
|
|
|
+// inFluxDBService.moveMeasurementByTime(startTime, endTime, targetBucket, targetMeasurement);
|
|
|
+// StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", targetBucket, targetMeasurement, System.currentTimeMillis() - start);
|
|
|
+// start = System.currentTimeMillis();
|
|
|
+// // 删除残留数据
|
|
|
+// inFluxDBService.deleteMeasurementByTime(startTime, endTime);
|
|
|
+// StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - start);
|
|
|
+// StaticLog.info("====>完成执行分库分表定时任务");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 初始化执行分库分表
|
|
|
*/
|
|
|
public static void init() {
|
|
|
- StaticLog.info("====>开始执行分库分表初始化任务");
|
|
|
- // influxdb client配置信息
|
|
|
- InfluxDBProperties properties = SpringUtil.getBean(InfluxDBProperties.class);
|
|
|
- if (properties.getSubType() == 0) {
|
|
|
- StaticLog.info("====>当前方案为不分库分表,退出初始化任务");
|
|
|
- return;
|
|
|
- }
|
|
|
- if (DateUtil.today().equals(properties.getStartTime())) {
|
|
|
- StaticLog.info("====>当前时间:{}不需要执行初始化任务,退出初始化任务", DateUtil.today());
|
|
|
- return;
|
|
|
- }
|
|
|
- InFluxDBService inFluxDBService = SpringUtil.getBean(InFluxDBService.class);
|
|
|
- Date startTime = DateUtil.parse(properties.getStartTime());
|
|
|
- Date endTime = DateUtil.date();
|
|
|
- // 检查是否有为迁移历史数据
|
|
|
- Integer count = inFluxDBService.getMeasurementCountByTime(startTime, endTime);
|
|
|
- if (count == 0) {
|
|
|
- StaticLog.info("====>当前没有需要迁移数据,退出初始化任务");
|
|
|
- return;
|
|
|
- }
|
|
|
- // 获取已有表逻辑
|
|
|
- List<Map<String, Object>> list = InfluxDBUtil.getMeasurement(startTime, endTime, properties);
|
|
|
- Date start;
|
|
|
- Date end;
|
|
|
- long time = System.currentTimeMillis();
|
|
|
- for (Map<String, Object> params : list) {
|
|
|
- String bucket = Convert.toStr(params.get("bucket"));
|
|
|
- if (!bucket.contains("_")) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- inFluxDBService.checkAndCreateBucket(bucket);
|
|
|
- String[] str = bucket.split("_");
|
|
|
- if (properties.getSubType() == 1) {
|
|
|
- // 只分库
|
|
|
- start = DateUtil.parse(str[1] + "-01-01");
|
|
|
- end = DateUtil.endOfYear(start);
|
|
|
- if (end.after(endTime)) {
|
|
|
- end = DateUtil.endOfDay(DateUtil.yesterday());
|
|
|
- }
|
|
|
- // 迁移数据
|
|
|
- inFluxDBService.moveMeasurementByTime(start, end, bucket, properties.getMeasurement());
|
|
|
- StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", bucket, properties.getMeasurement(), System.currentTimeMillis() - time);
|
|
|
- time = System.currentTimeMillis();
|
|
|
- // 删除残留数据
|
|
|
- inFluxDBService.deleteMeasurementByTime(start, end);
|
|
|
- StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - time);
|
|
|
- time = System.currentTimeMillis();
|
|
|
- continue;
|
|
|
- }
|
|
|
- List<String> measurements = Convert.toList(String.class, params.get("measurement"));
|
|
|
- for (String measurement : measurements) {
|
|
|
- String[] tables = measurement.split("_");
|
|
|
- start = DateUtil.parse(tables[1] + "-" + tables[2] + "-01");
|
|
|
- end = DateUtil.endOfMonth(start);
|
|
|
- if (end.after(endTime)) {
|
|
|
- end = DateUtil.endOfDay(DateUtil.yesterday());
|
|
|
- }
|
|
|
- // 迁移数据
|
|
|
- inFluxDBService.moveMeasurementByTime(start, end, bucket, measurement);
|
|
|
- StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", bucket, measurement, System.currentTimeMillis() - time);
|
|
|
- time = System.currentTimeMillis();
|
|
|
- // 删除残留数据
|
|
|
- inFluxDBService.deleteMeasurementByTime(start, end);
|
|
|
- StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - time);
|
|
|
- time = System.currentTimeMillis();
|
|
|
- }
|
|
|
- }
|
|
|
- StaticLog.info("====>完成执行分库分表初始化任务");
|
|
|
+// StaticLog.info("====>开始执行分库分表初始化任务");
|
|
|
+// // influxdb client配置信息
|
|
|
+// InfluxDBProperties properties = SpringUtil.getBean(InfluxDBProperties.class);
|
|
|
+// if (properties.getSubType() == 0) {
|
|
|
+// StaticLog.info("====>当前方案为不分库分表,退出初始化任务");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// if (DateUtil.today().equals(properties.getStartTime())) {
|
|
|
+// StaticLog.info("====>当前时间:{}不需要执行初始化任务,退出初始化任务", DateUtil.today());
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// InFluxDBService inFluxDBService = SpringUtil.getBean(InFluxDBService.class);
|
|
|
+// Date startTime = DateUtil.parse(properties.getStartTime());
|
|
|
+// Date endTime = DateUtil.date();
|
|
|
+// // 检查是否有为迁移历史数据
|
|
|
+// Integer count = inFluxDBService.getMeasurementCountByTime(startTime, endTime);
|
|
|
+// if (count == 0) {
|
|
|
+// StaticLog.info("====>当前没有需要迁移数据,退出初始化任务");
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// // 获取已有表逻辑
|
|
|
+// List<Map<String, Object>> list = InfluxDBUtil.getMeasurement(startTime, endTime, properties);
|
|
|
+// Date start;
|
|
|
+// Date end;
|
|
|
+// long time = System.currentTimeMillis();
|
|
|
+// for (Map<String, Object> params : list) {
|
|
|
+// String bucket = Convert.toStr(params.get("bucket"));
|
|
|
+// if (!bucket.contains("_")) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// inFluxDBService.checkAndCreateBucket(bucket);
|
|
|
+// String[] str = bucket.split("_");
|
|
|
+// if (properties.getSubType() == 1) {
|
|
|
+// // 只分库
|
|
|
+// start = DateUtil.parse(str[1] + "-01-01");
|
|
|
+// end = DateUtil.endOfYear(start);
|
|
|
+// if (end.after(endTime)) {
|
|
|
+// end = DateUtil.endOfDay(DateUtil.yesterday());
|
|
|
+// }
|
|
|
+// // 迁移数据
|
|
|
+// inFluxDBService.moveMeasurementByTime(start, end, bucket, properties.getMeasurement());
|
|
|
+// StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", bucket, properties.getMeasurement(), System.currentTimeMillis() - time);
|
|
|
+// time = System.currentTimeMillis();
|
|
|
+// // 删除残留数据
|
|
|
+// inFluxDBService.deleteMeasurementByTime(start, end);
|
|
|
+// StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - time);
|
|
|
+// time = System.currentTimeMillis();
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+// List<String> measurements = Convert.toList(String.class, params.get("measurement"));
|
|
|
+// for (String measurement : measurements) {
|
|
|
+// String[] tables = measurement.split("_");
|
|
|
+// start = DateUtil.parse(tables[1] + "-" + tables[2] + "-01");
|
|
|
+// end = DateUtil.endOfMonth(start);
|
|
|
+// if (end.after(endTime)) {
|
|
|
+// end = DateUtil.endOfDay(DateUtil.yesterday());
|
|
|
+// }
|
|
|
+// // 迁移数据
|
|
|
+// inFluxDBService.moveMeasurementByTime(start, end, bucket, measurement);
|
|
|
+// StaticLog.info("====>迁移数据执行完成,目标库:{},目标表:{},耗时:{}ms", bucket, measurement, System.currentTimeMillis() - time);
|
|
|
+// time = System.currentTimeMillis();
|
|
|
+// // 删除残留数据
|
|
|
+// inFluxDBService.deleteMeasurementByTime(start, end);
|
|
|
+// StaticLog.info("====>删除残留数据完成,耗时:{}ms", System.currentTimeMillis() - time);
|
|
|
+// time = System.currentTimeMillis();
|
|
|
+// }
|
|
|
+// }
|
|
|
+// StaticLog.info("====>完成执行分库分表初始化任务");
|
|
|
}
|
|
|
}
|