使用Java远程备份MySQL数据库

时间:2018-03-12 06:07:50

标签: java mysql

我试图创建通过Java远程备份MySQL数据库的软件。我无法访问任何控制台,但我能够运行MySQL命令和语句。我需要将数据库备份到" .sql"然后可以用来恢复的文件。

如何在没有控制台的情况下备份MySQL?是否可以进行sqldump?

我目前的想法是为每个表执行以下过程:

  1. 使用SHOW TABLES列出要备份的表
  2. 获取表格名称
  3. 使用SHOW COLUMNS FROM tablename;
  4. 获取表架构
  5. 计算总行数
  6. 以1000行的增量从表中选择所有(以跟踪 下载百分比)
  7. 执行此操作时,打开FileOutputStream以写入数据 被收到一个文件。如果存在,它也将放置, 使用模式创建,锁定和插入,如在' .sql'中所示。 文件。
  8. 有更好的方法可以做到这一点,还是我的方法最适合我的情况?我的方法会起作用吗?

3 个答案:

答案 0 :(得分:1)

您可以使用JDBC在数据库中触发纯SQL命令,就像使用mysql命令行界面时一样。这样您就可以完全控制转储的每个步骤,例如显示获取1000s增量时的进度,写入并发日志或报告等。

答案 1 :(得分:0)

你的想法是有道理的,但要实现很多东西(使用JDBC元数据获取表结构,定义自己的备份格式等)。

由于您可以使用JDBC连接到远程MySQL,因此您拥有服务器的主机名/端口/用户名/密码。你能跑吗 String cmd = "mysqldump -h host -P port -u user -p password –database dbname > backup.sql"; Runtime rt = Runtime.getRuntime(); rt.exec(cmd);

确保mysqldump在你的PATH上。

答案 2 :(得分:0)

您可以在JAVA或Shell脚本

中运行以下命令

$ mysqldump -u [uname] -p[pass] db_name > <FILE_PATH>db_backup.sql

这会将您的数据库转储到文件中。