Как мне создать файл дампа mysql в kubernetes pod с помощью java

#java #mysql #kubernetes

#java #mysql #kubernetes

Вопрос:

Я хочу создать файл дампа из базы данных mysql в kubernetes pod с помощью java. Я попробовал следующий код с библиотекой kubernetes-java-client:

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

но это не создает файл дампа в запрошенном каталоге внутри модуля.
Я также попытался запустить 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, но это тоже не создает его.

У меня точно такая же проблема и с восстановлением файла дампа.

Ответ №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();