Java?????????mysql??????23:00???????????? public class DatabaseBackup { /** * * @param dbdir mysql????????????????????? * @param dbname ?????????????????? * @param backdir ??????????????? */ public static void backup(String dbdir, String db
Java?????????mysql??????23:00????????????public class DatabaseBackup { /** * * @param dbdir mysql????????????????????? * @param dbname ?????????????????? * @param backdir ??????????????? */ public static void backup(String dbdir, String dbname, String backdir) { Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmmss"); String currentTime = dateFormat.format(calendar.getTime()); try { long startTime = System.currentTimeMillis(); Runtime rt = Runtime.getRuntime(); Process child = rt .exec(dbdir + "/bin/mysqldump --default-character-set=utf8 -uroot -p123456 " + dbname); InputStream in = child.getInputStream(); InputStreamReader xx = new InputStreamReader(in, "utf8"); FileOutputStream fout = new FileOutputStream(new File(backdir, dbname + "_" + currentTime + ".bak")); OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); writer.write("-- Dump by Microsoul at " + dateFormat.format(calendar.getTime()) + "\r\n"); String inStr; BufferedReader br = new BufferedReader(xx); // ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Java???????????????????????? while ((inStr = br.readLine()) != null) { writer.write(inStr); writer.write("\r\n"); } writer.write("\r\n-- Use " + (System.currentTimeMillis() - startTime) + "ms\r\n"); writer.flush(); in.close(); xx.close(); br.close(); writer.close(); fout.close(); } catch (Exception e) { PrintStream print = null; try { print = new PrintStream(new File(backdir, currentTime + "_backup_err.log")); dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss"); currentTime = dateFormat.format(calendar.getTime()); print.println(currentTime + " backup failed."); e.printStackTrace(print); print.flush(); } catch (IOException e2) { } finally { if (print != null) { print.close(); } } } } }
?????????????????????????????
public class Test { public static void main(String[] args) { Calendar twentyOne = Calendar.getInstance(); twentyOne.set(Calendar.HOUR_OF_DAY, 23); twentyOne.set(Calendar.MINUTE, 0); twentyOne.set(Calendar.SECOND, 0); new Timer().schedule(new TimerTask() { @Override public void run() { DatabaseBackup.backup("/usr/local/mysql", "test", "/home/xtiger/db/"); } }, twentyOne.getTime(), 24 * 3600 * 1000); } }
??????????????????????????????????? Timer???????????????