java实现mysql数据备份

/**
     * @param hostIP       ip地址,可以是本机也可以是远程
     * @param userName     数据库的用户名
     * @param password     数据库的密码
     * @param savePath     备份的路径
     * @param fileName     备份的文件名
     * @param databaseName 需要备份的数据库的名称
     * @return
     */
    public boolean backup(String hostIP, String userName, String password, String savePath, String fileName,
                          String databaseName) {
        File saveFile = new File(savePath);
        if (!saveFile.exists()) {// 如果目录不存在
            saveFile.mkdirs();// 创建文件夹
        }
        String exePath = "mysqldump";
        if (PlatformUtil.isWindows()) {
            exePath = mysqldumpExePath;
        }
        //拼接命令行的命令
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(exePath).append(" --opt").append(" -h").append(hostIP);
        stringBuilder.append(" --user=").append(userName).append(" --password=").append(password)
        /*.append(" --lock-all-tables=true")*/;
        stringBuilder.append(" --result-file=").append(savePath + "/" + fileName).append(" --default-character-set=utf8 ")
                .append(databaseName);
        try {
            //调用外部执行exe文件的javaAPI
            Process process = CMDUtil.execProcess(stringBuilder.toString());
            process.waitFor();
            InputStream errorStream = process.getErrorStream();
            String s = IOUtils.toString(errorStream, "gbk");
            System.out.println(s);
            int value = process.exitValue();
            if (value == 0) {// 0 表示线程正常终止。
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

 

在 windows下,

mysqldumpExePath
表示的是mysqldump.exe的路径,包括文件名。
posted @ 2019-06-12 17:47  护花使者  Views(1519)  Comments(0Edit  收藏  举报