我有一个带有MySQL数据库的 struts 2(jsp)Web应用程序。
是否可以从jsp / java页面进行数据库备份?
是否可以以相同的方式恢复?
请给我一些教程或提示..
我的实际需要是授予管理员访问权限使用gui本身恢复并恢复它,而无需从服务器访问MySQL 。
提前致谢..
答案 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界面进行备份。
show tables
等获取数据库,表格,视图等列表。show create table
select * from table_name
当然,您可能会遗漏某些内容(您是否记得触发器,存储过程,用户定义函数,......?)。即使你今天没有遗漏任何东西,你也可能会在明天出现新的MySQL版本时错过一些新的东西。
mysqldump
应该是首选,因为MySQL作者负责记住添加新内容以备份它。你可以打电话给它;它的输出(默认情况下)是SQL。
恢复备份非常简单;只是一个接一个地运行SQL语句。