怎么用Java代码或sql对Mysql进行定时备份数据库 ,Java代码 或用SQL语句实现的都可以

解决方案 »

  1.   

    在java代码中调用msyql命令行,用Process调用
    例如:Process process = null;
    process = Runtime.getRuntime().exec("sql语句");
                   
      

  2.   

    http://www.niutian365.com/blog/article.asp?id=48
      

  3.   

    楼上的我看了对我来说不适用,系统要定时对数据库进行备份 Java代码怎么调或者SQL怎么写
      

  4.   

    考虑使用mysql 5.1的事件调度器,可以定时触发事件 。
    自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。
    事件调度器有时也可称为临时触发器(temporal triggers),因为事件调度器是基于特定时间周期触发来执行某些任务,而触发器(Triggers)是基于某个表所产生的事件触发的,区别也就在这里。
    在使用这个功能之前必须确保event_scheduler已开启,可执行
    SET GLOBAL event_scheduler = 1; ---或我们可以在配置my.ini文件 中加上 event_scheduler = 1或
    SET GLOBAL event_scheduler = ON;来开启,也可以直接在启动命令加上“–event_scheduler=1”,例如:
    mysqld ... --event_scheduler=1要查看当前是否已开启事件调度器,可执行如下SQL:
    SHOW VARIABLES LIKE 'event_scheduler';或
    SELECT @@event_scheduler;或
    SHOW PROCESSLIST; 
      

  5.   

    备份你可以用 mysqldump 工具。
    定时,你可以使用 windows的计划任务或者linux/unix的crontabhttp://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#disaster-prevention
    你可以参考一下官方手册中的例子和说明。
    5.9. 备份与恢复
    5.9.1. 数据库备份
    5.9.2. 示例用备份与恢复策略
    5.9.3. 自动恢复
    5.9.4. 表维护和崩溃恢复
    5.9.5. myisamchk:MyISAM表维护实用工具
    5.9.6. 建立表维护计划
    5.9.7. 获取关于表的信息
      

  6.   

    // 读取属性值  public static Properties getPprVue(String properName) { 
                                //properName 是什么   哪里来的 
      InputStream inputStream = mysql_util.class.getClassLoader
                 ().getResourceAsStream(properName); //mysql_util哪里来的   Properties p = new Properties();
      try {
       p.load(inputStream);
       inputStream.close();
      } catch (IOException e) {
       e.printStackTrace();
      }
      return p;
     } public String backupMysql() {
      Properties pros = getPprVue("prop.properties");
      // 这里是读取的属性文件,也可以直接使用
      String username = pros.getProperty("username");
      String password = pros.getProperty("password");         
      // 得到MYSQL的用户名密码后调用 mysql 的 cmd:
      String mysqlpaths = pros.getProperty("mysqlpath");
      String databaseName = pros.getProperty("databaseName");
      String address = pros.getProperty("address");
      String sqlpath = pros.getProperty("sql");
      File backupath = new File(sqlpath);
      if (!backupath.exists()) {
       backupath.mkdir();
      }
      StringBuffer sb = new StringBuffer();
      sb.append(mysqlpaths);
      sb.append("mysqldump ");
      sb.append("--opt ");
      sb.append("-h ");
      sb.append(address);
      sb.append(" ");
      sb.append("--user=");
      sb.append(username);
      sb.append(" ");
      sb.append("--password=");
      sb.append(password);
      sb.append(" ");
      sb.append("--lock-all-tables=true ");
      sb.append("--result-file=");
      sb.append(sqlpath);
      sb.append(sql);
      sb.append(" ");
      sb.append("--default-character-set=utf8 ");
      sb.append(databaseName);
      Runtime cmd = Runtime.getRuntime();
      try {
       Process p = cmd.exec(sb.toString());
      } catch (IOException e) {
       e.printStackTrace();
      }
    return null;
    }大虾给我解释下大部分的代码都是干什么用的 谢谢
      

  7.   

    System.out.println(sb.toString());就知道了,就是执行这条数据库备份命令。
      

  8.   

    java备份MYSQL代码如下:
    定义一个方法:
    public void backupDB() {
            str="mysqldump -u root -p123456 --opt ab>e:/ab.sql";
            try{
            Runtime rt=Runtime.getRuntime();
            rt.exec("cmd /c"+str);
            System.out.println("备份成功!");
            }catch(IOException e){
            e.printStackTrace();
            System.out.println("备份失败!");
            } }