使用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);
    }
相关推荐
AI大模型4 分钟前
Java程序员转型大模型应用开发:掌握这12步就够了!
java·程序员·llm
青云交6 分钟前
Java 大视界 -- Java 大数据在智能医疗远程健康监测与疾病预防预警中的应用(374)
java·大数据·智能医疗·java 大数据·慢性病管理·远程健康监测·疾病预警模型
hh真是个慢性子10 分钟前
MySQL自动化安装工具-mysqldeploy
运维·数据库·mysql·golang·自动化
大葱白菜21 分钟前
Maven 入门:Java 开发工程师的项目构建利器
java·后端·程序员
大葱白菜21 分钟前
Maven 与单元测试:JavaWeb 项目质量保障的基石
java·后端·程序员
天道佩恩25 分钟前
WebFlux响应式编程基础工程搭建
java·后端·响应式编程
黑暗也有阳光28 分钟前
java 集合中arrayList为什么查询比较快,而插入和删除比较慢
java·后端·面试
青年夏日科技工作者36 分钟前
从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP
sql·mysql·tidb
码luffyliu38 分钟前
MyBatis-Plus:简化你的CRUD
java·mybatis-puls
文哥打酱油38 分钟前
flowable对已经部署的流程进行更新,不产生新版本
java·后端·spring·flowable