博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 定时备份数据库
阅读量:5908 次
发布时间:2019-06-19

本文共 2067 字,大约阅读时间需要 6 分钟。

hot3.png

/**

     操作数据库

*/

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

转载于:https://my.oschina.net/u/2253208/blog/518613

你可能感兴趣的文章
Android开发:IBinder对象在进程间传递的形式
查看>>
App丛林法则:如何抓住“女人心”
查看>>
springMVC对静态资源访问的处理
查看>>
2015程序员值得收藏的十大主流android button模式
查看>>
centos 6.8 安装LNMP环境(linux+nginx+mysql+php)
查看>>
mysql show processlist命令 详解
查看>>
编译mysql时,到一半的时候报错,c++死掉
查看>>
InteliJ Idea 2017.1 for Mac 版 objc[4163]: Class JavaLaunchHelper is implemented in both XXX提示
查看>>
你所未知的3种 Node.js 代码优化方式
查看>>
作为 .Net 攻城师,所必需掌握的 .Net Profiling 技术
查看>>
NexentaStor5配置说明文档
查看>>
[Maven问题总结]Jetty9的Maven配置——插件服务器
查看>>
rename命令
查看>>
【深入Lua】使用LDoc替代LuaDoc给Lua生成文档
查看>>
android 实现QQ好友列表(扩展listview:ExpandableListView)
查看>>
cacti
查看>>
[转载]Dubbo服务治理
查看>>
架构图
查看>>
linux文件属性、特殊符号、通配符、通配符与正则的区别
查看>>
Linux监控平台介绍, zabbix监控介绍,安装zabbix,忘记Admin密码如何做
查看>>