Java中怎么备份和还原MySQL数据库

51次阅读
没有评论

共计 2166 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Java 中怎么备份和还原 MySQL 数据库,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

备份

上面的网页提到 mysqldump 命令一共有三种形式,如下:

shell  mysqldump [options] db_name [tbl_name ...]
shell  mysqldump [options] --databases db_name ...
shell  mysqldump [options] --all-databases

该命令有很多的 options,详情可以查看上面的链接,我这里只需要备份一个数据库,命令也比较简单;如果在命令行窗口可以使用如下命令来实现备份:

mysqldump -umysql -pmysql --add-drop-database --skip-lock-tables -B tjfinal   d:/backup.sql

如果不加 –add-drop-database 参数并且用户不是 root 用户,有可能报下面的错误:

mysqldump: Got error: 1044:  Access denied for user  mysql @ localhost  to datab
ase  tjfinal  when using LOCK TABLES

Java 示例代码:

/**
 *  备份数据库
 * @throws Exception
 */
public static void backup () throws Exception { String savePath = BACKUP_DIR +  backup-  + DateTimeTool.getDateByTime() +  .sql 
 String[] execCMD = new String[] { mysqldump ,  -u  + DB_USER,  -p  + DB_PWD, DB_NAME,
  -r  + savePath,  --skip-lock-tables 
 Process process = Runtime.getRuntime().exec(execCMD);
 int processComplete = process.waitFor();
 if (processComplete == 0) {
 System.out.println( 备份成功. 
 } else {
 throw new RuntimeException( 备份数据库失败. 
 }
}

还原

还原数据库需要用到 MySQL 的 source 命令,该命令用来读取一个文件并执行其中的 SQL 语句;如果使用命令行工具,可以登录 MySQL 客户端,然后直接执行 source 命令即可:

MariaDB [tjfinal]  source file_name 
--  或者
MariaDB [tjfinal]  \. file_name

当然如果不登录进客户端也是可以的,这时就需要用到 mysql 客户端命令的 –execute(或者 -e)选项(option),如下:

--execute=statement
--  或者
-e statement

其中 –execute(或 -e)选项表示要登录客户端然后执行 SQL 命令后退出,而该选项的参数 statement 就是要执行的 SQL 命令,关于 mysql 命令选项的说明可以参考这里:http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option_mysql_execute

因此在不登录 MySQL 客户端的情况下可以使用下面的命令还原数据库:

mysql -umysql -pmysql -e source d:/backup.sql
--  或者
mysql -umysql -pmysql --execute= source d:/backup.sql

Java 示例代码:

/**
 *  还原数据库
 * @param sql  要还的 SQL 文件
 * @throws Exception
 */
public static void restore (String sql) throws Exception {
 String targetFile = BACKUP_DIR + sql; // SQL 文件路径
 String[] execCMD = new String[]{mysql , DB_NAME,  -u  + DB_USER,  -p  + DB_PWD,  -e source , targetFile};
 Process process = Runtime.getRuntime().exec(execCMD);
 int processComplete = process.waitFor();
 if (processComplete == 0) {
 System.out.println( 还原成功. 
 } else {
 throw new RuntimeException( 还原数据库失败. 
 }

关于 Java 中怎么备份和还原 MySQL 数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计2166字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)