zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java 定时备份数据库详解编程语言

2023-06-13 09:20:28 时间

*/

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秒执行一次
      }
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10306.html

cmysql