java数据库自动备份_java自动备份数据库

playframework自带任务调度  http://www.playframework.cn/wiki/Scheduled%20Job

不设置编码会造成中文乱码

package jobs; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.Calendar; import play.Play; import play.jobs.Job; import play.jobs.On; /**  * 自动备份数据库:每天晚上2.00备份一次,日期对应文件名  7天一次全备份,一天一次增量备份  * backup_err.log记录每天自动备份错误日志  * @author wxl  */ @On("0 0 12 * * ?") public class DatabaseBackup extends Job{ @Override public void doJob() throws Exception {    Calendar calendar = Calendar.getInstance();          SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmmss");          String currentTime = dateFormat.format(calendar.getTime());          String command = " mysqldump -h 192.168.1.61 -uroot --default-character-set=gbk -pmysql passionlife ";        //当前周次        String week = calendar.get(Calendar.WEEK_OF_YEAR)+"";        System.out.println("备份开始");        try {              long startTime = System.currentTimeMillis();              Runtime rt = Runtime.getRuntime();              Process child = rt.exec(command);              InputStream in = child.getInputStream();              InputStreamReader xx = new InputStreamReader(in, "gbk");              FileOutputStream fout = new FileOutputStream(new File(Play.applicationPath+"/sqlData/data/"+week+".sql"));              OutputStreamWriter writer = new OutputStreamWriter(fout, "gbk");                dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                writer.write("-- 备份时间 " + 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--备份用时 " + (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(Play.applicationPath+"/sqlData/log/"+currentTime+"backup_err.log"));                  dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");                  currentTime = dateFormat.format(calendar.getTime());                  print.println(currentTime + "  备份失败");                  e.printStackTrace(print);                  print.flush();              } catch (IOException e2) {                } finally {                  if (print != null) {                      print.close();                  }              }          }        }   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值