mysql - 数据库备份方案 - 数据库备份策略




从jsp页面数据库备份 (2)

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

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

当然,你可能会丢失一些东西(你是否记得触发器,存储过程,用户自定义函数,...?)。 即使你今天没有遗漏任何东西,但是当一个新的MySQL版本出来时,你很可能会失去一些新的东西。

mysqldump应该是首选的,因为MySQL的作者会考虑添加新的东西来备份它。 你可以掏出来叫它; 它的输出(默认)是SQL。

恢复备份相当简单; 只要依次运行SQL语句。

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

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

是否有可能以同样的方式恢复

请给我一些教程或技巧..

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

提前致谢..


如果你正在使用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应该存在,或者你可以提供你选择的其他路径。







backup