#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();