从jsp页面备份数据库

时间:2011-11-23 06:23:58

标签: mysql database jsp struts2 backup

我有一个带有MySQL数据库的 struts 2(jsp)Web应用程序

是否可以从jsp / java页面进行数据库备份?

是否可以以相同的方式恢复

请给我一些教程或提示..

我的实际需要是授予管理员访问权限使用gui本身恢复并恢复它,而无需从服务器访问MySQL

提前致谢..

2 个答案:

答案 0 :(得分:4)

如果您使用的是mySQl,可以执行类似

的操作
   static int BUFFER = 10485760;      

public static String getData(String host, String port,    String user, String password, String db) throws Exception {

Process run = Runtime.getRuntime().exec(
           "C:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump --host="  + host + " --port=" + port + 
           " --user=" + user + " --password=" + password +
           " --compact --databases --add-drop-table --complete-insert --extended-insert " +
           "--skip-comments --skip-triggers "+ db);
InputStream in = run.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuffer temp = new StringBuffer();
int count;
 char[] cbuf = new char[BUFFER];

while ((count = br.read(cbuf, 0, BUFFER)) != -1)
         temp.append(cbuf, 0, count);

 br.close();
 in.close();

 return temp.toString();
}

public static void main(String[] args) {
byte[] data = BackupRestore.getData("localhost", "3306",
    "root", "", "test").getBytes();     
File filedst = new File(path);
FileOutputStream dest = new FileOutputStream(filedst);
dest.write(data);
}

但我相信,除非你没有任何令人信服的/花哨的理由去做更好的用户命令行工具

您可以使用MySQL附带的GUI工具,经过更多测试,更易于使用。

String path="C:/datadump/db_backup.sql"

确保路径C:/datadump应该存在,或者您可以提供您选择的任何其他路径。

答案 1 :(得分:3)

可以这样做,虽然它可能不是一个好主意。 MySQL逻辑备份是SQL,不需要对服务器内部的任何访问。您可以使用记录的SQL界面进行备份。

  • 您可以从information_schema或show tables等获取数据库,表格,视图等列表。
  • 您可以从information_schema或show create table
  • 获取表格定义
  • 您可以使用select * from table_name
  • 获取表格的内容

当然,您可能会遗漏某些内容(您是否记得触发器,存储过程,用户定义函数,......?)。即使你今天没有遗漏任何东西,你也可能会在明天出现新的MySQL版本时错过一些新的东西。

mysqldump应该是首选,因为MySQL作者负责记住添加新内容以备份它。你可以打电话给它;它的输出(默认情况下)是SQL。

恢复备份非常简单;只是一个接一个地运行SQL语句。