Java web 项目中对数据库备份和恢复

先贴出来参考地址:http://www.open-open.com/lib/view/open1331354269624.html

 

直接贴代码:

package com.ly.jxc.util;

import java.io.IOException;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DBRecover {
    /** 访问MySQL数据库服务器所在的url */
     private String serverUrl;
     /** 访问MySQL数据库的用户名 */
     private String username;
     /** 访问MySQL数据库的密码 */
     private String password;
     
      
     public String getServerUrl() {
      return serverUrl;
     }
     
     public void setServerUrl(String serverUrl) {
      this.serverUrl = serverUrl;
     }
     
     public String getUsername() {
      return username;
     }
     
     public void setUsername(String username) {
      this.username = username;
     }
     
     public String getPassword() {
      return password;
     }
     
     public void setPassword(String password) {
      this.password = password;
     }
     
     public DBRecover(String serverUrl,String username, String password) {
      super();
      this.serverUrl=serverUrl;
      this.username = username;
      this.password = password;
     }
     
     public String backup(String backupPath, String dbName) throws IOException {
     
      String backupFile = backupPath+ new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".sql";
     
      String mysql =backupPath+"mysqldump "+"--host="+serverUrl+" --user=" + username + " --password="+ password + " --opt " + dbName + "> "+backupFile ;
     
      System.out.println("备份"+mysql);
      java.lang.Runtime.getRuntime().exec("cmd /c " + mysql);
    

      System.out.println("备份成功!");
     
      return backupFile;
     
     }
     
     public void restore(String restoreFile, String dbName,String path) throws Exception {
      
      String mysql = path+"mysql "+"-h"+serverUrl+" -u" + username + " -p"+ password + " " + dbName + " < " + restoreFile;
       
            System.out.println("+++++++++++++++++++++++++++"+mysql);
            
      java.lang.Runtime.getRuntime().exec("cmd /c " + mysql);
       
      System.out.println("还原成功!");
     }
     
     /**
      * @param args
      */
     public static void main(String[] args) {
     
      String serverUrl="192.168.1.6";
       
      String userName = "root";
     
      String pwd = "root";
     
      DBRecover backup = new DBRecover(serverUrl,userName, pwd);
      
      try {
          backup.backup("", "lyjxc");
//       backup.restore("d:/nationz2010-12-20-14-16-47.sql", "nationz");
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

}

注意点:1.在 backup 和 restore 中的执行中我分别有一些变化,因为需要用到mysql  bin下面的 mysql.exe,mysqldump.exe,由于没有配置mysql 的环境设置,所以我将这两个文件拷贝到我的项目中 exec 执行的时候是执行我项目中的这两个文件。就是代码中mysql前面的两个变量就是代表执行的是我项目中的mysql.exe,mysqldump.exe

    2.拷贝出来的目的还有另一个,由于mysql默认安装路径是在系统盘的program file文件夹下。如果直接用mysql>bin 下面 mysql.exe,mysqldump.exe,备份出来的sql文件为0kb,是由于program file 文件夹名字存在空格,会影响。所以为了保险我将文件放到我的项目中来执行。

    3.还有sql文件名字中貌似还不能有“:”  时分秒的间隔 我想用冒号,结果生产不出来的。

OK 到此结束。我本地测试内部服务器通过。

 

Java web 项目中对数据库备份和恢复

上一篇:[翻译]开源PostgreSQL监控工具OPM


下一篇:T-SQL基础--chp10可编程对象学习笔记