JAVA 데이터베이스 백업 실현 (원 격 데이터베이스 지원)
3640 단어 자바 도구 클래스
package com.gaxf.paas.task;
import com.gaxf.paas.utils.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.*;
@Component
public class DatabaseTask {
private static final Logger log = LoggerFactory.getLogger(DatabaseTask.class);
private static final String PORT = ""; //
private static final String HOST_IP = ""; // ip mysqldump
private static final String USERNAME = ""; //
private static final String PASSWORD = ""; //
private static final String SAVE_PATH_WINDOWS = "D:\\database\\"; // windosw
private static final String SAVE_PATH_LINUX = "/data/database/"; // linux
// ======================== ============================================
private static final String JIMI_HYDRANT = "jimi-hydrant";
private static final String PAAS = "paas";
/**
*
*/
@Scheduled(cron = "0 0 3 * * ?")
public void dbBackUpPaas() {
try {
dbBackUp(PAAS);
dbBackUp(JIMI_HYDRANT);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param databaseName
* @return
*/
public static void dbBackUp(String databaseName) throws Exception {
String fileName = databaseName + "_" + + ".sql";
File saveFile = new File(savePath());
if (!saveFile.exists()) {//
saveFile.mkdirs();//
}
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath() + fileName), "utf8"));
Process process = Runtime.getRuntime().exec(getCommand(fileName, databaseName));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf8"));
String line;
while ((line = bufferedReader.readLine()) != null) {
printWriter.println(line);
}
printWriter.flush();
if (process.waitFor() != 0) {
log.info(" !");
}
}
public static String getCommand(String fileName, String databaseName) {
StringBuilder arg = new StringBuilder();
arg.append("mysqldump ");
arg.append(" -h" + HOST_IP);
arg.append(" -P" + PORT);
arg.append(" -u" + USERNAME);
arg.append(" -p" + PASSWORD);
arg.append(" --skip-opt ");
arg.append("--add-drop-database ");
arg.append("--routines ");
arg.append("--triggers ");
arg.append("--compress ");
arg.append("-r");
arg.append(savePath());
arg.append(fileName);
arg.append(" --databases " + databaseName);
log.info(arg.toString());
return arg.toString();
}
/**
* sql
*
* @return
*/
public static String savePath() {
String savePath;
if (isWindows()) {
savePath = SAVE_PATH_WINDOWS;
} else {
savePath = SAVE_PATH_LINUX;
}
return savePath;
}
/**
*
*
* @return
*/
public static boolean isWindows() {
return System.getProperty("os.name").toLowerCase().contains("windows");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 작업 csv 문서 유 니 버 설 도구 클래스텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.