温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-08-04 15:07:51 来源:亿速云 阅读:107 作者:Leah 栏目:数据库

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

备份

上面的网页提到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数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI