使用Java Runtime执行docker下的mysqldump

Runtime直接使用 docker exec mysql mysqldump -u%s -p%s cblog > %s(%s是需要填充的数据),命令无法执行并且不会报错,需要使用字符串数组加入"sh", "-c",具体代码示例:

java 复制代码
    /**
     * MySQL数据备份
     *
     * @param dataPath 备份文件的保存路径
     * @throws IOException
     */
    private void backupData(String dataPath) throws IOException {
        long start = System.currentTimeMillis();
        String cmd = String.format("docker exec mysql mysqldump -u%s -p%s cblog > %s", dataSourceProperties.getUsername(), dataSourceProperties.getPassword(), dataPath);
        String[] cmds = {"sh", "-c", cmd};
        log.debug("欲执行命令:{}", cmd);
        try (InputStream inputStream = Runtime.getRuntime().exec(cmds).getInputStream();
             InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);) {
            String line = bufferedReader.readLine();
            while (line != null) {
                log.debug(line);
                line = bufferedReader.readLine();
            }
        }
        long end = System.currentTimeMillis();
        log.info("mysql备份命令执行成功,耗时:{}ms", end - start);
    }
相关推荐
盖世英雄酱5813618 小时前
commit 成功为什么数据只更新了部分?
java·数据库·后端
码上淘金19 小时前
在 YAML 中如何将 JSON 对象作为字符串整体赋值?——兼谈 Go Template 中的 fromJson 使用
java·golang·json
刘一说19 小时前
Spring Boot 应用的指标收集与监控体系构建指南
java·spring boot·后端
风无雨20 小时前
windows docker 配置镜像
运维·docker·容器
老友@20 小时前
Java Excel 导出:EasyExcel 使用详解
java·开发语言·excel·easyexcel·excel导出
hyx04121920 小时前
mysql第5次作业---hyx
数据库·mysql
Full Stack Developme20 小时前
java.net.http 包详解
java·http·.net
nsjqj20 小时前
MySQL数据库:表的增删改查 [CRUD](进阶)【一】
数据库·mysql
daidaidaiyu20 小时前
Spring BeanPostProcessor接口
java·spring
weixin_4365250721 小时前
SpringBoot 单体服务集成 Zipkin 实现链路追踪
java·spring boot·后端