java 定时备份数据库

/**

操作数据库

*/

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

时间: 2024-10-11 13:16:34

java 定时备份数据库的相关文章

SqlServer定时备份数据库和定时杀死数据库死锁解决

PS:Sqlserver 2008 R2,windows 8 64位 1.备份数据库 因为要备份,我们就要用到Sqlserver的代理,默认数据库的代理是不开启的.需要我们手动开启的. 执行备份数据库脚本,现在将脚本公布,其实将这一段代码中需要保存的文件路径和数据库名称替换一下就可以实现备份了.但是还没有达到定时备份的目的 ? 1 2 3 4 5 6 7 8 9 10 11 --自动备份并保存最近5天的SQL数据库作业脚本 宋彪 20130310 DECLARE @filename VARCHA

linux利用crontab执行sqldump 定时备份数据库

linux利用crontab执行sqldump 定时备份数据库 : #!/bin/bash var=`date +%Y%m%d` /usr/local/mysql/bin/mysqldump  --databases core|gzip >/apps/sqldump/bak/core${var}.gz /usr/local/mysql/bin/mysqldump  --databases access_service|gzip > /apps/sqldump/bak/access_servic

linux下mysql定时备份数据库

linux下mysql定时备份数据库 (2010-10-21 12:40:17) 转载▼ 标签: 杂谈   一.用命令实现备份 首页进入mysql的bin目录 1.备份数据#mysqldump -uusername -ppassword discuz > discuz_2010-04-01.sql 这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,如果数据量大会占用很大空间,这时可以利用gzip压缩数据, 命令如下:#mysqldump -uuse

MySql 定时备份数据库

转载:MySql 定时备份数据库 每天零点备份一次数据库,备份文件放在指定目录(如果目录不存在则新建),按月存储: 将下面这段命令存储为一个 *.bat 文件,添加一个Windows任务计划程序(Task scheduler)指向这个文件,每天执行一次即可. rem ******Code Start*********** @echo off C: CD C:\Program Files\MySQL\MySQL Server 5.7\bin set "Y=%date:~10,4%" se

[转]mysql自动定时备份数据库的最佳方法-支持windows系统

网上有很多关于window下Mysql自动备份的方法,可是真的能用的也没有几个,有些说的还非常的复杂,难以操作. 我们都知道mssql本身就自带了计划任务可以用来自动备份,可是mysql咱们要怎么样自动有备份呢? 这个方法是用bat批处理来完成的. 假想环境:MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘的路径)我想备到D盘的db

windows下mysql定时备份数据库几种方法

第一种:新建批处理文件 backup.dat 代码如下: net stop mysqlxcopy "C:/Program Files/MySQL/MySQL Server 5.0/data/piaoyi/*.*" D:/db_backup/%date:~0,10%/ /ynet start mysql 注意:批处理命令中路径里有空格的话,必须在路径上加上双引号!然后使用Windows的"计划任务"定时执行该批处理脚本即可.(例如:每天凌晨3点执行backup.bat

spring boot 定时备份数据库

第一步 :添加mysqldump.exe 进环境变量 第二步  新建一个spring boot 项目,连接数据库 spring.datasource.url=jdbc:mysql://localhost:3308/springbootdb?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=mysql

MSSQLSERVER数据库- 作业调度定时备份数据库

作业调度和备份数据库是常见的行为,掌握这两项技术我觉的非常有必要. 在网上找到这个示例,记录在这里 备份数据库的SQL语句 --自动备份并保存最近5天的SQL数据库作业脚本 DECLARE @filename VARCHAR(255) DECLARE @date DATETIME SELECT @date=GETDATE() SELECT @filename = 'G:\存放位置\数据库名称-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DAT

定时备份数据库到其他服务器

master数据库下创建存储过程 USE [master]GO /****** Object: StoredProcedure [dbo].[bakup_DataBase_Demo] Script Date: 01/07/2015 10:01:09 ******/SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO --Full BackUp --Use Master create proc [dbo].[bakup_DataBase_Demo] asDe