JSP 实现 之 调用java方法实现MySQL数据库备份和恢复

package cn.qm.db;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;  

public class Command {
    /*
    public static void main(String[] args) throws IOException {
        Command com = new Command();
        com.backupDatebase("localhost","root","root", "JXC", "D:/jxc.sql");
    }  

    /**
     * 执行dos命令
     * @param cmd
     * @return
     */
    public String execCmd(String cmd) {
        StringBuffer sb = new StringBuffer("");
        StringBuffer str = new StringBuffer();
        str.append("cmd.exe /c \"").append(cmd).append("\"");
        System.out.println(str);        //打印执行的命令
        Process ls_proc;
        try {
            ls_proc = Runtime.getRuntime().exec(str.toString());
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                        new DataInputStream(ls_proc.getInputStream())));
            String ss = "";
            while((ss = in.readLine()) != null) {
                sb.append(ss).append("\n");
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }   

        return sb.toString();
    }  

    /**
     * 执行mysql数据库备份
     * @param ip
     * @param username
     * @param password
     * @param datebaseName
     * @param filePath
     * @return
     */
    public boolean backupDatebase(String ip, String username, String password,String datebaseName, String filePath) {
        String strCommand = "mysqldump -h "+ip+" -u" + username + " -p" + password + " " + datebaseName + " > " + filePath;
        String result = execCmd(strCommand);
        System.out.println(result);
        return true;
    }  

    /**
     * 根据返回结果验证是否成功
     * @param result
     * @return
     */
    public boolean check(String result) {
        return true;
    }
}  

在JSP页面只要调用这个JAVA类就可以。(文件名只能是.sql)

<%@ page language="java" import="java.util.*,cn.qm.db.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">  

    <title>数据库备份测试</title>  

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  

  </head>  

  <body>
<%
Command com = new Command();
String ip = "localhost";//ip地址
String username = "root";//MySQL数据库的用户名
String password = "root";//MySQL数据库的密码
String database = "JXC";//数据库名字
String url = "D:/jxc.sql";//备份的目的地址
boolean check = com.backupDatebase(ip,username,password,database,url);
if(check){
 %>
 数据库备份成功
 <%} %>
  </body>
</html>  

下面是恢复数据的代码。

package cn.qm.db;
import java.io.*;
import java.lang.*;   

/*
* 还原MySql数据库
* */
public class Recover {
public boolean load(){
    String filepath = "d:\\jxc.sql"; // 备份的路径地址
      //新建数据库test   

      String stmt1 = "mysqladmin -u root -proot create jxctest";   

      String stmt2 = "mysql -u root -proot jxctest < " + filepath;
      String[] cmd = { "cmd", "/c", stmt2 };   

      try {
      Runtime.getRuntime().exec(stmt1);
      Runtime.getRuntime().exec(cmd);
      System.out.println("数据已从 " + filepath + " 导入到数据库中");
      } catch (IOException e) {
      e.printStackTrace();
      }
      return true;
}
}   
<%@ page language="java" import="java.util.*,cn.qm.db.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">  

    <title>数据恢复测试</title>  

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  

  </head>  

  <body>  

<%
Recover com = new Recover();
String url = "D:/jxc.sql";
boolean check = com.load();
if(check){
 %>
 数据库恢复成功
 <%} %>
  </body>
</html> 
时间: 2024-10-13 01:08:20

JSP 实现 之 调用java方法实现MySQL数据库备份和恢复的相关文章

MySQL数据库备份和恢复

目录 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 备份注意要点 还原要点 备份类型: 备份时需要考虑的因素 备份什么 备份工具 冷备份 cp tar mysqldump备份工具 模拟数据库崩溃,最大限度还原数据 mysqldump的分库备份 mysqldump的MyISAM存储引擎相关的备份选项: mysqldump的InnoDB存储引擎相关的备份选项: 生产环境实战备份策略 将误删除了的某个表进行还原 MySQL数据库备份和恢复 备份恢复概述 为什么要备份 灾难恢复:硬件故障.软件

MySQL数据库备份、恢复知识储备

目录 1.备份目的 2.备份类型 3.备份对象 4.备份工具 5.备份的一般操作流程 6.数据恢复的一般操作流程 7.备份工具 1.备份目的 备份的目的是为了数据还原和恢复数据,备份只是一种手段,还原和恢复才是目的.对备份的数据要做定期的恢复测试,已确保备份的可用性. 2.备份类型 备份类型可以从三个维度来说明,一是根据数据库是否需要离线来划分,二是根据备份数据的范围来划分,三是根据备份的是数据文件还是SQL语句文件来划分. 2.1.根据数据库是否需要离线来划分: a).冷备:cold back

Linux下Mysql数据库备份和恢复全攻略

很多用户都有过丢失宝贵数据的经历,随着大量的数据被存入到MySQL数据库中,再加上错误地使用DROP DATABASE命令.系统崩溃或对表结构进行编辑等操作,都可能酿成灾难性的损失.所以对MySQL数据库进行备份,以备在出现意外时及时进行恢复是非常必要的. 一. 使用mysql相关命令进行简单的本地备份     1 mysqlldump命令 mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法.

mysql数据库备份及恢复命令mysqldump,source的用法

还原一个数据库:mysql -h localhost -u root -p123456 www<c:/www.sql 备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:/www2008-2-26.sql //以下是在程序中进行测试 //$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile&qu

mysql数据库备份及恢复

还原一个数据库:mysql -h localhost -u root -p123456 www 备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql 其中WWW为数据库名 //以下是在程序中进行测试 //$command = "mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile";

Java实现MySQL数据库备份(二)

权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MySQL数据库的方法: [java] view plain copy import java.io.File; import java.io.IOException; /** * MySQL数据库备份 * * @author GaoHuanjie */ public class MySQLDatabaseBack

浅谈MySQL数据库备份的几种方法

mysql常见的备份方式有:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件.MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用.Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件.备份 binlog,或者用 

Java实现MySQL数据库备份(一)

下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: [java] view plain copy import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import 

Java实现MySQL数据库备份

下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; /*