【问题标题】:How do I create a mysql dump file in kubernetes pod with java如何使用 java 在 kubernetes pod 中创建 mysql 转储文件
【发布时间】:2021-02-21 05:27:42
【问题描述】:

我想使用 java 从 kubernetes pod 中的 mysql 数据库创建转储文件。 我用 kubernetes-java-client 库尝试了以下代码:

Process proc = exec.exec(ns, podName, new String[] { "mysqldump", "-u", "root", "-padmin", "wordpress", ">", "/root/wordpress.sql" },true);
proc.waitFor();

但这不会在 pod 内的请求目录中创建转储文件。 我还尝试运行 kubectl exec 并创建转储文件:

Runtime run = Runtime.getRuntime();
Process pr;
pr=run.exec("kubectl exec "+podName+" -n"+" "+ns +" -- mysqldump -u root -padmin wordpress > /root/wordpress.sql");
pr.waitFor();
BufferedReader errinput = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
String line;
   if ((line = errinput.readLine()) != null)
                System.out.println(line);

此代码的结果应该在我的主机中的 /root/wordpress.zip 中创建转储文件,而不是在 pod 中,但这也不会创建它。

我在恢复转储文件时也遇到了完全相同的问题。

【问题讨论】:

    标签: java mysql kubernetes


    【解决方案1】:

    我刚刚想出了一个解决方案,我在容器内创建了一个包含以下内容的脚本:

    mysqldump -u root -padmin wordpress > /root/wordpress.sql
    

    然后我在这个脚本上设置权限 777:

    chmod 777 /root/mysql.sh
    

    然后我在我的代码中运行这个脚本:

    Process proc2 = exec.exec(ns, podName , new String [] {"sh", "/root/mysql.sh"} , true);
    proc2.waitFor();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 2018-08-17
      • 2021-12-24
      • 2021-10-28
      • 1970-01-01
      • 2015-10-31
      • 2019-09-26
      相关资源
      最近更新 更多