Java에서 MySQL테이블 백업 하는걸 한번 해보겠습니다.

MySQL백업 명령어는 아래와 같습니다.

C:/>mysqldump --user=유저아이디 --password=패스워드 데이터베이스명 테이블명

위에 있는 명령어를 Java에서 실행시켜 테이블 백업하는 샘플소스를 만들어 보겠습니다.

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class JavaMySqlBakup {

 

 private static String ID = "falinux";
 private static String PW = "falinux";
 private static String DB_NAME = "falinux";
 private static String TABLE_NAME = "phonebook";
 private static String FILE_PATH = "C://Temp//";
  
 public static void main(String[] args) {
  
         // 캘린더 인스턴스 취득
        Calendar calendar = Calendar.getInstance();
        // 날짜 취득
        Date date = calendar.getTime();
        // 날짜 형식을 yyyyMMddHHmmss로 날짜 취득
        String dateTime = (new SimpleDateFormat("yyyyMMddHHmmss").format(date));
  
        // 커맨드 명령어
        StringBuffer exeuteCmd = new StringBuffer();
        exeuteCmd.append("mysqldump ");
        exeuteCmd.append("--user=");
        exeuteCmd.append(ID);
        exeuteCmd.append(" --password=");
        exeuteCmd.append(PW);
        exeuteCmd.append(" ");
        exeuteCmd.append(DB_NAME);
        exeuteCmd.append(" ");
        exeuteCmd.append(TABLE_NAME);
  
       // 덤프 패스파일명
      StringBuffer bakupFileNm = new StringBuffer();
      bakupFileNm.append(FILE_PATH);
      bakupFileNm.append(TABLE_NAME);
      bakupFileNm.append("_");
      bakupFileNm.append(dateTime);
      bakupFileNm.append(".sql");
 

     backUpExec(exeuteCmd.toString(), bakupFileNm.toString());
 }
 
    /**
     * 커맨드 실행
     * @param exeCmd
     * @param fileName
     */
    private static void backUpExec(String exeCmd, String fileName) {
     
  // 실행할 명령어 출력
  System.out.println(exeCmd);
  // 덤프 패스 파일명 출력
  System.out.println(fileName);
  
  File backupFile = new File(fileName);
        FileWriter fw = null;
  try {
   fw = new FileWriter(backupFile);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  Process p = null;
  String returnData = "";
  try {
   p = Runtime.getRuntime().exec(exeCmd);
   InputStreamReader inputRead = new InputStreamReader(p.getInputStream());
   BufferedReader br = new BufferedReader(inputRead);
   String line = "";
   while ((line = br.readLine()) != null) {
    fw.write(line + "\n");
   }
            fw.close();
            inputRead.close();
            br.close();
            System.out.println("====================" + returnData);
  } catch (IOException io) {
   io.printStackTrace();
  }
  
    }
}

 

별로 설명할께 없죠. ^^;;

Java로 MySQL 테이블 백업하는 간다한 샘플소스 였습니다.

감사합니다.

 

 

[추가] 2011.12.24

Java에서 MySQL 백업 및 복구하기(window/linux)