Commit a20571a5 authored by 黎博's avatar 黎博

新增老同步数据库接口

parent e133f871
...@@ -2,6 +2,7 @@ package cn.qg.holmes.controller.effect; ...@@ -2,6 +2,7 @@ package cn.qg.holmes.controller.effect;
import cn.qg.holmes.common.JsonResult; import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.service.effect.DatabaseSyncService; import cn.qg.holmes.service.effect.DatabaseSyncService;
import cn.qg.holmes.utils.JenkinsService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -19,6 +20,9 @@ public class DbSyncController { ...@@ -19,6 +20,9 @@ public class DbSyncController {
@Autowired @Autowired
DatabaseSyncService databaseSyncService; DatabaseSyncService databaseSyncService;
@Autowired
JenkinsService jenkinsService;
@Value("${dbsync.mysql.ip}") @Value("${dbsync.mysql.ip}")
private String ip; private String ip;
...@@ -77,4 +81,24 @@ public class DbSyncController { ...@@ -77,4 +81,24 @@ public class DbSyncController {
tableList.add(0, "all"); tableList.add(0, "all");
return JsonResult.buildSuccessResult(tableList); return JsonResult.buildSuccessResult(tableList);
} }
/**
* 老数据库同步,调用Jenkins job sync_database_schema
* @param dbName 数据库名
* @param host 数据库
* @param port 端口号
* @param replaceDomain 是否替换域名
* @param notDeleteBusinessData 是否删除业务数据
* @param useCache 是否使用两个小时之前的备份
* @return
*/
@PostMapping("/old")
public JsonResult dbSyncOld(String dbName, String host, String port, boolean replaceDomain, boolean notDeleteBusinessData, boolean useCache) {
int buildNum = jenkinsService.buildDbSyncJob(dbName, host, port, replaceDomain, notDeleteBusinessData, useCache);
if (buildNum == 0) {
return JsonResult.buildErrorStateResult("数据库同步失败!", false);
} else {
return JsonResult.buildSuccessResult("开始同步数据库!", true);
}
}
} }
...@@ -5,6 +5,7 @@ import com.offbytwo.jenkins.client.JenkinsHttpClient; ...@@ -5,6 +5,7 @@ import com.offbytwo.jenkins.client.JenkinsHttpClient;
import com.offbytwo.jenkins.model.Build; import com.offbytwo.jenkins.model.Build;
import com.offbytwo.jenkins.model.Job; import com.offbytwo.jenkins.model.Job;
import com.offbytwo.jenkins.model.JobWithDetails; import com.offbytwo.jenkins.model.JobWithDetails;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.IOException; import java.io.IOException;
...@@ -19,6 +20,7 @@ import java.util.Map; ...@@ -19,6 +20,7 @@ import java.util.Map;
* Jenkins 相关操作工具类 * Jenkins 相关操作工具类
* @author libo * @author libo
*/ */
@Slf4j
@Component @Component
public class JenkinsService { public class JenkinsService {
// Jenkins 对象 // Jenkins 对象
...@@ -154,6 +156,27 @@ public class JenkinsService { ...@@ -154,6 +156,27 @@ public class JenkinsService {
} }
} }
public int buildDbSyncJob(String dbName, String host, String port,
boolean replaceDomain, boolean notDeleteBusinessData, boolean useCache) {
Map<String, String> params = new HashMap<>();
params.put("sync_db_name", dbName);
params.put("target_db_host", host);
params.put("target_db_port", port);
params.put("re_replace_ip", String.valueOf(replaceDomain));
params.put("not_delete_business_data", String.valueOf(notDeleteBusinessData));
params.put("use_cache", String.valueOf(useCache));
params.put("domain", "liangkebang.net");
try {
jenkinsServer.getJob("sync_database_schema").build(params);
Build build = jenkinsServer.getJob("sync_database_schema").getLastBuild();
return build.getNumber() + 1;
} catch (Exception e) {
log.info("执行数据库同步脚本失败,host:{}, port: {}, dbName: {}", host, port, dbName);
e.printStackTrace();
return 0;
}
}
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
JenkinsService jenkinsApi = new JenkinsService(); JenkinsService jenkinsApi = new JenkinsService();
// List<Build> buildList = jenkinsApi.getJobBuildList("tke-java", 1, "kdsp"); // List<Build> buildList = jenkinsApi.getJobBuildList("tke-java", 1, "kdsp");
......
Markdown is supported
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