zoukankan      html  css  js  c++  java
  • java 定时备份数据库

    原文:http://www.open-open.com/code/view/1447490829678

    /**
    
         操作数据库
    
    */
    
    public class BackupDb {
         public String backup() throws IOException{
          String user = "root"; //数据库的用户名
          String password = "admin";//数据库的密码 
          String database = "hrtweb";//要备份的数据库名 
          Date date = new Date();
          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
          String filepath = "d:\"+sdf.format(date)+".sql";
          File file = new File("d:\",sdf.format(date)+".sql");
          if(!file.exists()){
           file.createNewFile();  
          }
          String stmt1 = "mysqldump " + database +" -h 127.0.0.1 "+ " -u " + user + " -p" +
          password + " --default-character-set=gbk --result-file=" + filepath;
          try {
            Runtime.getRuntime().exec(stmt1);
            System.out.println("已经保存到 " + filepath + " 中");
          } catch (IOException e) {
           e.printStackTrace();
          }
          return filepath;
         }
        }
    
    /**
    
        创建定时器
    
    */
    
    public class PickTask {
        private Timer timer = new Timer();
         private  TimerTask task = new TimerTask() {
          public void run() {
           Date date = new Date();
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           String beginDate = sdf.format(date);
           String beginTime = beginDate.substring(11, 16);
           System.out.println("开始时间:"+beginDate);
    
           BackupDb bdb = new BackupDb();
              // 设定备份时间
           if (beginTime.equals("17:09")) {
            try {
             bdb.backup(); // 执行文件备份
             String dbName = bdb.backup().toString(); // 取出备份的文件名字
             String path = "d:\";
             int nameNo = dbName.lastIndexOf("\");
             //判断文件是否存在,如果存在,则备份成功,如果不存在则备份不成功需要重新备份
             File file = new File(path, dbName.substring(nameNo + 1,dbName.length()));
             if (file.exists()){
                   System.out.println("备份成功");
    
             }else{
    
                    System.out.println("备份失败,重新备份");
                   //在备份未成功的情况下重新备份
              new PickTask().start(1, 1);
             }
    
            } catch (FileNotFoundException e) {
             System.out.println("can not find the file");
            } catch (IOException e) {
             e.printStackTrace();
            }
           }else{
            System.out.println("时间还不到呢,不要着急哦!");
           }
          }
         };
    
              //start 方法不能少,主要是schedule方法
         public void start(int delay, int internal) {
          timer.schedule(task, delay * 1000, internal * 1000);
         }
    }
    
    
    
    /**
    
        测试类,执行定时备份指令
    
    */
    
    public class TimerUse {
        public static void main(String[] args) {
              PickTask picktask = new PickTask();
              picktask.start(1, 60); // 每60秒执行一次
             }
    }
  • 相关阅读:
    二叉树
    bfs
    E-Gold Coins
    D-We Love MOE Girls
    A
    哈希--查找出现过的数字
    二分查找
    KMP简单应用
    KMP算法(2)
    [JSOI2008]最大数
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7048220.html
Copyright © 2011-2022 走看看