次のコードに注意-Javaはデータベースのバックアップコマンドを呼び出します


今日は日差しが明るくて、ダイエットのいい日です.
次のコードに気をつけてください.
正規のDBAがなく、サーバーが単一で、小型プロジェクトの時、いつもデータベースの需要をバックアップします;
データベースの一般的なバックアップコマンド:
//        1. 
//        mysqldump --opt -d   -u root -p > xxx.sql
//        2. 
//        mysqldump -t   -uroot -p > xxx.sql 
//        3. 
//        mysqldump   -uroot -p > xxx.sql 
//        sql4. 
//        mysqldump -uroot -p -B   --table   > xxx.sql 

基本コード:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import java.io.File;
import java.io.IOException;

/**
 * Created by user on 2015/8/7.
 */
public class DbbackupTask {

    Log loger = LogFactory.getLog(this.getClass());

    @Value("${host_ip}")
    private String HOSTIP;// IP
    @Value("${user_name}")
    private String USERNAME;// 
    @Value("${password}")
    private String PASSWORD;// 
    @Value("${save_path}")
    private String SAVEPATH;// 

    /**
     *  xxx , 0 
     */
    public void dbbackup() {
        loger.debug(" ");
        String[] databaseName = {"common_db", "logistic_db", "operate_db", "order_db"};
        String dates = new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date());
        String dated = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date());
        System.out.println(dates);
        System.out.println(dated);
        for (Object o : databaseName) {
            String savePath=SAVEPATH + "/" + dated;
            String fileName =  o.toString() + dates+".sql";
            System.out.println(SAVEPATH + "/" + dated + "/" + o.toString() + dates+".sql");
            exportDatabaseTool(HOSTIP, USERNAME, PASSWORD, savePath,fileName, o.toString());
        }
    }


    public void exportDatabaseTool(String hostIP, String userName, String password, String savePath,String fileName, String databaseName) {
        File saveFile = new File(savePath);
        if (!saveFile.exists()) {//  
            saveFile.mkdirs();//  
        }
        if (!savePath.endsWith(File.separator)) {
            savePath = savePath + File.separator;
        }
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("mysqldump")/*.append(" --opt")*/.append(" -h").append(hostIP);
        stringBuilder.append(" --user=").append(userName).append(" --password=").append(password).append(" --lock-all-tables=true");
        stringBuilder.append(" --result-file=").append(savePath+fileName).append(" --default-character-set=utf8 ").append(databaseName);
        try {
            Process process = Runtime.getRuntime().exec(stringBuilder.toString());
            if (process.waitFor() == 0) {// 0  。
                loger.info(" ");
            }
        } catch (IOException e) {
            loger.info(" ");
            e.printStackTrace();
        } catch (InterruptedException e) {
            loger.info(" ");
            e.printStackTrace();
        }
    }

}

タイミングタスクquartzを追加します.
学生たちはjava呼び出しの名前を学び、tomcatを再起動することができます.