Принимая резервную копию MySql из моего приложения Java - PullRequest
5 голосов
/ 11 июня 2010

Я разрабатываю приложение Java с MySql в качестве базы данных. Я должен периодически выгружать базу данных MySql из своего приложения (скажем, каждый день в 10 часов утра), и я написал пакетный (.bat) файл для выгрузки базы данных. Пакетный файл работает нормально, но проблема в том, что он запрашивает пароль каждый раз во время выполнения.

Есть ли способ вывести базу данных MySql без запроса пароля и периодически получать ее из приложения Java?

Ответы [ 4 ]

2 голосов
/ 11 июня 2010

Вы можете указать пароль в командной строке, как указали другие. Что касается запуска его из Java (хотя пуристы могут возражать), вы можете использовать Runtime.exec (), чтобы просто вызвать команду mysql: http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html.

Если вы делаете это из своего Java-приложения, вы также можете подумать не о том, чтобы делать это периодически. В зависимости от использования вашей базы данных (например, частые чтения, но нечастые записи), вы можете обнаружить, что вы можете создавать дамп только тогда, когда знаете, что база данных была изменена или что-то в этом роде.

Если вы действительно хотите периодически выгружать базу данных, возможно, вам лучше настроить cron-job. Вот предыдущая статья о подходе Windows к cron: Какая версия cron для Windows? .

0 голосов
/ 31 августа 2012

Резервное копирование:

/******************************************************/
//Database Properties
/******************************************************/
String dbName = “dbName”;
String dbUser = “dbUser”;
String dbPass = “dbPass”;

/***********************************************************/
// Execute Shell Command
/***********************************************************/
String executeCmd = “”;
executeCmd = “mysqldump -u “+dbUser+” -p”+dbPass+” “+dbName+” -r backup.sql”;
}
Process runtimeProcess =Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if(processComplete == 0){

out.println(“Backup taken successfully”);

} else {

out.println(“Could not take mysql backup”);

}

Восстановление:

/******************************************************/
//Database Properties
/******************************************************/
String dbName = “dbName”;
String dbUser = “dbUser”;
String dbPass = “dbPass”;

/***********************************************************/
// Execute Shell Command
/***********************************************************/
String executeCmd = “”;

executeCmd = new String[]{“/bin/sh”, “-c”, “mysql -u” + dbUser+ ” -p”+dbPass+” ” + dbName+ ” < backup.sql” };

}
Process runtimeProcess =Runtime.getRuntime().exec(executeCmd);
int processComplete = runtimeProcess.waitFor();
if(processComplete == 0){

out.println(“success”);

} else {

out.println(“restore failure”);

}
0 голосов
/ 11 июня 2010

Вы не скажете, как вы на самом деле выкидываете базу данных, но я предполагаю, что вы используете mysqldump .

Вы можете указать пароль базы данных в командной строке, используя переключатель --password=.... Или, если вы хотите быть более безопасным, используйте пароль в файле опций . См. man mysqldump для получения дополнительной информации.

0 голосов
/ 11 июня 2010

Вам понадобится следующая опция для mysqldump

--password[=password], -p[password]

mysqldump документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...